2 gudong1996 gudong1996 于 2016.04.17 01:51 提问

新人问一个有关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){}的开头处有错

4个回答

herozhangbz
herozhangbz   2016.04.17 07:41
已采纳

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

Ammon_Zhang
Ammon_Zhang   2016.04.17 08:56

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

caozhy
caozhy   Ds   Rxr 2016.04.17 02:34
 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
CSDNXIAOD
CSDNXIAOD   2016.04.17 02:02

C语言一个雷人的问题
一个C语言问题
一个C语言的问题
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!