| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 472 人关注过本帖
标题:这个max的值为什么不对呢?
只看楼主 加入收藏
斋宅窄寨
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2014-1-20
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
这个max的值为什么不对呢?
这是代码:
#include<stdio.h>
struct student{int l;int w;int h;char name[9];} stu[9];
int main(){
    int a,i,max,min,dn,xn;
    int b[9];
    scanf("%d\n",&a);
    max=min=b[0];
        if(a!=-1){
        for(i=0;i<a;i++){
    scanf("%d %d %d %s\n",&stu[i].l,&stu[i].w,&stu[i].h,stu[i].name);
        b[i]=stu[i].l*stu[i].w*stu[i].h;
          if(b[i]<=min){
                min=b[i];
                xn=i;
            }
            if(b[i]>=max){
                max=b[i];
                dn=i;
            }
      printf("%d %d %d %s\n",stu[i].l,stu[i].w,stu[i].h,stu[i].name);
      printf("%d %d\n",max,min);
        }
        
    }
    else return 0;
    return 0;
}

输入:
3
10 10 2 Jill
5 3 10 Will
5 5 10 Bill
输出却是:
10 10 2 Jill
134513513 200
5 3 10 Will
134513513 150
5 5 10 Bill
134513513 150

为什么min的值正确,而max的值却不对呢?
搜索更多相关主题的帖子: include 
2014-01-24 17:37
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:0 
回复 楼主 斋宅窄寨
。。。时隔一年俺又回到论坛。。
LZ应该刚接触不久....max值不对是因为里面是一个垃圾值,强烈建议对数组初始化
2014-01-25 07:49
斋宅窄寨
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2014-1-20
收藏
得分:0 
回复 2楼 爱闹的娃
那min为什么是对的呢?
2014-01-25 08:33
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:0 
回复 3楼 斋宅窄寨
垃圾值...谁知道里面的大小呢...
2014-01-25 11:04
xp0213
Rank: 7Rank: 7Rank: 7
来 自:湖北武汉
等 级:黑侠
威 望:1
帖 子:222
专家分:524
注 册:2011-10-26
收藏
得分:10 
你还是看看书吧,首先不说你的代码,scanf("%d\n",&a);    scanf("%d %d %d %s\n",&stu[i].l,&stu[i].w,&stu[i].h,stu[i].name);  有这样写的吗?

    int b[9];
    scanf("%d\n",&a);
    max=min=b[0];
这样赋值在后来的比较中会出现,因为你无法确定b[0]的值是多少的。

总之,感觉你的逻辑错误,下面是我修改后的代码,你看看。

#include<stdio.h>
struct student
{
    int l;
    int w;
    int h;
    char name[9];
} stu[9];

void main()
{
    int a,i,max,min,dn,xn;
    int b[9]={0};

    scanf("%d",&a);

        for(i=0;i<a;i++)
            {
                scanf("%d%d%d%s",&stu[i].l,&stu[i].w,&stu[i].h,stu[i].name);
                b[i]=stu[i].l*stu[i].w*stu[i].h;      
            }

            max=min=b[0];

            for(i=0;i<a;i++)
            {
                if(b[i]<min)
                {
                    min=b[i];
                    xn=i;
                }
                if(b[i]>max)
                {
                    max=b[i];
                    dn=i;
                }
            }
        printf("min: %d %d %d %s\n",stu[xn].l,stu[xn].w,stu[xn].h,stu[xn].name);
        printf("max: %d %d %d %s\n",stu[dn].l,stu[dn].w,stu[dn].h,stu[dn].name);
        
}
2014-01-25 16:05
xp0213
Rank: 7Rank: 7Rank: 7
来 自:湖北武汉
等 级:黑侠
威 望:1
帖 子:222
专家分:524
注 册:2011-10-26
收藏
得分:0 
这样赋值在后来的比较中会出错,因为你无法确定b[0]的值是多少的。



不好意思,打错字了
2014-01-25 16:24
斋宅窄寨
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2014-1-20
收藏
得分:0 
回复 6楼 xp0213
嗯,谢谢。
2014-01-25 22:53
快速回复:这个max的值为什么不对呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035687 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved