您的位置:首页 > 其它

利用指针对二维字符数组进行排序

2020-06-06 06:13 101 查看

对学生姓名进行排序。
关键点:对字符串进行比较时,从左往右依次比较字符(比较字符对应的ascii码值),如果相等,就继续比较下一个字符,直到不相等。

#include<stdio.h>
#include<stdlib.h>
#define number 10

//交换姓名
void swap(char *p1, char *p2);

int main(void)
{
char name[number][20];
int i, j, t, order=0;

//输入
printf("请输入%d个姓名:\n", number);
for(i=0; i<number; ++i) {
scanf("%s", name[i]);
}

//冒泡排序
for(i=0; i<number; ++i){
order = 0;
for(j=0; j<number-1-i; ++j){
t = 0;
while(name[j][t] == name[j+1][t]) {
++t;
}
if(name[j][t]>name[j+1][t]){
swap(name[j], name[j+1]);
order = 1;
}
}
if(!order) break;
}

//输出
printf("按ascii表顺序排列为:\n");
for(i=0; i<number; ++i) {
printf("%s\t", name[i]);
}
printf("\n");

system("pause");
return 0;

}

void swap(char *p1, char *p2)
{
char t[20];
int i;

for(i=0; i<20; ++i) {
t[i] = p1[i];
p1[i] = p2[i];
p2[i] = t[i];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: