A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dream静 中级黑马   /  2014-11-7 15:09  /  916 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//输入5个学生的成绩(保证分数在0~100)之间,算出平均分,最高分,最低分,然后输出

//计算平均值
int average(int array[],int n)
{
    int sum = 0;
    for (int i = 0; i <= n ; i++) {
        sum += array[i];
    }
    return sum/5;
}

//计算最大值
int Max(int array[],int n)
{
    int max = array[0];
    for (int i = 0; i <= n; i++) {
        if (array[i] > max) {
            max = array[i];
        }
    }
    return max;
}

//计算最小值
int low(int array[],int n){
    int min =array[0];
    for (int i = 0;i <= n;i++){
        if(array[i]< min){
            min = array[i];
        }
    }
    return min;
}

int main(){

   
    int score[5] = {-1,-1,-1,-1,-1};
    for (int i = 0;i < 5;i++) {
        while (score[i] < 0 || score[i] > 100) {
            printf("请输入第%d个学生的成绩:\n",i+1);
            scanf("%d",&score[i]);
        }
    }
   
    int length = sizeof(score)/sizeof(int);
   
    printf("%d\n",length);
   
    int a = average(score, length);
   
    int b = Max(score, length);
   
    int c = low(score,length);
   
    printf("平均分是%d,最高分是%d,最低分是%d\n",a,b,c);
   
    return 0;
}

为什么最低分输出是对的,而最高分和平均分输出缺是错的啊

3 个回复

倒序浏览
我觉得三个结果都应该是错的吧!应该把三个算法过程中的for循环i <= n;改成i < n;你之前的算法都多循环了一次,已经测试过了,改了之后结果正常!
回复 使用道具 举报
谢谢了啊!SB了这都没看到
回复 使用道具 举报
dream静 发表于 2014-11-7 16:50
谢谢了啊!SB了这都没看到

不够仔细
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马