gudong1996
gudong 1996
2016-04-16 17:51
采纳率: 50%
浏览 1.4k
已采纳

新人问一个有关c语言的问题

输入num名学生的成绩并计算平均数
请问我的代码哪错了?我看了好久不知道怎么改

#include
#include
#define n 40

float Average(int a[],int n);
void Readscore(int a[],int n);
int main()
{
int a[n];
float aver,num;
printf("人数:");
scanf("%d", &num);
Readscore(a,num);
aver=Average(a,num);
printf("%f",aver);
return 0;
}
//读取学生成绩
void Readscore(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("请输入成绩:\n");
scanf("%d",&a[i]);
}
}
//计算平均数
float Average(int a[],int n)
{
int i,sum=0;
float aver;
for(i=0;i<n;i++)
{
sum=sum+a[i];
}
aver=(float)sum/n;
return aver;
}
编译器提示:
1.float Average(int a[],int n);
void Readscore(int a[],int n);
这两句声明里的错误:数字常量之前的语法错误
2.Readscore函数scanf那行有错
3.sum=sum+a[i] 那行有错
4.下面开始写float Average(int a[],int n){}
void Readscore(int a[],int n){}的开头处有错

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • herozhangbz
    herozhangbz 2016-04-16 23:41
    已采纳

    你的两个函数里的参数变量错了,你已经在文件头声明n是常数,后面两个函数定义的时候又int n这本身编译不会错,但是你使用函数的时候是把那个作为传参变量使用。所以你函数里你可以换个名字,比如int m

    点赞 评论
  • caozhy
     float aver,num;
    ->
    float aver;
    int num;
    
    aver=(float)sum/n;
    ->
    aver=(float)sum/(float)n;
    
    float Average(int a[],int n)两处
    ->
    float Average(int * a,int n)
    
    void Readscore(int a[],int n)两处
    ->
    void Readscore(int * a,int n)
    
    其它没什么问题,如果是VC++ 2012/13/15,默认不许使用scanf,修改为scanf_s
    
    点赞 评论
  • Ammon_Zhang
    GiveUping 2016-04-17 00:56

    #define n 40 全局的宏定义以后,后面的n都是40了

    点赞 评论

相关推荐