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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目:从键盘输入6个字符串(仅仅包含英文字母和数字),对这6个字符串从小到大排列并输出结果。
本人只会接收 6个字符串。再往下不会了。求大神指导
#include <stdio.h>
void main()
{
        char one[100];// 定义接收第1个字符串
        char two[100];// 定义接收第2个字符串
        char three[100];// 定义接收第3个字符串
        char four[100];// 定义接收第4个字符串
        char five[100];// 定义接收第5个字符串
        char six[100];// 定义接收第一个字符串
        printf("请输入第1个字符串(仅包含英文字母和数字):");
        gets(one);
        printf("请输入第2个字符串(仅包含英文字母和数字):");
        gets(two);
        printf("请输入第3个字符串(仅包含英文字母和数字):");
        gets(three);
        printf("请输入第4个字符串(仅包含英文字母和数字):");
        gets(four);
        printf("请输入第5个字符串(仅包含英文字母和数字):");
        gets(five);
        printf("请输入第6个字符串(仅包含英文字母和数字):");
        gets(six);
}

18 个回复

倒序浏览
排序加compare就可以了
回复 使用道具 举报
从小到大排列输出,再加个排序的函数不就OK了吗
回复 使用道具 举报
写一个冒泡不就可以吗?用strcmp函数比较ascii大小。需要头文件string.h
回复 使用道具 举报
请问是黑马入学面试么
回复 使用道具 举报
基础题可以在论坛提问吗?
回复 使用道具 举报

代码已补全,欢迎来纠错

本帖最后由 wangchao1992 于 2015-9-15 11:26 编辑

    char *temp;//定义temp变量用于交换
    char *sort[6];
    sort[0]=one;
    sort[1]=two;
    sort[2] =three;
    sort[3]=four;
    sort[4]=five;
    sort[5]=six;
//定义字符串指针数组存放 6个字符串的地址

    for(int i=0;i<5;i++)//冒泡排序
    {

        for(int j=0;j<j+1-i;j++)
        {

            if(strcmp(sort,sort[j]))
            {
                //交换两个变量的地址
                temp=sort;
                sort=sort[j];
                sort[j]=temp;
            }
        }
    }
    //循环输出
    for(int i=0;i<6;i++)
    {
        printf("%s\n",sort);
    }

}

回复 使用道具 举报
18503582292 发表于 2015-9-14 09:14
基础题可以在论坛提问吗?

以前的贴子有讨论面试题的.应该可以吧
回复 使用道具 举报
荣荣 发表于 2015-9-14 06:04
请问是黑马入学面试么

是啊,....
回复 使用道具 举报
大宝820 发表于 2015-9-13 23:16
写一个冒泡不就可以吗?用strcmp函数比较ascii大小。需要头文件string.h

兄弟来看看我写的对不对
回复 使用道具 举报
如意大师视频里有
回复 使用道具 举报
j<j+1-i怎么解释?
回复 使用道具 举报
wangchao1992 发表于 2015-9-15 11:03
char *temp;//定义temp变量用于交换    char *sort[6];    sort[0]=one;    sort[1]=two;    sort[2] = ...

攒,写的好。。。。。。。。。。。。。。。
回复 使用道具 举报
如果是输入10个数字,估计你用冒泡或者其他方法能排序。对于字符串,把字符串看成数字,只不过比较的时候用strcmp函数即可。
回复 使用道具 举报
最佳答案
/*
从键盘输入6个字符串(仅仅包含英文字母和数字),对这6个字符串从小到大排列并输出结果。
*/

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        char ch[6][50];
        for (int i = 0; i<6; i++) {
            printf("键入第%d个字符串:",i+1);
            scanf(" %s",ch);
            
        }
        int a=0;
        
        for (int i = 0; i<6; i++) {
            for (int j = 1; j<5; j++) {
                printf("%d",++a);
                if (strcmp(ch, ch[j])<0) {
                    
                    char temp[50];
                    strcpy(temp, ch);
                    strcpy(ch, ch[j]);
                    strcpy(ch[j],temp);
                }
            }
        }
        printf("由小大到排序完毕:");
        for (int i = 0; i<6; i++) {
            printf("%s ",ch);
        }
        printf("\n");
    }
    return 0;
}

回复 使用道具 举报

看其他代码,模仿的。
回复 使用道具 举报
jsh_513 发表于 2015-9-16 08:33
攒,写的好。。。。。。。。。。。。。。。

本人是菜鸟。代码是有错误的。
回复 使用道具 举报
都是大神啊,,厉害
回复 使用道具 举报
wangchao1992 发表于 2015-9-15 11:03
char *temp;//定义temp变量用于交换    char *sort[6];    sort[0]=one;    sort[1]=two;    sort[2] = ...

大神呀,膜拜。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马