5.4 介面開發-根據id刪除附件 第2-1-2章 傳統方式安裝FastDFS-附FastDFS常用命令 第2-1-3章 docker-compose安裝FastDFS,實現文件存儲服務 第2-1-5章 docker安裝MinIO實現文件存儲服務-springboot整合minio-minio全網最 ...
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