这是我基础测试时候的一个c的编程题,虽然基础测试给了10分,但是我想搞清楚我这个代码错在哪,求指点~
//9,从键盘输入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); } //外层循环循环5次, for (int m=0; m<6; m++) { //内层比外层少循环1次 for (int n=0; n<5-m; m++) { //相邻两个字符串进行比较,若strcmp>0,则说明前者大,所以交换两个数 if (strcmp(a[n], a[n+1])>0) { //用strcpy函数交换字符串,后者覆盖前者的字符串内容 strcpy(temp,a[n]); strcpy(a[n],a[n+1]); strcpy(a[n],temp); } } } //for循环输出结果 for (int g=0; g<6; g++) { printf("%s ",a[g]); } return 0; }
|