題目:
習題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;
}