首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个关于字符串数组的有关问题 望一下

2012-02-16 
一个关于字符串数组的问题 望高手指点一下编写一个程序,接收用户输入的字符串,最多10个,要求:将这个字符串

一个关于字符串数组的问题 望高手指点一下
编写一个程序,接收用户输入的字符串,最多10个,
要求:将这个字符串数组的元素进行排序后输出,用户可选择升序和降序
还有就是,当用户输入“!”时,结束接收,以下这个是我自己写的,有点问题还不太明白:
#include <stdio.h>
#include <string.h>
int   count   =   0   ;
void   main()
{
        char   ch[10][20];//定义的字符串数组,存放用户输入的字符串
        int   i,j,k,r;
        char   temp[20];//这是排序时要用到的中间变量,顺便问一下,这个中间变量可
                                    //以这样定义吗??     char   temp;     个人认为是不行的
                                    //因为存放的是字符串,
        for(i=0;i <10;i++)
        {
                printf( "请输入第%d串字符串: ",i+1);
                fflush(stdin);
                gets(ch[i]);
                if(strcmp(ch[i], "! ")==0)
                {
                        break;
                }
                count++;
        }
        printf( "请选择排序方式 <1:升序2:降序> : ");
        fflush(stdin);
        scanf( "%d ",&k);
        if(k==1)
        {
                for(i=0;i <count-1;i++)
                {
                        for(j=i+1;j <count;j++)
                        {
                                r   =   stricmp(ch[i],ch[j]);//我有点搞不懂这个stricmp()函数  
                                if(r <0)                                    
                                {
                                        strcpy(temp,ch[i]);
                                        strcpy(ch[i],ch[j]);
                                        strcpy(ch[j],temp);
                                }
                        }
                }
        }
        else
        {


                if(k==2)
                {
                        for(i=0;i <count-1;i++)
                        {
                                for(j=i+1;j <count;j++)
                                {
                                        r   =   stricmp(ch[i],ch[j]);
                                        if(r> 0)
                                        {
                                                strcmp(temp,ch[i]);
                                                strcmp(ch[i],ch[j]);
                                                strcmp(ch[j],temp);
                                        }
                                }
                        }
                }
                else
                {
                        printf( "非法输入\n ");
                }
        }
        for(i=0;i <count;i++)
        {
                puts(ch[i]);
                printf( "\n ");
        }
        getchar();
}

上面这个程序的问题在于,我试了几次,只能升序排列打印出来,降序则没有实现
当然还有个问题,就是只有用户单独输入一个“!”时,才结束接收,这个我们不管先,先解决排序的问题,为什么只能升序,不能降序呢???

[解决办法]
strcmp(temp,ch[i]);
strcmp(ch[i],ch[j]);
strcmp(ch[j],temp);
---------------
是要用strcpy吧。

热点排行