天天看點

習題8-7 字元串排序

題目:

習題8-7 字元串排序 (20分)

題目要求:

本題要求編寫程式,讀入5個字元串,按由小到大的順序輸出。

輸入格式:

輸入為由空格分隔的5個非空字元串,每個字元串不包括空格、制表符、換行符等空白字元,長度小于80。

輸出格式:

按照以下格式輸出排序後的結果:

After sorted:
每行一個字元串
           

輸入樣例:

red yellow blue green white
           

輸出樣例:

After sorted:
blue
green
red
white
yellow
           

解題代碼:

#include<stdio.h>
#include<string.h>
int main()
{
	char s[5][100];
	char a[5][100];
	char tmp[100]; 
	char ch;
	int b[5]={ 0 }; //存每個字元串長度 
	int i = 0, j = 0;

	for( i = 0; i < 5; i++ )  //輸入字元串  
    {  
        ch = getchar();  
        for( j = 0; ch != ' '; j++ )  
        {  
            s[i][j] = ch;  
            b[i]++;            //記錄每一個字元串的長度  
            ch = getchar();  
            if( ch == '\n' )  
            {  
                break;  
            }  
        }  
    }  	

	for( i = 0; i < 5; i++ ) //儲存每個字元串中的每個字元 
	{
		for( j = 0; j < 100; j++ )
		{
			if(  b[i] == j ) 
			{
				a[i][j] = '\0';	
				break;
			}
			a[i][j] = s[i][j];
		}
	}
	
	for( i = 0; i < 5; i++ ) //對各個字元串進行排序 
	{
		for( j = i + 1; j < 5; j++ ) 
		{ 
			if( strcmp( a[i], a[j] ) > 0 ) //字元串比較并交換 
			{
				strcpy( tmp, a[i] );
				strcpy( a[i], a[j] );
				strcpy( a[j], tmp );	
			}	
		} 
	}
	
	printf( "After sorted:\n" ); //結果輸出 
	for( i = 0; i < 5; i++ )
	{
		printf( "%s\n", a[i] );
	}
	
	return 0;	
} 
           

繼續閱讀