帮我解释一下这个C语言程序吧

#include<stdio.h>
struct STU
{char num[10];float score[3];}
main()
{struct STU s[3]={
{"20021",90,95,85},
{"200222",95,80,75},
{"20023",100,95,90}},*p=s;
int i;float sum=0;
for(i=0;i<3;i++)
sun=sum+p->score[i];
printf("%6.2f\n",sum);
}
上面的程序是在结构体这章的练习题中的,要求选择输出结果。但我看不懂该程序,不知道结构体数组变量s[3]与结构体中的两个数组成员的关系。将上面的程序输入后编译后出错。麻烦高手们给我详细解释一下这个程序,以及错在哪里,输出结果是什么。非常感谢啊

1.struct STU
{char num[10];float score[3];};
注意大括号外有分号

2.
sun=sum+p->score[i];
应该是sum

结果270.00

p指向数组s[0],sum=sum+p->score[i]=sum+s[0].score[i]
总之,sum=0+90+95+85
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-17
求某个学号的总分数的。
#include<stdio.h>
struct STU
{char num[10];float score[3];}
main()
{struct STU s[3]={
{"20021",90,95,85},
{"200222",95,80,75},
{"20023",100,95,90}},*p=s;
int i, j;float sum=0;
for(j = 0; j < 3; j ++)
{
for(i=0;i<3;i++)
sun=sum+p[j].score[i];
printf("%6.2f\n",sum);
}
}
注意p是一个结构体数组指针,要用下标访问各个元素的
第2个回答  2011-07-17
sun是什么,没有定义啊,应该是sum吧
结果是270.00