C语言关于结构体的编写,求高手解答啊,我看了几十遍就是看不出来问题出在哪里,不过就是编译不出来!急。

#include<stdio.h>
#define N 100
struct student{
int num;
char name[20];
char sex;
int age;
int score[3];
};
void main()
{
void fen(int a[3], int *z,float *p);
struct student stu[N];
int i,n,z[100];
float p[100];

printf("输入学生数目:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("输入第%d学生基本信息:",i+1);
printf("学号:");
scanf("%d",&stu[i].num);

printf("姓名:");
gets(stu[i].name);

printf("性别:");
scanf("%c",&stu[i].sex);

printf("年龄:");
scanf("%d",&stu[i].age);

printf("三科成绩:");
scanf("%d,%d,%d",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]) ;

fen(stu[i].score[3],&z[i],&p[i]);
}

for(i=0;i<n;i++)
{
printf("学号:%d\n",stu[i].num);
printf("姓名:%s\n",stu[i].name);
printf("性别:%c\n",stu[i].sex);
printf("年龄:%d\n",stu[i].age);
printf("三科成绩:%f %f %f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2]);
printf("总成绩:%d\n",z[i]);
printf("平均分:%f\n",p[i]);
}
}
void fen(int a[3], int *z,float *p)
{
int i;
for(*z=0,i=0;i<3;i++)
*z=*z+a[i];
*p=((float)(*z)/3);
}
问题是输入N个学生的数据,包括学号,名字,性别,年龄,成绩
三科成绩,然后调用一个函数,用来计算每个学生总分和平均分。

void main()
{
void fen(int a[3], int *z,float *p);
struct student stu[N];
int i,n,z[100];
float p[100];

printf("输入学生数目:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("输入第%d学生基本信息:",i+1);
printf("学号:");
scanf("%d",&stu[i].num);

printf("姓名:");
gets(stu[i].name);

printf("性别:");
scanf("%c",&stu[i].sex);

printf("年龄:");
scanf("%d",&stu[i].age);

printf("三科成绩:");
scanf("%d,%d,%d",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]) ;

fen(stu[i].score,&z[i],&p[i]); //score[3]后面的[3]去掉,传递的是数组名。
}

for(i=0;i<n;i++)
{
printf("学号:%d\n",stu[i].num);
printf("姓名:%s\n",stu[i].name);
printf("性别:%c\n",stu[i].sex);
printf("年龄:%d\n",stu[i].age);
printf("三科成绩:%d %d %d\n",stu[i].score[0],stu[i].score[1],stu[i].score[2]);
//你的成绩都是int类型,为什么使用%f输出??换用%d。
printf("总成绩:%d\n",z[i]);
printf("平均分:%f\n",p[i]);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-22
你是怎么输入的啊?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网