还好,只有四个整数,若更多的话那可就麻烦了,这个最好用数组来处理。
楼上的固然正确,不过第八行不要这样子写:max=min=a;最好分开来写成:max=a;min=a; 要养成良好的编程习惯。
对于这个题而言,我会这样写(不用数组):
#include
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
}
楼主理解一下看看,其实max、min两句都是三目运算的条件表达式嵌套使用,相当于if语句,呵呵!
#include
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 max1=max2; if(min1>min2) min1=min2; printf("最大值是%d\n",max1); printf("最小值是%d\n",min1); return 0; }
楼上的计算量都比较大吧。
我个人觉的a b c d 四个数
先 a 与 b 比较 得到 把其较小值 与 其 较大值存于变量中(min1 max1)
再 c 与 d 比较 得到 把其较小值 与 其 较大值存于变量中(min2 max2)
再 min1 与 min2 比较得到最小值
再 max1 与 max2 比较得到最大值
只要比较四次就可得到结果。
(以最坏运算次数比较)
如有不当,望能指出。谢谢
#include
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
printf("4个数中最大值为:%d 最小值为%d\n",max,min);
}
运行结果:
输入4个整数:34 2 32 1
4个数中最大值为:34 最小值为1
Press any key to continue
还好,只有四个整数,若更多的话那可就麻烦了,这个最好用数组来处理。
楼上的固然正确,不过第八行不要这样子写:max=min=a;最好分开来写成:max=a;min=a;
要养成良好的编程习惯。
对于这个题而言,我会这样写(不用数组):
#include
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
}
楼主理解一下看看,其实max、min两句都是三目运算的条件表达式嵌套使用,相当于if语句,呵呵!