左操作必须为左值什么意思

来源:百度知道 编辑:UC知道 时间:2024/06/20 06:19:35
#include"stdio.h"
#define MAX 30
void main()
{
int i,StudentNum;
int Chinese[MAX],English[MAX],Math[MAX];
long StudentID[MAX];
float Studentaverage[MAX],ClassAverage[MAX];
while(1)
{
printf("How many students are in your class:");
scanf("%d",&StudentNum);
if(StudentNum<1||StudentNum>MAX)
{
printf("StudentNum must be between 1 and %d.Press any key to continue",MAX);
getchar();
}
else
{
break;
}
}
printf("Please input a StudentID and three scores:\n");
printf("StudentID Chinese English Math\n");
for(i=0;i<StudentNum;i++)
{
printf("NO.%d>",i+1);
scanf("%ld%d%d%d",&StudentID[i],&Chinese[i],&English[i],&Math[i] );
Studentaverage[i]=(Chinese[i]+English[i]+Math

第二个FOR循环那儿。ClassAverage是个数组。你把这个数组的头指针指向0(也就是NULL了)。所以这里没报错(但是逻辑上错了)

所以你ClassAverage应该定义为float型,而不是float数组型

即在ClassAverage定义时写为float ClassAverage;

我试着编译了一下,没问题。
逻辑没太细看

还有最后输出"%ld%d%d%d8.1f\n"是什么意思?如果ID是1 分数分别为10 10 10,那么输出结果为11010108.1f

ClassAverage[MAX]; 是数组
所以
(ClassAverage=0,i=0; 不可以,错在
ClassAverage=0


for(i=0;i<。。。;i++) ClassAverage[i]=0.0;
再做累加的循环:
for(i=0;i<。。。;i++)。。。

ClassAverage[MAX]定义错,应为float ClassAverage ;