31、請撰寫函式void fun(char xx[]),函式的功能是:將字串陣列xx中下標為奇數的字符按其ASCII值從大到小的順序進行排序,
例如:源字串為:abcdefgh,則處理后字串為:ahcfedgb,
#include <stdio.h> #include <string.h> void fun(char xx[]) { } int main() { char xx[81]; printf("Enter a string : "); gets(xx); printf("The original string is : "); puts(xx); fun(xx); printf("The string after modified : "); puts(xx); return 0; }
void fun(char xx[]) { int i,j,k; char ch; i=strlen(xx); for(j=1;j<i-2;j=j+2) for(k=j+2;k<i;k=k+2) if (xx[j]<xx[k]) { ch=xx[j]; xx[j]=xx[k];xx[k]=ch; } }參考程式
32、請撰寫函式void fun(char xx[]),其功能是:從字串xx中間一分為二,左邊部分按字符的ASCII值降序排序,右邊部分按字符的ASCII值升序排序,如果原字串長度為奇數,則最中間的字符不參加排序,字符仍放在原位置上,
例如:若源字串為:abcdhgfe,則處理后字串為:dcbaefgh, 若源字串為:123498765,則處理后字串為:432195678,
#include <stdio.h> #include <string.h> void fun(char xx[]) { } int main() { char xx[81]; printf("Enter a string : "); gets(xx); printf("The original string is : "); puts(xx); fun(xx); printf("The string after modified : "); puts(xx); return 0; }
void fun(char xx[]) { int i,j,k,half; char ch; i=strlen(xx); half=i/2; for(j=0;j<half-1;j++) for(k=j+1;k<half;k++) if(xx[j]<xx[k]) { ch=xx[j];xx[j]=xx[k];xx[k]=ch; } if (i%2) half++; for (j=half;j<i-1;j++) for (k=j+1;k<i;k++) if (xx[j]>xx[k]) { ch=xx[j];xx[j]=xx[k];xx[k]=ch; } }參考程式
33、請撰寫函式void fun(char xx[]),其功能是:從字串xx中間一分為二,左邊部分按字符的ASCII值降序排序,排序后左邊部分與右邊部分進行交換,如果原字串長度為奇數,則最中間的字符不參加處理,字符仍放在原位置上,
例如:若源字串為:abcdhgfe,則處理后字串為:hgfedcba, 若源字串為:123498765,則處理后字串為:876594321,
#include <stdio.h> #include <string.h> void fun(char xx[]) { } int main() { char xx[81]; printf("Enter a string : "); gets(xx); printf("The original string is : "); puts(xx); fun(xx); printf("The string after modified : "); puts(xx); return 0; }
void fun(char xx[]) { int i,j,k,half; char ch; i=strlen(xx); half=i/2; for(j=0;j<half-1;j++) for(k=j+1;k<half;k++) if(xx[j]<xx[k]) { ch=xx[j];xx[j]=xx[k];xx[k]=ch; } for (j=half-1,k=i-1;j>=0;j--,k--) { ch=xx[j]; xx[j]=xx[k]; xx[k]=ch; } }參考程式
34、撰寫一個函式fun(char *str,char *substr),該函式統計一個長度為2的子字串在另一個字串中出現的次數,
例如,若字串str為"asd asasdfg asd as zx67 asd mklo",子字串為"as",則函式回傳值是6,
#include <stdio.h> #include <string.h> int fun(char *str,char *substr) { } int main() { char str[81], substr[3] ; int n ; printf("輸入原字串:") ; gets(str) ; printf("輸入子字串:") ; gets(substr) ; n=fun(str, substr) ; printf("n=%d\n", n) ; return 0; }
int fun(char *str,char *substr) { int n=0; char *p , *r; while (*str) { p=str; r=substr; while(*r) if (*r==*p) {r++; p++; } else break; if (*r=='\0') n++; str++; } return n; }參考程式
35、請撰寫函式void fun(char xx[]),函式的功能是:將字串陣列xx中以空格或標點符號為分隔的所有單詞進行倒排,最后把已處理的字串(應不含標點符號,將標點符號均轉換為空格)仍重新存入字串陣列xx中,
例如:源字串為:I am a student,則處理后字串為:student a am I,
特別說明:若源字串末尾有一個標點,則轉換后的字串開頭有一個空格,
#include <stdio.h> #include <string.h> void fun(char xx[]) { } int main() { char xx[81]; printf("Enter a string : "); gets(xx); printf("The original string is : "); puts(xx); fun(xx); printf("The string after modified : "); puts(xx); return 0; }
void fun(char xx[]) { int len,i,j,k,s; char str[81]; len=strlen(xx); s=k=0; for (i=len-1;i>=0;i--) // 從當前字串尾部開始向前倒序回圈,實作單詞倒排 { if((xx[i]>='A' && xx[i]<='Z')|| (xx[i]>='a' && xx[i]<='z')) k++; // 如果當前字符是字母a~z或A~Z,則k加1 else // 否則將長度為k的單詞順序存入到字串陣列str中 { for(j=1;j<=k;j++) str[s++]=xx[i+j]; k=0; // 將k值清0,以方便下一個單詞的長度計數 } if(!((xx[i]>='A' && xx[i]<='Z')|| (xx[i]>='a' && xx[i]<='z'))) str[s++]=' '; // 如果當前字符不是字母a~z或A~Z,則以空格代之存入到字串陣列str中 } for(j=1;j<=k;j++) // 此時的k值為當前字串中第一個單詞的長度,但在上一個for回圈中沒能存入到字串陣列str中,所以在這里將其存入到str中 str[s++]=xx[i+j]; str[s]='\0'; strcpy(xx,str); // 將倒排好的當前字串重新存回到xx中 }參考程式1
void fun(char xx[]) { int i,len; char str[81]={0}; len=strlen(xx); for (i=len-1;i>=0;i--) if(!((xx[i]>='A' && xx[i]<='Z')|| (xx[i]>='a' && xx[i]<='z'))) { strcat(str,xx+i+1); strcat(str," "); xx[i]='\0'; } strcat(str,xx); strcpy(xx,str); }參考程式2
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/536068.html
標籤:C
上一篇:第2-3-5章 洗掉附件的介面開發-檔案存盤服務系統-nginx/fastDFS/minio/阿里云oss/七牛云oss
