标签:排列 最大值 src alt png 多个 amp \n 需求
我们通常会遇到比较几个数的大小的问题。具体来说是比较大小后将两个数交换,但是有人通过if(a>b)[printf("%d",a)} else {printf("%d",b)}的方式避开来数字交换的步骤,但那不是适合于比较多个数,在c语言中我们通常用比较后交换数值来将数字按大小排序。交换就像将两个杯子里的不同液体交换,需要哪一个空杯子来装第一杯液体,然后将第二杯液体倒在第一个空杯子中,再将取来的杯子中的液体倒在第二杯中。这样这两个杯子中的液体就相互交换了。一个简单的代码说明。
#include<stdio.h>
int main()
{
int a,b,t;
printf("输入两个数,它们将从小的大排列:");
scanf("%d,%d",&a,&b);
if(a>b){
t=a;
a=b;
b=t;
}
printf("%d,%d\n",a,b);
return 0;
}
也可以将关系符换一下求从大到小的数,主要是弄请引入的变量t的意义。再来一个列子比较三个数的大小,并输出。
也可以通过if_else形式
#include<stdio.h>
int main()
{
int a,b,c;
printf("请输入3个整数");
printf("将输出最大数:");
scanf("%d,%d,%d",&a,&b,&c);
if(a<b){
if(b<c)
printf("max=%d\n",c);
else{
printf("max=%d\n",b);
}
}
else{
if(a<c){
printf("max=%d",c);
}
else{
printf("max=%d",a);
}
}
return 0;
}
或是三目运算符的方式
#include<stdio.h>
int main()
{
int a,b,c,temp,max;
printf("请输入3个整数");
printf("将输出最大数:");
scanf("%d,%d,%d",&a,&b,&c);
temp=(a>b)?a:b;
max=(temp>c)?temp:c;
printf("3个整数的最大数是%d\n",max);
return 0;
}
通过多种的比较发散的思维看待问题将更加的清晰明白。相同的求四个数的最大值也差不多。
#include<stdio.h>
int main()
{
int t,a,b,c,d;
printf("输入4个整数,它们将从小的大输出:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);
if(a>b){
t=a;
a=b;
b=t;
}
if(a>c){
t=a;
a=c;
c=t;
}
if(a>d){
t=a;
a=d;
d=t;
}
if(b>c){
t=b;
b=c;
b=t;
}
if(b>d){
t=b;
b=d;
d=t;
}
if(c>d){
t=c;
c=d;
d=t;
}
printf("排列顺序如下:\n");
printf("%d %d %d %d\n",a,b,c,d);
return 0;
}
也可以用三目运算符来求最值,具体情况根据需求。
#include<stdio.h>
int main()
{
int a,b,c,d,temp,max,end;
printf("请输入4个整数");
printf("它们将输出最大值:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
temp=(a>b)?a:b;
max=(temp>c)?temp:c;
end=(max>d)?max:d;
printf("最大的数是%d\n",end);
return 0;
}
如果还想求更多的数,那用目前的方法肯定是不行的,这就需要算法来帮忙了。
标签:排列 最大值 src alt png 多个 amp \n 需求
原文地址:https://www.cnblogs.com/Goerage/p/9479017.html