回 帖 发 新 帖 刷新版面

主题:急啊,这怎么做啊!

(1)题的两个数相等的情况我用了while(a!=b)上机输入12,12,45,while似乎没起作用,程序始终在做比较运算!

一、对于求三个数的最大值问题
 1、原题答案: 

main() 

    int a,b,c,max; 
    printf("a,b,c=?"); 
    scanf("%d,%d,%d",&a,&b,&c); 
    max=a; 
    if(max<b) max=b; 
    if(max<c) max=c; 
    printf("the max value=%d",max); 
    getch(); 

    2、按同学们和思路修改后的程序: 

main() 

    int a,b,c,max; 
    printf("a,b,c=?"); 
    scanf("%d,%d,%d",&a,&b,&c); 
    if(a>b && a>c) max=a; 
    if(b>a && b>c) max=b; 
    if(c>a && c>b) max=c; 
    printf("the max value=%d",max); 
    getch(); 

算法解释:三个数中的最大值可以分成三种情况:a最大  b最大  c最大,因此可以判断某一个数与另外两个数之间的大小关系确定哪个数是最大值。  
语句 if(a>b && a>c) max=a; 的含义为:如果a>b而且a>c则最大值为a. 参见P91。 
其中: 运算 && 为逻辑与运算符,表示当两个条件同时成立时。参见教材第88页 5-2逻辑运算符与逻辑表达式(了解三种运算符)  
完善性问题: 
(1)、上述修改后的程序其实有问题的,即没有考虑到当三个数存在两个数相等的情况,应如何修改程序使其能够解决这一问题? 
(2)、对于求四个数的最大值问题,修改上述程序

回复列表 (共5个回复)

沙发

四个或者四个以上的数字求最大值,你最好把他放到一个数组中。
比如:
int a[100];
int max = a[0];
for(i = 1; i<100; i++)
{
  if(max<a[i])
    max = a[i];
}
这样程序看起来就简单了,省的你搞个abcd!

板凳

3 楼


如果数再多一点儿 我建议可以用函数!~

4 楼

对于楼主的问题,我觉得对于多个数求最大值可以数组的下标法求解!

5 楼

3个数的话~2个循环就OK了~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册