| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 904 人关注过本帖
标题:编写一个函数,int fun(int score[],int m,int below[])
只看楼主 加入收藏
我是殊帕面
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2014-3-30
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:15 
编写一个函数,int fun(int score[],int m,int below[])
如题编写一个int fun(int score[],int m,int below[])函数,score[]用来存放成绩,m代表学生人数,below[]用来存放低于平均分的成绩。
#include<stdio.h>
 int main()
 {
     int fun(int score[],int m,int below[]);
     int i,m,score[m],aver;
     printf("intput m:\n");
     scanf("%d",&m);
     printf("intput scores:\n");
     for(i=0;i<m;i++)
     scanf("%d",&score[i]);
    aver=fun(score,m,below);
    fun(score,m,below);
     for(i=0;i<m;i++)
     printf("%d",below[i]);
 }
 int fun(int score[],int m,int below[])
 {
     int sum=score[0],i,j=0,aver;
     for(i=1;i<m;i++)
     sum=sum+score[i];
     aver=sum/m;
     for(i=0;i<m;i++)
     if(score[i]<aver)
     below[j++]=score[i];
     return aver;
 }
error: `below' was not declared in this scope
warning: no newline at end of file
有好多错误但不知道要怎样改
搜索更多相关主题的帖子: include scores 
2014-04-02 13:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
得看多老舊的書才寫出這種代碼啊?

授人以渔,不授人以鱼。
2014-04-02 13:39
我是殊帕面
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2014-3-30
收藏
得分:0 
#include<stdio.h>
 int main()
 {
     int fun(int score[],int m,int below[]);
     int i,m,score[m],below[m];
     printf("intput m:\n");
     scanf("%d",&m);
     printf("intput scores:\n");
     for(i=0;i<m;i++)
     scanf("%d",&score[i]);
    m=fun(score,m,below);
     for(i=0;i<m;i++)
     printf("%d",below[i]);
 }
 int fun(int score[],int m,int below[])
 {
     int i,j=0,aver=0;
    for(i=0;i<m;i++)
    aver+=score[i];
     aver/=m;
    for(i=0;i<m;i++)
     if(score[i]<aver)
     below[j++]=score[i];
     return j;
  }
改了一下可是还是运行不了,有人可以教教我吗?
2014-04-02 14:06
Andrew_Lee
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:185
专家分:626
注 册:2014-3-21
收藏
得分:2 
程序代码:
 int i,m,score[m],below[m];

 printf("intput m:\n");

 scanf("%d",&m);



 改为:



 int i,m;

 printf("intput m:\n");

 scanf("%d",&m);

 int score[m],below[m];
最好将fun函数的声明放在main函数的外面,很少这样声明的。
收到的鲜花
  • 我是殊帕面2014-04-03 15:53 送鲜花  1朵   附言:我很赞同
2014-04-02 14:48
xiaozi2013
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:四川成都
等 级:蒙面侠
威 望:6
帖 子:830
专家分:4331
注 册:2013-12-13
收藏
得分:2 
最讨厌的就是一坨密密麻麻的代码,,,

还有就是丢丢注释都没有的

--整天敲那些破代码能找着媳妇儿吗。。。---
2014-04-02 15:06
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:2 
#include<stdio.h>
int main()
{
     int fun(int score[],int m,int below[]);
    int i,m,score[100],below[100];   //数组长度必须是常量

     printf("intput m:\n");
     scanf("%d",&m);

     printf("intput scores:\n");
     for(i=0;i<m;i++)
        scanf("%d",&score[i]);

    m=fun(score,m,below);

     for(i=0;i<m;i++)
        printf("%d  ",below[i]);
     printf("\n");

     return 0;
}
int fun(int score[],int m,int below[])
{
     int i,j=0;
     float aver=0;

    for(i=0;i<m;i++)
        aver+=score[i];
     aver/=m;

    for(i=0;i<m;i++)
        if(score[i]<aver)
            below[j++]=score[i];

     return j;
  }
收到的鲜花
  • 我是殊帕面2014-04-03 15:52 送鲜花  1朵   附言:我很赞同
2014-04-02 15:09
xiaozi2013
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:四川成都
等 级:蒙面侠
威 望:6
帖 子:830
专家分:4331
注 册:2013-12-13
收藏
得分:0 
int i,m,score[m],below[m];          //静态定义数组这么行么

--整天敲那些破代码能找着媳妇儿吗。。。---
2014-04-02 15:14
我是殊帕面
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2014-3-30
收藏
得分:0 
谢谢大家!我做出来了,第一次发帖,请见谅。
#include<stdio.h>
int main()
{
     int fun(int score[],int m,int below[]);
     int i,m;
     printf("intput the number of the students:\n");
     scanf("%d",&m);
     int score[m],below[m];
     printf("intput scores:\n");
     for(i=0;i<m;i++)
     scanf("%d",&score[i]);
     m=fun(score,m,below);
     printf("below average grades:\n");
     for(i=0;i<m;i++)
     printf("%d\n",below[i]);
     printf("the number of below average is:%d\n",m);
}
int fun(int score[],int m,int below[])
{
    int i,j=0,aver=0;
    for(i=0;i<m;i++)
    aver+=score[i];
    aver/=m;
    for(i=0;i<m;i++)
    if(score[i]<aver)
    below[j++]=score[i];
    return j;
  }
我只会这样做了(我是学渣),不知道大家有没有更好的方法呢?可以教我吗?
最后附上题目:m个人的成绩存放在score数组中,编写函数int fun(int score[],int m,int below[]),功能是将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。如score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10、20、30、40。
谢谢!!!
2014-04-02 17:18
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:2 
呃 发晚了呀。。。

程序代码:
/*编写一个函数,int fun(int score[],int m,int below[])
如题编写一个int fun(int score[],int m,int below[])函数,
score[]用来存放成绩,m代表学生人数,below[]用来存放低于平均分的成绩。*/
#include<stdio.h>
#include<stdlib.h>//为了包含exit(0)函数,这个函数就是结束程序。
int main()
{
    int fun(int score[], int m, int below[], int *pn);

    int i;
    int m;
    int n;         // 新增below数组元素个数变量
    int score[30]; // 数组的定义,[]里面必须是常量表达式,不能使用变量
    int below[30]; // 新加below的定义
    int aver;
    printf("intput m:\n");
    scanf("%d", &m);
    // 因为数组定义问题,所以这里加个判定吧
    if (m > 30)
    {
        printf("数组长度不够存储这么多学生。\n");// 这个是为了如果出现错误了,至少出现在哪。
        exit(0);
    }
    printf("intput scores:\n");
    for (i = 0; i < m; i++)
    { // 习惯问题不管if、else、for后面语句有多么少,最好都要{}把他们括起来
        scanf("%d", &score[i]);
    }
    aver = fun(score, m, below, &n);// 在上面的函数声明里面知道了,score是个int指针,同样
                                    // below也得是int指针类型的,参数传递是指针。不过你没有
                                    // 定义below。
    fun(score, m, below, &n);   // 这个是干神马用的。。上面那个语句不是已经执行过一次了么
    
    for (i = 0; i < n; i++)
    {  // 知道你这个是为了输出低于平均分的成绩,但是你并不知道个数,所以计数变量i
       // 该怎么变化,是不能直接用m的。该如何变化应该在存入的时候计数出来,然后用fun()
       // 返回。不过鉴于fun()已经返回平均值aver了,所以改变一下思路~~在fun()的形式参数
       // 里面增加一个n,这个n就是below数组里面的元素个数了,传递n的地址,这样在fun()
       // 里面就能改变主函数main()里面n的值。
        printf("%-4d", below[i]); // 输出格式如果是"%d"那么结果会全部挨着
    }
}

int fun(int score[], int m, int below[],int *pn)
{ // 这里增加below数组的元素个数n的指针,这是个int型

    // 变量定义
    int sum = score[0];
    int i;
    int j = 0;  // 下面j没有初始化为0,所以现在这里变了。
    int aver;

    for (i = 0; i < m; i++)
    {  // 求和计数应该从score的第一个元素score[0]开始
        sum=sum+score[i];
    }
    aver=sum/m; // 这里注意一个问题,sum/m的值在这里是个int型,但实际上却不一定。

    for (i = 0; i < m; i++)
    {  
        if(score[i] < aver)
        {
            below[j++] = score[i];
        }
    }
    *pn = j; // 把n的值附上
    return aver;
}
收到的鲜花
  • 我是殊帕面2014-04-03 15:52 送鲜花  1朵   附言:我很赞同

未知令人期待!
2014-04-02 17:57
LCwan
Rank: 2
等 级:论坛游民
帖 子:9
专家分:15
注 册:2014-4-1
收藏
得分:2 
本人新手参考各位大神的自己改了点,可好像还是有两个问题,希望大神能帮忙解决,我希望在输入score[]数组时,printf("intput score[i]:\n");里i的值可以变化自加。。。还有就是在输出printf("%d\n",below[i]);结果时最后还会带一串乱码,怎么解决呀。。。希望得到指导,谢谢
#include<stdio.h>
 int main()
 {
      int fun(int score[],int m,int below[]);
      int i,m,score[100],aver,below[100];
      printf("intput m:\n");
      scanf("%d",&m);
      for(i=0;i<m;i++)
      {printf("intput score[i]:\n");
      scanf("%d",&score[i]);}
     aver=fun(score,m,below);
     fun(score,m,below);
      for(i=0;i<=aver;i++)
      printf("%d\n",below[i]);
      printf("%d\n",aver);
 }
 int fun(int score[],int m,int below[])
 {
      int sum=score[0],i,j=0,aver;
      for(i=1;i<m;i++)
      sum+=score[i];
      aver=sum/m;
      for(i=0;i<m;i++)
      if(score[i]<aver)
      below[j++]=score[i];
      return j;
 }
2014-04-02 22:47
快速回复:编写一个函数,int fun(int score[],int m,int below[])
数据加载中...
 
   



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

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