c语言输入一个学生的10门课成绩,输入成绩求平均值。下面程序错在哪里,怎么改

#include <stdio.h>
void main()
{int n=10,a[i];
float x;
i=10;
printf("请输入课程门数:");
scanf("%d",&n);
printf("请输入各科成绩:");
scanf("%d",a[i]);
x=Ave(n,a[i]);
printf("成绩平均值为:%.2f\n",x);
}
float Ave(int n,a[i]);
{int i,s=0;
for (i=0;i<n;i++)
s=s+a[i];
return (float)s\n;
}

分析你的错误
#include <stdio.h>
void main()
{int n=10,a[i];//这里的i换成个常数,因为数组的大小不能动态定义,何况这里的i并没有定义
float x;
i=10;//这里很明显i没有被定义就被赋值是不对的。
printf("请输入课程门数:");
scanf("%d",&n);//n开始已经被赋值啦,为什么还要输入呢?
printf("请输入各科成绩:");
scanf("%d",a[i]);//这里应该有个for循环,输入10个值
x=Ave(n,a[i]);//这里也有问题,数组作为参数应该是这样的x=Ave(a,10)
printf("成绩平均值为:%.2f\n",x);
}
float Ave(int a,n)//形参要对应实参
{int i,s=0;
for (i=0;i<n;i++)
s=s+a[i];
return (float)s\n;//这里除号应是/
}

修改后的

#include <stdio.h>
void main()
{int n=10,a[10];
float x;

printf("请输入各科成绩:");
for(i=0;i<10;i++)
scanf("%d",a[i]);
x=Ave(a,10);
printf("成绩平均值为:%.2f\n",x);
}
float Ave(int a[],int n);
{int i,s=0;
for (i=0;i<n;i++)
s=s+a[i];

return (float)s/n;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-26
#include <stdio.h>
void main()
{
int n=10,a[i]; //这里不能这样定义吧。a[]里面必须是一个常数;
float x;
i=10; //这里要定义一下i;
printf("请输入课程门数:");
scanf("%d",&n);
printf("请输入各科成绩:");//下面应该还有个for语句,因为要输入10门课的成绩;
scanf("%d",a[i]); //这里输入是要在a[i]前加&;
x=Ave(n,a[i]); //这里调用函数的时候也有点问题,直接用x=Ave(n,a)就ok了;
printf("成绩平均值为:%.2f\n",x);
}
float Ave(int n,a[i]); //这里的a[i]改成 int a[],而且后面不要有‘;’号。最后这个函数还没有定义;
{
int i,s=0;
for (i=0;i<n;i++)
s=s+a[i];
return (float)s\n; //这里的\该改成/;
}
//总之这个程序有很多错
//以下是改好的程序:
#include <stdio.h>
float Ave(int n,int a[]);
void main()
{
int n=10,a[10];
float x;
int i;
printf("请输入课程门数:");
scanf("%d",&n);
printf("请输入各科成绩:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
x=Ave(n,a);
printf("成绩平均值为:%.2f\n",x);
}
float Ave(int n,int a[])
{
int i,s=0;
for (i=0;i<n;i++)
s=s+a[i];
return (float)s/n;
}
第2个回答  2011-04-26
首先输入各科成绩,a[i]中i没有自加;
Ave中的参数a[i]应该改为数组的名称a;
i你直接赋值10,输入各科成绩的时候就出错了。
第3个回答  2011-04-26
#include <stdio.h>
#define n 10 //题目不是说10门成绩吗,定义为不常量。
float Ave(int m,int a[]);//函数引用说明
void main()
{
int a[n],i;
float x;
printf("请输入各科成绩:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
x=Ave(n,a);
printf("成绩平均值为:%.2f\n",x);
}
float Ave(int m,int a[])//参数定义错,且行尾无分号
{
int i,s=0;
for (i=0;i<m;i++)
s=s+a[i];
return (float)s/n;//除号写反了
}
第4个回答  2011-04-26
定义数组时不能使用a[i]这种含有变量的表示!你可以直接定义int a[10]