解题思路和注意事项:


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


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

zyj 4年前 回复TA
@莺时无念 #include <stdio.h> void min(int a[],int b); main () { 	int a[3]; 	for(int i=0;i<3;i++) 	scanf("%d",&a[i]); 	min(a,3); 	int i; 	for(i=0;i<2;i++) 	printf("%d ",a[i]); 	printf("%d",a[i]); } void min(int a[],int b) { 	for (int i=0;i<b-1;i++) 	{ 		for (int j=0;j<b-i;j++) 		{ 			if(a[j]>a[j+1]) 			{ 				int t; 				t=a[j]; 				a[j]=a[j+1]; 				a[j+1]=t; 				 			} 		} 	} }//为啥错误50%
程序员不脱发 5年前 回复TA
#include<stdio.h>
int main()
{
	int a,b,c;
	scanf("%d %d %d", &a, &b, &c);
	if(a>b){
	    if(b>c){
	        printf("%d %d %d",c,b,a);
	    }
	    else{
	        if(a>c){
	             printf("%d %d %d",b,c,a);
	        }
	        else{
	            printf("%d %d %d",b,a,c);
	        }
	    }
	   
	}
	else{
	    if(a>c){
	        printf("%d %d %d",c,a,b);
	    }
	    else{
	        if(b>c){
	            printf("%d %d %d",a,c,b);
	        }
	        else{
	            printf("%d %d %d",a,b,c);
	        }
	    }
	}
	return 0;
}
莺时无念 5年前 回复TA
#include <stdio.h>
void min(int a[],int b);
main ()
{
	int a[3];
	for(int i=0;i<3;i++)
	scanf("%d",&a[i]);
	min(a,3);
	for(int i=0;i<3;i++)
	printf("%-2d",a[i]);
}
void min(int a[],int b)
{
	for (int i=1;i<=b-1;i++)
	{
		for (int j=0;j<b-i;j++)
		{
			if(a[j]>a[j+1])
			{
				int t;
				t=a[j];
				a[j]=a[j+1];
				a[j+1]=t;
				
			}
		}
	}
}//为啥错误50%
未来 5年前 回复TA
@未来 我知道了=-=中间值错误
未来 5年前 回复TA
#include<stdio.h>
int main()
{
	int a,b,c,D,Z,X;
	scanf("%d%d%d",&a,&b,&c);
	D=(a>b?a:b)>c?(a>b?a:b):c;
	X=(a<b?a:b)<c?(a<b?a:b):c;
	Z=b>c?(b<a?a:(c>a?c:a)):(b>a?b:(a>c?c:a));
	printf("%d %d %d\n",X,Z,D);
	return 0;
}
为什么答案错误50?
cpython3 6年前 回复TA
//C++求解,喜欢C++的可以参考下哈
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
	int a;     vector<int> vec; 
	for(int i=0;i<3; i++)
	{
		cin>>a;
		vec.push_back(a);
	}
	sort(vec.begin(),vec.end());
	for(int i=0; i<3; i++)
		cout<<vec[i]<<" ";
	return 0;
}
湖畔读书人 6年前 回复TA
@helloxian @shixiuxian 已修改,谢谢。
湖畔读书人 6年前 回复TA
@helloxian 很感谢指出,的确是有误,错误的地方在(a<c?(b<c?b:c):(b>c?b:c)),应把(b<c?b:c)换成a即可,因为在后面的逻辑中a已经是不小于b了,如果再小于c输出a就可以了。
helloxian 6年前 回复TA
@helloxian a>b?(a<c?a:(b>c?b:c)):(a>c?a:(b>c?c:b))
helloxian 6年前 回复TA
@helloxian 写错了 是a>b?(a<c?a:(b>c?b:c)):(a>c?a:(b>c?c:b))