看看这个c程序

来源:百度知道 编辑:UC知道 时间:2024/05/26 12:31:56
看看这个c程序
上机编程并调试通过
编程计算某班N个学生所修的4们课成绩,他们是数学,物理,英语和计算机,按学号从大到小的顺序依次输入学生的姓名,性别(用’m’表示男,’f’’表示女)和4门课的成绩,计算每个学生的平均分,并以清晰的打印格式从高分低分的顺序打印平均分高于全班平均成绩的男生的成绩单.

我写到计算平均分的时候就出问题了,老是不对
还希望高手看看
星期天之前要教作业的。。。。
我的变量定义是:学号:xh;性别:xb;名字:name;数学,物理,英语和计算机:sx,wu,yu,jsj

#include <stdio.h>
void main()
{
struct student
{
int xh;
char xb;
char name[20];
float sx;
float wl;
float yu;
float jsj;
float pj;
};
struct student stu[2];
int i=1,j;
float sum=0,ave;
for(i=1;i<=2;i++)
{
printf("please enter the no: %d student's figure\n",i);
scanf("%d,%c,%s,%f,%f,%f,%f",&stu.xh,&stu.xb,&stu.name,&stu.sx,&stu.wl,&stu.yu,&stu.jsj);
stu.pj=(stu.sx+stu.wl+stu.yu+stu.jsj)/4;
sum=sum+4*(stu.sx+stu.wl+stu.yu+stu.jsj);
printf("stu.pj=%f",stu.pj);
printf("\n");
}
}

你的程序问题在for循环里的输入语问,
scanf("%d,%c,%s,%f,%f,%f,%f",&stu.xh,&stu.xb,&stu.name,&stu.sx,&stu.wl,&stu.yu,&stu.jsj);
首先,stu是数组的首地址,你应该这样用:
比如学号,&(stu[i].xh),另外,
你定义了一个struct student stu[2],故i应从0开始循环。

你自已把以上问题修改一下,还有问题再问。

scanf("%d,%c,%s,%f,%f,%f,%f",&stu[i].xh,&stu[i].xb,stu[i].name,&stu[i].sx,&stu[i].wl,&stu[i].yu,&stu[i].jsj);
下面也要加这个

#include <stdio.h>
void main()
{
struct student
{
int xh;
char xb;
char name[20];
float sx;
float wl;
float yu;
float jsj;
float pj;
};
struct student stu[2];
int i,j;
float sum=0,ave;
for(i=0;i<2;i++)
{
printf("please enter the no: %d student's figure\n",i);
scanf("%d,%c,%s,%f,%f,%f,%f",&stu[i].xh,&stu[i].xb,stu[i].name,&stu[i].sx,&stu[i].wl,&stu[i].yu,&stu[i].jsj);
stu[i].pj=(stu[i].sx+stu[i].wl+stu[i].yu+stu[i].jsj)/4;
sum