A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Storm_ 中级黑马   /  2015-11-2 10:31  /  955 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

,从键盘输入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;
}

5 个回复

倒序浏览
5555555555555555555
回复 使用道具 举报
谁在放荡 来自手机 中级黑马 2015-11-2 12:54:45
藤椅
外层循环为5次,m<5
回复 使用道具 举报
谁在放荡 来自手机 中级黑马 2015-11-2 12:56:21
板凳
还有,感觉最好还是在定义数组就初始化
回复 使用道具 举报

多谢提醒~~~~
回复 使用道具 举报
66666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马