PTA實驗8-2-8 字串排序 (20分)

2020-08-13 01:04:51

本題要求編寫程式,讀入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;
}