當前位置:成語大全網 - 書法字典 - 字典順序規劃問題

字典順序規劃問題

用鍵盤輸入n個學生的名字,然後根據字典排列輸出結果。

算法設計:

(1)定義壹個二維字符數組來存儲n個學生的名字。

字符名稱[N][13];

(2)使用選擇性排序方法,通過比較函數strcmp()對N個字符串進行排序。

(3)輸出結果

選擇性排序思想

(1)第壹遍,從n條記錄中選擇關鍵字值最小的記錄作為第壹條記錄;

k = 0;

for(j = 0+1;j if(k!= 0){ t = a[k];a[k]= a[I];a[I]= t;}/*單元K和單元0的交換*/

(2)在第二遍中,從剩余的N-1條記錄中選擇具有最小關鍵字值的記錄作為第二條記錄;

k = 1;

for(j = 1+1;j if(k!= 1){ t = a[k];a[k]= a[I];a[I]= t;}

(3)壹般在第I遍中,選擇關鍵字值最小的記錄作為第I條記錄(I = 1,2,...,n-1)從剩余的n-I+1。

k = I-1;

for(j = I;j if(k!= 1){ t = a[k];a[k]= a[I];a[I]= t;}

對於n個元素的數組A,用C語言選擇排序的程序段是:

for(I = 0;i { k = i

for(j = I+1;j if(k!= I){ t = a[k];a[k]= a[I];a[I]= t;}

}

完全類似,我們把二維字符數組char name[N][13]看成N個壹維字符數組:

姓名[0],姓名[1],姓名[2],…,姓名[N-1]。

在選擇排序程序部分,比較兩個數字:

If(a[j]改為:if (strcmp (name [j],name [k])

以及數據交換語句:{ t = a[k];a[k]= a[I];a[I]= t;}

更改為:{strcpy(t,name[k]);strcpy( name[k],namea[I]);strcpy(name[i],t);}

完整的程序列表

#包含“stdio.h”

#包含" string.h "

主()

{cahr name[10][13],temp[13];int I;

for(I = 0;我& lt10;i++){

Printf("請輸入%d學生的姓名:\n ",I+1);

獲取(name[I]);

}

for(I = 0;我& lt9;i++)

{ k = I;

for(j = I+1;j & lt10;j++)if(strcmp(name[j],name[k])& lt;0)k = j;

如果(k!=i){strcpy(temp,name[k]);

strcpy(name[k],name[I]);strcpy(name[i],temp);

}

}

printf(" 10學生姓名按字典排列:\ n ");

for(I = 0;我& lt10;i++)printf("\n %s ",name[I]);

}