本題要求編寫程式,讀入5個字串,按由小到大的順序輸出。
輸入爲由空格分隔的5個非空字串,每個字串不包括空格、製表符、換行符等空白字元,長度小於80。
按照以下格式輸出排序後的結果:
After sorted:
每行一個字串
red yellow blue green white
After sorted:
blue
green
red
white
yell
雖然方法有點直接,但是這是我寫的最有成就感,思路很清晰的第一個程式碼~紀念一下。
#include <stdio.h>
int main()
{
char s1[80],s2[80],s3[80],s4[80],s5[80],s[80];
int i;
scanf("%s %s %s %s %s",s1,s2,s3,s4,s5);
//放置s1
if(strcmp(s1,s2)<=0){
out1:
if(strcmp(s1,s3)<=0){
out2:
if(strcmp(s1,s4)<=0){
out3:
if(strcmp(s1,s5)<=0){
}
else{
strcpy(s,s1);
strcpy(s1,s5);
strcpy(s5,s4);
strcpy(s4,s3);
strcpy(s3,s2);
strcpy(s2,s);
}
}
else{
strcpy(s,s1);
strcpy(s1,s4);
strcpy(s4,s3);
strcpy(s3,s2);
strcpy(s2,s);
goto out3;
}
}
else{
strcpy(s,s1);
strcpy(s1,s3);
strcpy(s3,s2);
strcpy(s2,s);
goto out2;
}
}
else {
strcpy(s,s1);
strcpy(s1,s2);
strcpy(s2,s);
goto out1;
}
//放置s2
if(strcmp(s2,s3)<=0){
out4:
if(strcmp(s2,s4)<=0){
out5:
if(strcmp(s2,s5)<=0){
}
else{
strcpy(s,s2);
strcpy(s2,s5);
strcpy(s5,s4);
strcpy(s4,s3);
strcpy(s3,s);
}
}
else{
strcpy(s,s2);
strcpy(s2,s4);
strcpy(s4,s3);
strcpy(s3,s);
goto out5;
}
}
else{
strcpy(s,s2);
strcpy(s2,s3);
strcpy(s3,s);
goto out4;
}
//放置s3
if(strcmp(s3,s4)<=0){
out6:
if(strcmp(s3,s5)<=0){
}
else{
strcpy(s,s3);
strcpy(s3,s5);
strcpy(s5,s4);
strcpy(s4,s);
}
}
else{
strcpy(s,s3);
strcpy(s3,s4);
strcpy(s4,s);
goto out6;
}
//判斷 s4,s5
if(strcmp(s4,s5)>0){
strcpy(s,s4);
strcpy(s4,s5);
strcpy(s5,s);
}
printf("After sorted:\n%s\n%s\n%s\n%s\n%s\n",s1,s2,s3,s4,s5);
return 0;
}