c语言main函数内接收不少于5个人的姓名拼音,调用一个函数按照姓氏拼音首字母排序后输出。
定义二维数组char name[100][40];接收字符串,用冒泡等排序方法排序就可以了,字符串比较用strcmp()函数。
如下:
#include <stdio.h>
#include <string.h>
void bubble_sort(char a[][40],int n)
{
int i,j;
char t[40];
for(i=0;i<n-1;i++)
{
for (j=0;j<n-1-i;j++)
{
if(strcmp(a[j],a[j+1])>0)
{
memset(t,0,40);
memcpy(t,a[j],strlen(a[j]));
memset(a[j],0,40);
memcpy(a[j],a[j+1],strlen(a[j+1]));
memset(a[j+1],0,40);
memcpy(a[j+1],t,strlen(t));
}
}
}
}
int main()
{
char a[100][40];
int i,j,n;
printf("请输入字符串个数:");
scanf("%d",&n);
printf("请输入%d个字符串:\n",n);
for(i=0;i<n;i++)
gets(a[i]);
bubble_sort(a,n);
//输出
for(i=0;i<n;i++)
printf("%s\n",a[i]);
return 0;
}