标题:求助:关于一维数组的运用
只看楼主
szweifj
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2010-2-10
结帖率:75%
已结贴  问题点数:20 回复次数:4 
求助:关于一维数组的运用
程序运行可以通过,但是显示 Math[MAX]和Average[MAX]的值均为 0,不太明白,请大家帮我看看是哪里错了,谢谢!!

#include<stdio.h>
#define MAX 50
void main()
{
    int StuNum,i,Chinese[MAX],Math[MAX],English[MAX];
    long StuID[MAX];
    float Average[MAX],AverClass;
    while(1)
    {
        printf("How many students are in your class?\n");
        scanf("%d",&StuNum);
        if(StuNum<1||StuNum>MAX)
        {
            printf("StudentNum must be between 1 and %d.Press any key to continue\n",MAX);
            getch();
        }
        else
        {
            break;
        }
    }

    printf("Please input a StudentID and three scores:\n");
    printf("    StudentID  Chinese  Math    English\n");
    for(i=0;i<StuNum;i++)
    {
        printf("No.%d>",i+1);
       scanf("%ld%d%d%d",&StuID[i],&Chinese[i],&Math[i],&English[i]);
        Average[i]=(Chinese[i]+Math[i]+English[i])/3;
    }

    for(AverClass=0,i=0;i<StuNum;i++)
    {
        AverClass+=Average[i];
    }
    AverClass/=StuNum;

    puts("\nStudentNum    Chinese   Math   English  Average");
    puts("-------------------------------------------------");

    for(i=0;i<StuNum;i++)
    {
        printf("%9ld %9d %9d %9d %9.1f\n",StuID[i],Chinese[i],Math[i],English[i],Average[i]);
    }
    puts("-------------------------------------------------");
    printf("Average of the Class =%.2f\n",AverClass);
    puts("Press any key to return");
    getch();
}
搜索更多相关主题的帖子: long continue Chinese between include 
2010-03-20 16:03
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:20 
Average[i]=(Chinese[i]+Math[i]+English[i])/3;

首先进行的是3个整型  所以 对结果进行下强制转换 (float)

for(AverClass=0,i=0;i<StuNum;i++)
    {
        AverClass+=Average[i];
    }
每次循环后 AverClass都被重新赋值 为0;AverClass/=StuNum;浮点 和整型
建议此题 用结构体!
2010-03-20 16:18
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
得分:0 
不知楼主用的是什么编译器,我用vc,gcc跑除了精度外,结果都是正确的,并没有出现显示 Math[MAX]和Average[MAX]的值均为 0的情况
还有楼上说的“每次循环后 AverClass都被重新赋值 为0”。。。据我所知,for循环第一个分号前面的内容只在循环第一次运行时才会执行,即初始化。。。
2010-03-20 17:18
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:0 
以下是引用ldg628在2010-3-20 17:18:34的发言:

不知楼主用的是什么编译器,我用vc,gcc跑除了精度外,结果都是正确的,并没有出现显示 Math[MAX]和Average[MAX]的值均为 0的情况
还有楼上说的“每次循环后 AverClass都被重新赋值 为0”。。。据我所知,for循环第一 ...
我是菜鸟 学习了!
2010-03-20 18:23
csj_65
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:63
专家分:163
注 册:2010-3-12
得分:0 

这是用vc++运行的结果,程序没问题,我只是把两个getch()给去掉了,应该没什么大碍。
2010-03-20 18:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-300000-1-1.html




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

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