c语言,求助大神! 从键盘上输入三个字符串,将这三个串从小到大排序。 20

 我来答
White_MouseYBZ
2017-07-02 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:7156万
展开全部

C的字符串是用字符数组操作的,所以排序应该用指针数组完成,以避免字符串拷贝。由于只有3个字符串,用直接操作的办法而不用循环以避免不必要的开销;输入函数选用fgets,既可以方便地控制输入长度不越界,又能允许字符串中存在空格。代码如下:

#include "stdio.h"
#include "string.h"
int main(int argc,char *argv[]){
char s[3][200],*ps[3],*p;//声明指针数组ps以进行指针排序
printf("Input 3 strings('Enter' separated)...\n");//回车隔开以允许含空格
fgets(ps[0]=s[0],200,stdin);//使用fgets以控制字符串输入长度
fgets(ps[1]=s[1],200,stdin);
fgets(ps[2]=s[2],200,stdin);
if(strcmp(ps[0],ps[1])>0)//由于只有3个字符串,所以直接比较交换指针而不用循环
p=ps[0],ps[0]=ps[1],ps[1]=p;
if(strcmp(ps[0],ps[2])>0)
p=ps[0],ps[0]=ps[2],ps[2]=p;
if(strcmp(ps[1],ps[2])>0)
p=ps[1],ps[1]=ps[2],ps[2]=p;
printf("\nAfter ordering:\n%s%s%s",ps[0],ps[1],ps[2]);//直接输出排序后的字符串
printf("\n");
return 0;
}

试运行结果如下图:

百度网友fc027fc
2015-05-31 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3160
采纳率:83%
帮助的人:850万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char a[128],b[128],c[128];
    scanf("%s%s%s",a,b,c);
    char t[128];
    if(strcmp(a,b)>0)
    {
        strcpy(t,a);
        strcpy(a,b);
        strcpy(b,t);
    }
    
    if(strcmp(b,c)>0)
    {
        strcpy(t,b);
        strcpy(b,c);
        strcpy(c,t);
    }
    
    if(strcmp(a,b)>0)
    {
        strcpy(t,a);
        strcpy(a,b);
        strcpy(b,t);
    }
    
    puts(a);
    puts(b);
    puts(c);
    system("pause");
    return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tapingping2006
2017-06-25 · TA获得超过452个赞
知道小有建树答主
回答量:280
采纳率:0%
帮助的人:132万
展开全部
三个字符串从小到大排序?老哥你确定不是数字?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式