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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© WANGJIAO 中级黑马   /  2014-10-21 21:25  /  1424 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 WANGJIAO 于 2014-10-21 22:33 编辑

今天学完数组和字符串,有个练习不会做,请大家帮忙看下错在哪里?另外,如果学生的个数不确定该怎么做?

  1. //提示输入5个学生的成绩,算出平均分、最高分、最低分,然后输出
  2. #include <stdio.h>
  3. int max(int score);
  4. int min(int score);
  5. int averge(int score);
  6. int main(){
  7.    
  8.    //定义一个数组来储存成绩
  9.     int score[5];
  10.     //接收数据
  11.     for (int i = 0; i<5; i++) {
  12.         //提示输入成绩
  13.         printf("请输入第%d个学生的成绩:\n",i+1);
  14.         scanf("%d",&score[i]);
  15.     }
  16.    
  17.     //分别定义变量a,b,c
  18.     int a = averge(score);
  19.     int b = max(score);
  20.     int c = min(score);
  21.     //输出相应值
  22.     printf("平均分=%d\n最大值=%d\n最小值=%d\n",a,b,c);
  23.     return 0;
  24. }
  25. //求平均数
  26. int averge(int score[]){
  27.          int sum;
  28.     for (int i = 0; i<5; i++) {
  29.         sum +=score[i];
  30.     }
  31.    
  32.    return sum/5;
  33. }
  34. //求最大值
  35. int max(int score[]){
  36.     int max = score[0];
  37.     for (int i = 0; i<5; i++) {
  38.         if (max < score[i]) {
  39.             max = score[i];
  40.             return max;
  41.         }
  42.         return max;
  43.     }
  44. }

  45. //求最小值
  46. int min(int score[]){
  47.     int min= score[0];
  48.     for (int i = 0; i<5; i++) {
  49.         if (min > score[i]) {
  50.             min = score[i];
  51.             return min;
  52.         }
  53.         return min;
  54.     }
  55. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

9 个回复

倒序浏览
写出来居然错误百出,真是不知道怎么找了,求教ING……
回复 使用道具 举报
代码错误应该直接从编译器拷贝出来,学生不确定数,就是数组不确定,给个最大值即可
回复 使用道具 举报
  1. //提示输入5个学生的成绩,算出平均分、最高分、最低分,然后输出
  2. #include <stdio.h>
  3. int max(int *p);
  4. int min(int *p);
  5. double averge(int *p);
  6. int main(){
  7.    
  8.    //定义一个数组来储存成绩
  9.     int score[5];
  10.     //接收数据
  11.     for (int i = 0; i<5; i++) {
  12.         //提示输入成绩
  13.         printf("请输入第%d个学生的成绩:\n",i+1);
  14.         scanf("%d",&score[i]);
  15.     }
  16.    
  17.     //分别定义变量a,b,c
  18.     double a = averge(score);
  19.     int b = max(score);
  20.     int c = min(score);
  21.     //输出相应值
  22.     printf("平均分=%f\n最大值=%d\n最小值=%d\n",a,b,c);
  23.     return 0;
  24. }
  25. //求平均数
  26. double averge(int *p){
  27.          //int sum;
  28.         double sum = 0;//改成double  分数最好都定义成double吧
  29.     for (int i = 0; i<5; i++) {
  30.         sum +=p[i];
  31.     }
  32.    
  33.    return sum/5;
  34. }
  35. //求最大值
  36. int max(int *p){
  37.     int max = p[0];
  38.     for (int i = 1; i<5; i++) {
  39.         if (max < p[i]) {
  40.             max = p[i];
  41.             //return max;
  42.         }
  43.         return max;
  44.     }
  45. }

  46. //求最小值
  47. int min(int *p){
  48.     int min= p[0];
  49.     for (int i = 1; i<5; i++) { //从1开始
  50.         if (min > p[i]) {
  51.             min = p[i];
  52.            // return min; //这句话你想干嘛 可以删掉
  53.         }
  54.       
  55.     }
  56.          return min;//位置
  57. }
复制代码


数组大小未知 你输入的时候就得判断啊  你去看看动态分配数组长度吧 malloc那几个函数
回复 使用道具 举报
人家说要找错...不是帮忙做...你们让人家知道错在哪里了啊.

printf("请输入第%d个学生的成绩:\n",i+1);
标点符号,尤其刚开始基础学习得时候,一定要注意,否则你真找不到错在哪里了.建议你把输入法设置一下,中文状态下输入得是英文得标点.这是第一个.
回复 使用道具 举报
函数声明得时候要把"{"之前的内容全都声明上:
int max(int score);
int max(int score[]); 你声明的函数不存在,当然报错 这里解决三个错误.

//求最大值
int max(int score[]){
    int max = score[0];
    for (int i = 0; i<5; i++) {
        if (max < score[i]) {
            max = score[i];
        }
    }
        return max;
}
这里控制语句结束后才是你需要得结果,这时候再返回..

另外楼上的同学...这位同学刚学到函数...还没学到指针...你这么给他修改,他更迷糊啦.哈哈

评分

参与人数 1黑马币 +1 收起 理由
WANGJIAO + 1 赞一个!

查看全部评分

回复 使用道具 举报
LeeWong 发表于 2014-10-21 23:54
数组大小未知 你输入的时候就得判断啊  你去看看动态分配数组长度吧 malloc那几个函数 ...

那是什么……还没学到那里去{:2_39:}
回复 使用道具 举报
LeeWong 中级黑马 2014-10-22 11:51:34
8#
WANGJIAO 发表于 2014-10-22 11:45
那是什么……还没学到那里去

额 不好意思 没考虑到这一点  嘿嘿
回复 使用道具 举报
ench44 发表于 2014-10-22 01:42
函数声明得时候要把"{"之前的内容全都声明上:
int max(int score);
int max(int score[]); 你声明的函数不 ...

谢谢找错~函数声明我记得是可以省略形参的,结果写了个不伦不类,数组作为函数参数不是传递地址吗,数组名字又可以表示数组地址,所以就搞混了,真纽……
回复 使用道具 举报
ench44 发表于 2014-10-22 01:42
函数声明得时候要把"{"之前的内容全都声明上:
int max(int score);
int max(int score[]); 你声明的函数不 ...

刚改好了,居然错的这么简单,还是你厉害啊,一眼就看出来了,赞一个~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马