解题思路和注意事项:


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


最小数:(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 条评论

TTSV 4年前 回复TA
#include<stdio.h>
int main()
{
	int a, b,c,s;
	scanf("%d%d%d", &a, &b,&c);
	if (a < b)
		s = a, a = b, b = s;
	if (a < c)
		s = a, a = c, c = s;
	if (b < c)
		s = b, b = c, c = s;
 	printf("%d %d %d ", c,b,a);
	return 0;
}
李稀饭呐 4年前 回复TA
@wangzy 这是题目要求的输出格式
李稀饭呐 4年前 回复TA
@wangzy %d 后面加空格
wangzy 4年前 回复TA
#include<stdio.h>
int main()
{
    int a,b,c;
    if(scanf("%d%d%d",&a,&b,&c)){
    if(a<b&&b<c)
    {
    printf("%d%d%d\n",a,b,c);
    }
    else if(a<c&&c<b)
    { 
    printf("%d%d%d\n",a,c,b);
    }
    else if(b<a&&a<c)
    {
    printf("%d%d%d\n",b,a,c);
    }
    else if(b<c&&c<a)
    {
    printf("%d%d%d\n",b,c,a);
    }   
    else if(c<a&&a<b)
    {
    printf("%d%d%d\n",c,a,b);
    }
    else
    printf("%d%d%d\n",c,b,a);
    }
    return 0;
}
想知道错哪了
Fabious 4年前 回复TA
int main(){
	int a, b, c;
	scanf("%d%d%d", &a, &b, &c);
	int min, mid, max;
	min = (a<b?a:b)<c?(a<b?a:b):c;
	max = (a>b?a:b)>c?(a>b?a:b):c;
	mid = (a+b+c) - min - max;
	printf("%d %d %d", min, mid, max); 
	return 0;
}
槟仔 4年前 回复TA
@卵不知道 代码该成调用函数确实可读性高了
Fiora 4年前 回复TA
@卵不知道 冒泡排序不就得了,搞这么复杂
卵不知道 4年前 回复TA
#include<stdio.h>
#include<math.h>
#include<string.h>

void exchange(int* n1, int* n2, int* n3);

void swap(int *,int *);

int main()
{
	int a=0, b=0, c=0;
	scanf("%d %d %d", &a, &b, &c);
	exchange(&a, &b, &c);
	printf("%d %d %d ", a, b, c);
	return 0;
}


void exchange(int* n1, int* n2, int* n3)
{
	if (*n1 > *n2) swap(n1, n2);
	if (*n1 > *n3) swap(n1, n3);
	if (*n2 > *n3) swap(n2, n3);
	return;
}

void swap(int* x,int* y)
{
	int temp = 0;
	temp = *x;
	*x = *y;
	*y=temp;
	return;
}
我不推荐答主的题解,因为程序员在后期维护代码的时候会,原地自爆。(谁TM知道错在哪啊?!)
谨记 单一出口原则,并尽可能对代码进行封装。
菜鸡待宰 4年前 回复TA
@程序员不脱发 单一出口原则。。。
zyj 4年前 回复TA
@莺时无念 你把那个冒泡排序改一下,然后把那个输出改一下,改成先输出带空格地,最后一个输出不带空格地值