解题思路和注意事项:


用了三目运算符把三个数的排序搞出来了,见下文:


最小数:(a<b?a:b)<c?(a<b?a:b):c

最大数:(a>b?a:b)>c?(a>b?a:b):c

中间数:a<b?(a>c?a:(c<b?c:b)):(a<c?a:(b>c?b:c))


参考代码:

#include<stdio.h>
int main()
{
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	printf("%d %d %d\n",(a<b?a:b)<c?(a<b?a:b):c,
		a<b?(a>c?a:(c<b?c:b)):(a<c?a:(b>c?b:c)),
		(a>b?a:b)>c?(a>b?a:b):c);
	return 0;
}


点赞(13)
 

0.0分

88 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 62 条评论

曲衫希 4年前 回复TA
@夏願 好像又行了,可能我这DEVC++有点问题
曲衫希 4年前 回复TA
@夏願 兄弟,你这个不行啊,随机输入3个数,有时候排不对的
渐入佳境. 4年前 回复TA
@大当家 if语句错了
明日尘 4年前 回复TA
@徐某鸣 ……为何要写得如此复杂?
AkMoney 4年前 回复TA
@一块键盘 三目真的非常棒的,直接简化了
Peter 4年前 回复TA
@wangzy %#d
洛阳 4年前 回复TA
#include<stdio.h>
#define MAX(a,b) a>b?a:b
#define MIN(a,b) a<b?a:b
#define MIL(a,b,c) (a>b?a:b)<c?(a>b?a:b):c

int main()
{
    int n[3];
    int i,j,x,z,y,l;
    for(i=0;i<3;i++)
    {
    scanf("%d",&n[i]);
    }
    y = MAX(n[0],n[1]);
    y = MAX(y,n[2]);
    x = MIN(n[0],n[1]);
    x = MIN(x,n[1]);
    l = MIL(n[0],n[1],n[2]);
    printf("%d %d %d\n",x,l,y);

    return 0;
}
小白不知道哪错了呀......
云淡风轻 4年前 回复TA
@大当家 超时了。
大当家 4年前 回复TA
我这样写有什么问题吗?
include <stdio.h>
void main()
{
	int a[3];
	int i, j, t;
	printf("please 3 number\n");
	for(i=0; i<3; i++)
	{
		scanf("%d", &a[i]);
	}
	for(i=0; i<2; i++)
	{
		for(j=0; j<2-i; j++)
		{
			if(a[j] > a[j+1])
			{
				t = a[j];
				a[j] = a[j+1];
				a[j+1] = t;
			}
		}
	}
	printf("排序后:\n");
	for(i=0; i<3; i++)
	{
		printf("%d", a[i]);
	}
	printf("\n");
}
徐某鸣 4年前 回复TA
@徐某鸣 错误了,难受