,从键盘输入6个字符串(仅仅包含英文字母和数字),对这6个字符串从小到大排列并输出结果。(C语言)
/* 先接for循环接收用户输入的字符串,然后用两个for循环借用
* 字符串处理函数两两相邻比较,若后者大于前者,则交换两字符串。
* 最后按顺序输出字符串
*/
// ps:程序运行结果不对,始终没找出错误……
#include <stdio.h>
//调用函数库
#include <string.h>
int main(int argc, const char * argv[]) {
//定义一个二维字符数组
char a[6][30];
//定义一个替换函数
char temp[30];
//用for循环接收6次字符串
for (int i = 0; i < 6; i++) {
//提示用户输入
printf("请输入字符串不大于30的第%d个字符串\n",i+1);
//接收字符串
scanf("%s",a[i]);
}
//外层循环循环5次,
for (int m=0; m<6; m++) {
//内层比外层少循环1次
for (int n=0; n<5-m; n++) {
//相邻两个字符串进行比较,若strcmp>0,则说明前者大,所以交换两个数
if (strcmp(a[n], a[n+1])>0) {
//用strcpy函数交换字符串,后者覆盖前者的字符串内容
strcpy(temp,a[n]);
strcpy(a[n],a[n+1]);
strcpy(a[n+1],temp);
}
}
}
//for循环输出结果
for (int g=0; g<6; g++) {
printf("%s ",a[g]);
}
return 0;
} |
|