⑴ c語言程序 中文按首字母排序
#include <stdio.h>
#include <string.h>
#define MAX_NAME 20 //最大名字長度
#define MAX_NUM 100 //最大學生人數
void sort_bubble(char (*pc)[MAX_NAME],int n)//排序函數
{
int i,j;
char str[MAX_NAME];
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(pc[i],pc[j])>0)
{
strcpy(str,pc[i]);
strcpy(pc[i],pc[j]);
strcpy(pc[j],str);
}
}
}
}
void display_name(char (*pc)[MAX_NAME],int n)//顯示這n個姓名
{
int i;
for(i=0;i<n;i++)
{
printf("%s\n",pc[i]);
}
}
int main()
{
int i=1,n;
char str[MAX_NUM][MAX_NAME];
printf("請輸入學生總數:");
scanf("%d",&n);
while(i<=n)
{
printf("請輸入第%d個學生姓名:",i);
scanf("%s",str[i++-1]);
}
printf("排序前的學生名單如下:\n");
display_name(str,n);
sort_bubble(str,n);
printf("排序後的學生名單如下:\n");
display_name(str,n);
return 0;
}
說明:
1:採用的是冒泡排序,用快速排序當然快些,但我忘了
2:已驗證通過,結果正確。
3:隨意輸入人數和姓名,只要數組不越界就沒有問題!
4:兩個函數:排序和顯示
5:給分+好評
⑵ c語言姓名首字母排序問題
按照C語言語法,main函數須為void類型;另外,你所編輯的程序段沒有輸入。就排序方式來講你所用的是函數的址傳遞及字元串比較大小的函數,這點沒有錯誤;就理解而言strcmp函數的確可以實現你所需的功能,其大小的比較式按ASCⅡ碼值進行的比較,不知道你有沒有意識到。