黑马程序员技术交流社区

标题: C语言中如何能用数组循环接收字符串并比较大小输出? [打印本页]

作者: tony_ygz    时间: 2014-5-7 07:51
标题: C语言中如何能用数组循环接收字符串并比较大小输出?
本帖最后由 tony_ygz 于 2014-5-7 10:54 编辑

如题,接收字符串如:“asdas”,"sdasff","asafasf",然后比较这几个字符串的大小按升序排列输出?
作者: 子城伯涵    时间: 2014-5-7 09:04
#include<stdio.h>
#include<string.h>
int main()
{
        char ch[6];
        for(int ix=0;ix<6;ix++)
        {
                ch[ix]=getchar();
       
        }
        size_t i=strlen(ch);
        int x;
        char tem;
        while(i>1)
        {
                x=1;
                for(int j=1;j<i;++j)
                {
                        if( ch[j]> ch[j+1])
                        {
                                tem=ch[j];
                                ch[j]=ch[j+1];
                                ch[j+1]=tem;
                                x=j;
                        }
               
                }
                i=x;
        }
       
        for(int ix=0;ix!=6;++ix)
        {
                printf("%c",ch[ix]);
        }
        return 0;
       
}
冒泡排序法
作者: godlike    时间: 2014-5-7 09:49
简单说下我的思路,楼主可以试试自己写:
1:首先,用什么存储输入的字符串,一种可以用二维数组:char name[2][10] = {“jack” , “rose”};
     或者用指针数组:char *name[5] = {“java” , “rose”};  接收键盘输入时用gets方法,不要用scanf
     因为scanf不能接收空格输入;
2:把输入的字符串存储在二维数组中后,接下来就是比较了,比较两个字符串的大小,c自带了一个方法:strcmp,
     在头文件 <string.h>中,include它就能用了,这个方法接收两个字符串参数,返回int型变量,这个两个参数
     可以是常量,也可以是变量,比如:
      int i = strcmp("abc", "bcd"); // 返回-1,参数1小于参数2,0:相等,1大于;这个应该很好理解;
3:接下来就是一个循环比较了;
     strcmp这个方法如果不想用,自己也可以写,但是比较麻烦,又要每个字符逐一比较ASCII码;
思路还是挺简单的,耐心点应该能写出来,希望对楼主有帮助

作者: tony_ygz    时间: 2014-5-7 10:39
godlike 发表于 2014-5-7 09:49
简单说下我的思路,楼主可以试试自己写:
1:首先,用什么存储输入的字符串,一种可以用二维数组:char nam ...

恩,谢了,学习了
作者: tony_ygz    时间: 2014-5-7 10:40
子城伯涵 发表于 2014-5-7 09:04
#include
#include
int main()

恩,谢谢你的分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2