用C编写一个程序从用户输入的四个整数中找出最大和最小值

用C语言编写一个程序,从用户输入的四个整数中找到最大和最小的那两个值,用if语句,求高人指点

还好,只有四个整数,若更多的话那可就麻烦了,这个最好用数组来处理。
楼上的固然正确,不过第八行不要这样子写:max=min=a;最好分开来写成:max=a;min=a; 要养成良好的编程习惯。
对于这个题而言,我会这样写(不用数组):

#include<stdio.h>
main()
{
int a,b,c,d,max,min;
printf("input 4 numbers:");
scanf("%d%d%d%d",&a,&b,&c,&d);
max=a>(b>(c>d?c:d)?b:(c>d?c:d))?a:(b>(c>d?c:d)?b:(c>d?c:d));
min=a<(b<(c<d?c:d)?b:(c<d?c:d))?a:(b<(c<d?c:d)?b:(c<d?c:d));
printf("max=%d\nmin=%d",max,min);
}

楼主理解一下看看,其实max、min两句都是三目运算的条件表达式嵌套使用,相当于if语句,呵呵!
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-12-25

#include<stdio.h>

int main(void)

{ int a,b,c,d,max1,min1,max2,min2;

printf("请输入四位整数:");

scanf("%d %d %d %d",&a,&b,&c,&d);

if(a>b)

{max1=a;min1=b;}

else

{max1=b;min1=a;}

if(c>d)

{max2=c;min2=d;}

else

{max2=d;min2=c;}

if(max1<max2)

max1=max2;

if(min1>min2)

min1=min2;

printf("最大值是%d\n",max1);

printf("最小值是%d\n",min1);

return 0;

}


本回答被网友采纳
第2个回答  2010-06-13
楼上的计算量都比较大吧。
我个人觉的a b c d 四个数

先 a 与 b 比较 得到 把其较小值 与 其 较大值存于变量中(min1 max1)
再 c 与 d 比较 得到 把其较小值 与 其 较大值存于变量中(min2 max2)
再 min1 与 min2 比较得到最小值
再 max1 与 max2 比较得到最大值

只要比较四次就可得到结果。
(以最坏运算次数比较)
如有不当,望能指出。谢谢
第3个回答  2010-06-13
#include<stdio.h>
void main()
{
int a,b,c,d;
int max,min;
printf("输入4个整数:");
scanf("%d%d%d%d",&a,&b,&c,&d);
max=min=a;
if(b>max)max=b;
if(c>max)max=c;
if(d>max)max=d;

if(b<min)min=b;
if(c<min)min=c;
if(d<min)min=d;

printf("4个数中最大值为:%d 最小值为%d\n",max,min);
}

运行结果:
输入4个整数:34 2 32 1
4个数中最大值为:34 最小值为1
Press any key to continue
第4个回答  2020-06-16
还好,只有四个整数,若更多的话那可就麻烦了,这个最好用数组来处理。
楼上的固然正确,不过第八行不要这样子写:max=min=a;最好分开来写成:max=a;min=a;
要养成良好的编程习惯。
对于这个题而言,我会这样写(不用数组):
#include<stdio.h>
main()
{
int
a,b,c,d,max,min;
printf("input
4
numbers:");
scanf("%d%d%d%d",&a,&b,&c,&d);
max=a>(b>(c>d?c:d)?b:(c>d?c:d))?a:(b>(c>d?c:d)?b:(c>d?c:d));
min=a<(b<(c<d?c:d)?b:(c<d?c:d))?a:(b<(c<d?c:d)?b:(c<d?c:d));
printf("max=%d\nmin=%d",max,min);
}
楼主理解一下看看,其实max、min两句都是三目运算的条件表达式嵌套使用,相当于if语句,呵呵!
相似回答