解题思路和注意事项:


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


最小数:(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
#include<stdio.h>

void fun(int a[])
{
    int i, j;
    
    for (i = 0; i < 3 - 1; i++)
    {
        for (j = 0; j < 3 - i - 1; j++) 
        {
            if (a[j] > a[j + 1]) 
            {
                int temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

int main()
{
	int a[3] = {};
	int i;
	for (i = 0; i < 3; i++)
	{
		scanf_s("%d", &a[i]);
	}

	fun(a);

	for (i = 0; i < 3; i++)
	{
		printf("%d ", a[i]);
	}
	return 0;
}
龙炜 1年前 回复TA
@harder int main() { 	int i = 0, j = 0, t = 0; 	int arr[4] = { 0 }; 	for (i = 0;i < 3;i++) { 		scanf("%d", &arr[i]); 	} 	for (i = 0;i < 3;i++) { 		for (j = 0;j < 2 - i;j++) { 			if (arr[j] > arr[j + 1]) { 				t = arr[j]; 				arr[j] = arr[j + 1]; 				arr[j + 1] = t; 			} 		} 	} 	for (i = 0;i < 3;i++) { 		printf("%d ", arr[i]); 	} 	return 0; }
在路上 2年前 回复TA
#include<stdio.h>
#define  Max(x,y,z)     x>y?(x>z?x:z):(y>z?y:z)
#define  mAx(x,y,z)        x>y?(x>z?z:y):(y>z?z:x)
int main()
{
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	printf("%d %d %d",Max(a,b,c),wang(a,b,c),mAx(a,b,c));
}
int wang (int x ,int y,int z)
{
	if(x>y&&y>z||z>y&&y>x)
	{
		return y;
	}
	if(y>x&&x>z||z>x&&x>y)
	{
		return x;
	}
	if(x>z&&z>y||y>z&&z>x)
	{
		return z;
	 } 
	 
}
第二种取中间运算符我构思不出来,就用自定义函数来代替了
我试过了这个方法还是可以的
在路上 2年前 回复TA
@张馨楠 这是三目运算符,其中的问号就是判断是否成立,如果成立就执行:左边的如果不成立就执行:右边的大致就是这个意思,就是这个逻辑,叠加在一起
2年前 回复TA
#include <stdio.h>
 
int main()
{
	int a,b,c,t; 
	scanf("%d %d %d",&a,&b,&c); 
	if(a>b)
	t=a,a=b,b=t;
	if(a>c)
	t=a,a=c,c=t;
	if(b>c)
	t=b,b=c,c=t;
	
	printf("%d %d %d",a,b,c); 
    return 0;
}感觉我这个方法已经很蠢了
萌萌哒的大耗子 2年前 回复TA
@harder 好
harder 2年前 回复TA
#include "stdio.h"

int main() {
	int a, b, c, m, n, t;
	scanf("%d%d%d", &a, &b, &c);
	m = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
	n = (a < b) ? ((a < c) ? a : c) : ((b < c) ? b : c);
	t = (a > b) ? ((b < c) ? c : b) : ((a < c) ? c : a);
	printf("%d %d %d", n, t, m);
	return 0;
}更新
harder 2年前 回复TA
@harder #include "stdio.h"  int main() { 	int a, b, c, m, n, t; 	scanf("%d%d%d", &a, &b, &c); 	m = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c); 	n = (a < b) ? ((a < c) ? a : c) : ((b < c) ? b : c); 	t = (a > b) ? ((b < c) ? c : b) : ((a < c) ? c : a); 	printf("%d %d %d", n, t, m); 	return 0; }#include "stdio.h"  int main() { 	int a, b, c, m, n, t; 	scanf("%d%d%d", &a, &b, &c); 	m = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c); 	n = (a < b) ? ((a < c) ? a : c) : ((b < c) ? b : c); 	t = (a > b) ? ((b < c) ? c : b) : ((a < c) ? c : a); 	printf("%d %d %d", n, t, m); 	return 0; }更新
harder 2年前 回复TA
#include "stdio.h"

int main() {
	int  i, j, t;
	char x[3];
	for (i = 0; i < 3; i++)
		scanf("%d", &x[i]);
	for (i = 0; i < 2; i++)
		for (j = 0; j < 3 - i; j++)
			if (x[j] > x[j + 1]) {
				t = x[j];
				x[j] = x[j + 1];
				x[j + 1] = t;
			}
	for (i = 0; i < 3; i++)
		printf("%d ", x[i]);
	return 0;
}
说我时间超限了0.0
harder 2年前 回复TA
@一块键盘 你可以自己在草稿本上画个逻辑图,还是蛮好理解的