湖畔读书人


私信TA

用户名:2814787590

访问量:128134

签 名:

等  级
排  名 21
经  验 19782
参赛次数 0
文章发表 42
年  龄 0
在职情况 学生
学  校 武汉东湖学院
专  业

  自我简介:

解题思路和注意事项:


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


最小数:(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;
}


 

0.0分

106 人评分

  评论区

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;
}
2020-03-15 09:07:10
#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知道错在哪啊?!)
谨记 单一出口原则,并尽可能对代码进行封装。
2020-02-18 14:39:05
#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;
}
2019-11-03 20:20:44
#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%
2019-10-20 15:07:04
#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?
2019-08-04 17:18:36
//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;
}
2018-12-21 23:38:22
刚以为是写复杂了  a作为中间数的时候 你的逻辑是错的 可以试试
2018-05-04 10:35:37
感觉中间数写的有点复杂了 	a>b?(a<c?a:(b>c?c:b)):(a>c?a:(b>c?c:b)) 这样就好了
2018-05-04 10:31:30