C语言制作通讯录怎么将联系人的名字按26个字母的顺序排序

如题所述

用 strcmp(name1,name2) 作比较,name1 > name2 做交换。
当然 要把名字(字符串)全化成大写或全小写再比较。
假定都是小写:
#include<stdio.h>
struct TXL
{
char name[20]; char phone[20]; char address[50]; // 你还可以添别的项,不一定是 char 型
};

#define N 4 // 例子里用 4 个人
int main()
{
struct TXL txl[N]={ "zhang","12345","abcd",
"wang","12345","efg",
"li","12345","hijk",
"zhao","12345","xyz"}; // 声明结构数组,并初始化,当然你可以改用输入语句输入
struct TXL t; // t 用来 排队比较交换时,用作 工作单元
int i,j;
for (i=0;i<N-1;i++)
for (j=i;j<N;j++){
if (strcmp(txl[i].name,txl[j].name) > 0){ // 比较
t=txl[i]; txl[i]=txl[j];txl[j]=t; // 交换
}
}
for (i=0;i<N;i++)
printf("%s %s %s\n",txl[i].name,txl[i].phone,txl[i].address); //输出结果
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-17
按26个字母的顺序排序
相似回答