李心语


私信TA

用户名:tzu210341117

访问量:40959

签 名:

等  级
排  名 204
经  验 6500
参赛次数 0
文章发表 4
年  龄 0
在职情况 学生
学  校 泰州学院
专  业

  自我简介:

解题思路1:

        如果说你有必要打开题解来通关而不是交流讨论,那第一种方法很适合。它至少表明,实际上不打开题解,这道题有一个最基础的可以运行出来的思路:列出来。

        三个数字六种排序方法,每一个都罗列出来,终归是一种办法。

    1)条件是两个并存条件,用&&;

    2)注意题目要求输出空格间隔

printf("%d %d %d",a,b,c);

        就可以了。


参考代码1:

#includeint main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a<b&&b<c) printf("%d %d %d",a,b,c);
    if(a<c&&c<b) printf("%d %d %d",a,c,b);
    if(b<a&&a<c) printf("%d %d %d",b,a,c);
    if(b<c&&c<a) printf("%d %d %d",b,c,a);
    if(c<a&&a<b) printf("%d %d %d",c,a,b);
    if(c<b&&b<a) printf("%d %d %d",c,b,a);
    return 0;
}



解题思路2:

        罗列需要按顺序,否则会乱,这个顺序就是三个数要排列的顺序,所以第二种方法指的是:交换顺序。

        首先,我们要明白两个数如何交换。例如,如果说要交换a和b的值,留一个位置缓存就行,可以运行体会一下

int a,b,t;
scanf("%d%d",&a,&b);
t=a;
a=b;
b=t;
printf("%d%d",a,b);

        

        从小到大,那么第一步就是让最小的到第一个。

        最小的数可能在三个位置(1,2,3),所以用三个位置的数字和第一位的数字比较,比出来最小的与第一位交换;

        接下来第二小的,它有可能在两个位置(2,3),所以用后两个位置的数字和第二位的数字比较,比出来小的与第二位交换;

        最后是最大的,它只有可能在一个位置(3),理论上它要和自己比,比出来小的交换。

        这是理论上,实际上我们都知道,自己不用和自己比,也不用和自己交换。

        所以真正写代码只要第一位和第二、三位比较,如果后面的小则交换;接着第二位和第三位比较,如果后面小则交换,三次比较就可以了。

参考代码2:

#include int main()
{
    int a,b,c,d;
    scanf("%d%d%d",&a,&b,&c);
    if(a>b) 
    {   d=a;
        a=b;
        b=d;
    }
    if(a>c)
    {   d=a;
        a=c;
        c=d;
    }
    if(b>c)
    {   d=b;
        b=c;
        c=d;
    }
    return 0;
}


解题思路3:

        最后解释一下三目运算。

        ?是一种判断和选择,如果前面的是真,就执行后面括号内的第一个语句;如果前面的是假,就执行后面的第二个语句。

        判断最大值思路是这样的:

        (a和b中选出来大的)和c比,谁大谁就最大。

        a和b比

(a>b)?

        比的是谁大,a>b为真a就是较大值,为假b就是较大值

(a>b?a:b)

        和c比

(a>b?a:b)>c?

        (a>b?a:b)>c为真就留下ab比出来的较大值作为最大值,(a>b?a:b)>c为假c就是最大值

(a>b?a:b)>c?(a>b?a:b):c)

        最小值和中间值同理。

        明白了这些,那么整个主函数,只要输入输出就可以了。

代码:

#includeint main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    printf("%d %d %d\n",(a<b?a:b)<c?(ab?(ac?b:c)):(ac?c:b):a),
        (a>b?a:b)>c?(a>b?a:b):c);
    return 0;
}



 

0.0分

32 人评分

  评论区

代码三是错的
2022-11-10 20:59:30
代码3总感觉错了
2022-10-08 17:45:37
参考代码3中c?(ab?(ac?b:c)):(ac?c:b):a)
ab和ac之间是不是忘东西了
2022-10-08 17:34:40
  • «
  • 1
  • »