从键盘输入三个整数x,y和z,按从大到小的顺序输出它们的值。
输入
输入三个整数x,y和z。
输出
按从大到小的顺序输出它们的值。
样例输入 复制
20 16 18
样例输出 复制
20 18 16
自己的思路 :首先找到最大的,然后在嵌套找到第二大的
#include<stdio.h>
#include<math.h>
#define k 50
int main()
{
int m,n,p;
scanf("%d%d%d",&m,&n,&p);
//思路首先找到最大的,然后在嵌套找到第二大的
if(n>=m&&n>=p)//如果n是最大的
{
if(m>p)
{
printf("%d %d %d",n,m,p);
}
else
{
printf("%d %d %d",n,p,m);
}
}
if(p>=m&&p>=n)
{
if(m>n)
{
printf("%d %d %d",p,m,n);
}
else
{
printf("%d %d %d",p,n,m);
}
}
if(m>=n&&m>=p)
{
if(n>p)
{
printf("%d %d %d",m,n,p);
}
else
{
printf("%d %d %d",m,p,n);
}
}
return 0;
}
方法一
#include<stdio.h>
int main()
{
int a,b,c,temp; //temp作为中间值
printf("请分别输入a,b,c的值:\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a > b)
{
temp = a; //先把a赋值给temp 这样才能实现转换
a = b; //若没有temp这个变量,把a赋值给b,那么b=a,如果再把b赋值给a,
//那么a依旧是原本的a,依旧>b,达不到咱们转换的效果。
b = temp; //最后把temp的值赋给b 达到 a与b两个值互换的结果
}
if(a > c)
{
temp = a;
a = c;
c = temp;
}
if(b > c)
{
temp = b;
b = c;
c = temp;
}
printf("%d,%d,%d\n",a,b,c);
return 0;
}
方法二
#include<stdio.h>
int main()
{
int a,b,c,max=0,min=0;
scanf("%d%d%d",&a,&b,&c);
max=(a>b?a:b)>c? (a>b?a:b):c;
min=(a<b?a:b)<c? (a<b?a:b):c;
printf("%d %d %d ",min,(a+b+c)-max-min,max);
return 0;
}
方法三
#include<stdio.h>
int main()
{
int a,b,c,max=0,cen=0,min=0;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
max=a>c?a:c;
min=b>c?c:b;
}
else
{
max=b>c?b:c;
min=a>c?c:a;
}
printf("%d %d %d ",max,a+b+c-min,min);
return 0;
}
方法四 提升版(指针)
#include<stdio.h>
int main()
{
int one(int * a1,int * a2,int * a3);
int a,b,c, * p1, * p2, * p3;
printf("请任意输入三个整数:\n");
scanf("%d%d%d",&a,&b,&c);
p1 = &a;
p2 = &b;
p3 = &c;
one(p1,p2,p3);
printf("max=%d middle=%d min=%d",a,b,c);
}
int one(int * a1,int * a2,int * a3)
{
int two(int * aq1,int * aq2);
if( * a1 > * a2)
{
two(a1,a2);
}
if(* a1 > * a3)
{
two(a1,a3);
}
if(* a2 > * a3)
{
two(a2,a3);
}
}
int two(int * aq1,int * aq2)
{
int temp;
temp = * aq1;
* aq1 = * aq2;
* aq2 = temp;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)