1.程序需要四個函數,即入口主函數、輸入函數、輸出函數和排序函數。
二、題目要求按首字母排序,不限制大小寫。所以不能直接用字母來對比大小。需要根據案例找出字母差異,並與差異進行比較。
第三,字符串排序交換,使用函數strcpy。
代碼如下:
# include & ltstdio.h & gt
# include & ltstring.h & gt
#定義MM 12//月數
#定義MS 20//字符串長度
void px(char moms[][MS]);//排序
void showMM(char moms[][MS]);
void input mm(char moms[][MS]);//手動輸入月份名稱。
int main()
{
char moms[12][MS]={ "壹月",\
“二月”
“三月”
“四月”
“可能”
“六月”
“七月”
“八月”
“九月”
“十月”
“十壹月”
“十二月”};
Printf("%d個月英文名:\n ",MM);
showMM(媽媽們);
px(媽媽們);
Printf("%d個月英文名稱按字母升序排列為:\n ",MM);
showMM(媽媽們);
input mm(moms);
Printf("輸入月份的英文名稱:\ n ");
px(媽媽們);
showMM(媽媽們);
返回0;
}
void inputMM(char moms[][MS])
{
int I;
Printf("手動輸入%d個月份的英文名稱(每個名稱少於%d個字符):\n ",MM,MS-1);
for(I = 0;我& ltMM;scanf("%s ",moms[i]),i++);
}
void showMM(char moms[][MS])
{
int I;
for(I = 0;我& ltMM;printf("%s\n ",moms[i]),i++);
printf(" \ n ");
}
void px(char moms[][MS])
{
char strTemp[MS]= { 0 };
int i,j,n1,N2;
for(I = 0;我& ltMM-1;i++)
for(j = I+1;j & ltMM;j++)
{
if(moms[I][0]& gt;= ' A ' & amp& ampmoms[I][0]& lt;= ' Z ')n 1 = moms[I][0]-' A ';//大小寫識別
if(moms[I][0]& gt;= ' a ' & amp& ampmoms[I][0]& lt;= ' z ')n 1 = moms[I][0]-' a ';
if(moms[j][0]& gt;= ' A ' & amp& ampmoms[j][0]& lt;= ' Z ')N2 = moms[j][0]-' A ';
if(moms[j][0]& gt;= ' a ' & amp& ampmoms[j][0]& lt;= ' z ')N2 = moms[j][0]-' a ';
memset(strTemp,0,MS);
if(n 1 & gt;n2)
strcpy(strTemp,moms[i]),strcpy(moms[i],moms[j]),strcpy(moms[j],strTemp);
}
}