C语言中出现errorC2088:'[':illegalforstruct是什么问题?

发布时间:2019-08-09 03:08:05

#include <stdio.h>
struct Score
{
int chinese;
int math;
float avg;
}s[4];
float avg1(int a,int b)
{
a=s[0].chinese;
b=s[0].math;
printf("%4d\t%4d\t6.2f\n",a,b,(a+b)/2.0);
}
float avg2(struct Score s)
{
float aver[1];
aver[1]=(s[1].chinese+s[1].math)/2.0;
printf("%4d\t%4d\t%6.2f\n",s[1].chinese,s[1].math,aver[1]);
}
void avg3(struct Score *p)
{
float aver[2];
p=&s[2];
aver[2]=(p->chinese+p->math)/2.0;
printf("%4d\t%4d\t%6.2f\n",p->chinese,p->math,aver[2]);
}
struct Score avg4(struct Score s)
{
float aver[3];
aver[3]=(s[3].chinese+s[3].math)/2.0;
return aver[3];
}
void main()
{
int i;
printf("请输入4位学生的语文成绩、数学成绩\n");
for( i=0;i<4;i++)
{
scanf("%d%d",&s[i].chinese,&s[i].math);
}
printf("语文\t数学\t平均成绩\n");
avg1(s[0].chinese,s[0].math);
avg2;
avg3;
printf("%4d\t%4d\t%6.2f\n",s[3].chinese,s[3].math,avg4);
}


error C2088: '[' : illegal for struct
Cpp1.c(24) : warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data
Cpp1.c(31) : error C2115: 'return' : inpatible types

推荐回答

1、本来定义了一个数组,PRO sell[MAX];但是在函数里又定义了一个局部变量PRO sell,这个局部变量覆盖了全局变量sell[MAX],所以编译出错。只要重新定义个局部变量,别跟全局变量重名就行了。

2、改为:

void SortDat(){int i,j;PRO tSell;for(i=0;i<MAX-1;i++)for(j=0;j<MAX-1;j++)if (strcmp(sell[j].mc,sell[j+1].mc)>0){tSell=sell[j];sell[j]=sell[j+1];sell[j+1]=tSell;}else if (strcmp(sell[j].mc,sell[j+1].mc)==0&&sell[j].je < sell[j+1].je){tSell=sell[j];sell[j]=sell[j+1];sell[j+1]=tSell;}}
以上问题属网友观点,不代表本站立场,仅供参考!