左操作必须为左值什么意思
#include"stdio.h"#defineMAX30voidmain(){inti,StudentNum;intChinese[MAX],English[MAX],...
#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[i])/3;
}
for(ClassAverage=0,i=0;i<StudentNum;i++)
{
ClassAverage+=Studentaverage[i];
}
ClassAverage/=StudentNum;
puts("\nStudentNum Chinses English math average");
puts("--------------------------------------------------");
for(i=0;i<StudentNum;i++)
{
printf("%ld%d%d%d8.1f\n",StudentID[i],Chinese[i],English[i],Math[i],Studentaverage[i]);
}
puts("--------------------------------------------------");
printf("Average of the Class =%.2f",ClassAverage);
printf("Press any key to ruturn...");
getchar();
}
这个程序说有三个错误:+= 做操作数必须为左值 /= 非法左操作数包含float[30] for(ClassAverage=0,i=0;i<StudentNum;i++)这句无法从int转换成float[30]什么意思啊...我搞不懂啊....我新手啊...没学多久..从没遇到这问题过~~
我用VS.NET 2005的 展开
#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[i])/3;
}
for(ClassAverage=0,i=0;i<StudentNum;i++)
{
ClassAverage+=Studentaverage[i];
}
ClassAverage/=StudentNum;
puts("\nStudentNum Chinses English math average");
puts("--------------------------------------------------");
for(i=0;i<StudentNum;i++)
{
printf("%ld%d%d%d8.1f\n",StudentID[i],Chinese[i],English[i],Math[i],Studentaverage[i]);
}
puts("--------------------------------------------------");
printf("Average of the Class =%.2f",ClassAverage);
printf("Press any key to ruturn...");
getchar();
}
这个程序说有三个错误:+= 做操作数必须为左值 /= 非法左操作数包含float[30] for(ClassAverage=0,i=0;i<StudentNum;i++)这句无法从int转换成float[30]什么意思啊...我搞不懂啊....我新手啊...没学多久..从没遇到这问题过~~
我用VS.NET 2005的 展开
3个回答
展开全部
第二个FOR循环那儿。ClassAverage是个数组。你把这个数组的头指针指向0(也就是NULL了)。所以这里没报错(但是逻辑上错了)
所以你ClassAverage应该定义为float型,而不是float数组型
即在ClassAverage定义时写为float ClassAverage;
我试着编译了一下,没问题。
逻辑没太细看
还有最后输出"%ld%d%d%d8.1f\n"是什么意思?如果ID是1 分数分别为10 10 10,那么输出结果为11010108.1f
所以你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=0,i=0; 不可以,错在
ClassAverage=0
添
for(i=0;i<。。。;i++) ClassAverage[i]=0.0;
再做累加的循环:
for(i=0;i<。。。;i++)。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ClassAverage[MAX]定义错,应为float ClassAverage ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询