輸入五個國家的名稱按字母順序排列輸出。
本題編程思路如下:五個國家名應(yīng)由一個二維字符數(shù)組來處理。然而C語言規(guī)定可以把一個二維數(shù)組當(dāng)成多個一維數(shù)組處理。 因此本題又可以按五個一維數(shù)組處理, 而每一個一維數(shù)組就是一個國家名字符串。用字符串比較函數(shù)比較各一維數(shù)組的大小,并排序, 輸出結(jié)果即可。
編程如下:
void main()
{
char st[20],cs[5][20];
int i,j,p;
printf("input country's name:\n");
for(i=0;i<5;i++)
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],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");
}
for(i=0;i<5;i++)
{
p=i;strcpy(st,cs[i]);
for(j=i+1;j<5;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);
}
}
}
本程序的第一個for語句中,用gets函數(shù)輸入五個國家名字符串。上面說過C語言允許把一個二維數(shù)組按多個一維數(shù)組處理, 本程序說明cs[5][20]為二維字符數(shù)組,可分為五個一維數(shù)組cs[0],cs[1],cs[2],cs[3],cs[4].因此在gets函數(shù)中使用cs[i]是合法的。 在第二個for語句中又嵌套了一個for語句組成雙重循環(huán)。 這個雙重循環(huán)完成按字母順序排序的工作。在外層循環(huán)中把字符數(shù)組cs[i]中的國名字符串拷貝到數(shù)組st中,并把下標(biāo)i賦予P. 進(jìn)入內(nèi)層循環(huán)后,把st與cs[i]以后的各字符串作比較,若有比st小者則把該字符串拷貝到st中,并把其下標(biāo)賦予p.內(nèi)循環(huán)完成后如p不等于 i 說明有比cs[i]更小的字符串出現(xiàn),因此交換cs[i]和st的內(nèi)容。 至此已確定了數(shù)組cs的第i號元素的排序值。然后輸出該字符串。在外循環(huán)全部完成之后即完成全部排序和輸出。
本章小結(jié)
1.數(shù)組是程序設(shè)計中最常用的數(shù)據(jù)結(jié)構(gòu)。數(shù)組可分為數(shù)值數(shù)組(整數(shù)組,實(shí)數(shù)組),字符數(shù)組以及后面將要介紹的指針數(shù)組,結(jié)構(gòu)數(shù)組等。
2.數(shù)組可以是一維的,二維的或多維的。
3.數(shù)組類型說明由類型說明符、數(shù)組名、數(shù)組長度 (數(shù)組元素個數(shù))三部分組成。數(shù)組元素又稱為下標(biāo)變量。 數(shù)組的類型是指下標(biāo)變量取值的類型。
4.對數(shù)組的賦值可以用數(shù)組初始化賦值, 輸入函數(shù)動態(tài)賦值和賦值語句賦值三種方法實(shí)現(xiàn)。 對數(shù)值數(shù)組不能用賦值語句整體賦值、輸入或輸出,而必須用循環(huán)語句逐個對數(shù)組元素進(jìn)行操作。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |