main() { char st[20],cs[5][20]; //cs存放五個名字int i,j,p; //定義p就是浪費,沒用,可以刪掉printf("input country"s name:\n"); //提示輸入for(i=0;i<5;i++) //迴圈讀5個字串(國家名字)放到cs數組裡gets(cs[i]); printf("\n"); //輸出個換行符,為了輸出格式好看一點?//以下就是一個氣泡排序for(i=0;i<5;i++) { p=i;strcpy(st,cs[i]); //這裡兩句全都可以刪除,一點用沒有for(j=i+1;j<5;j++) //下面這一段可以只用一個if(strcmp(cs[j],cs[i])<0)//{}內的程式碼用第二個if中的三個strcpy//作用就是判斷i和j處的字串是不是按字母順序排的//如果不是就將它們兩個交換一下位置if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);} if(p!=i) { strcpy(st,cs[i]); strcpy(cs[i],cs[p]); strcpy(cs[p],st); } //輸出排序後的字串?那就不應該加在這裡//可以在下面這個括號之後另起一個迴圈,輸出puts(cs[i]);}printf("\n"); } 總而言之,這個程式的問題還是有的,還要好好修改一下
main() { char st[20],cs[5][20]; //cs存放五個名字int i,j,p; //定義p就是浪費,沒用,可以刪掉printf("input country"s name:\n"); //提示輸入for(i=0;i<5;i++) //迴圈讀5個字串(國家名字)放到cs數組裡gets(cs[i]); printf("\n"); //輸出個換行符,為了輸出格式好看一點?//以下就是一個氣泡排序for(i=0;i<5;i++) { p=i;strcpy(st,cs[i]); //這裡兩句全都可以刪除,一點用沒有for(j=i+1;j<5;j++) //下面這一段可以只用一個if(strcmp(cs[j],cs[i])<0)//{}內的程式碼用第二個if中的三個strcpy//作用就是判斷i和j處的字串是不是按字母順序排的//如果不是就將它們兩個交換一下位置if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);} if(p!=i) { strcpy(st,cs[i]); strcpy(cs[i],cs[p]); strcpy(cs[p],st); } //輸出排序後的字串?那就不應該加在這裡//可以在下面這個括號之後另起一個迴圈,輸出puts(cs[i]);}printf("\n"); } 總而言之,這個程式的問題還是有的,還要好好修改一下