#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
struct student
{
int num;
char name[10];
int c;
float s[3];
float aver;
}stu[SIZE],temp;
void save()//录入同学成绩们的函数
{int i;
FILE *fp;
if((fp=fopen("stu.dat","wb"))==NULL)
{printf("cannot open file\n");
return;}
for(i=0;i<SIZE;i++)
if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf ("file write error\n");
fclose(fp);}
void write()//录入成绩
{int i;
printf("Please enter data of students including number,name,class,scores of three subjects:\n");
for(i=0;i<SIZE;i++)
{scanf("%d%s%d%f%f%f",&stu[i].num,stu[i].name,&stu[i].c,&stu[i].s[0],&stu[i].s[1],&stu[i].s[2]);
stu[i].aver=(stu[i].s[1]+stu[i].s[2]+stu[i].s[0])/3.0;}
save();}
void read(int i)//浏览同学们的成绩 i的取值范围是0-9 ,输出
{ FILE *fp;
if ((fp=fopen("stu.dat","rb"))==NULL)
{printf("cannot open file\n");
return;}
fread(&stu[i],sizeof(struct student),1,fp);
printf("浏览成绩:%-10s同学:\n",stu[i].name) ;
printf("学号:%4d 班级:%4d 数分:%.1f 几代:%.1f C语言:%.1f 平均:%.1f\n",stu[i].num,stu[i].c,stu[i].s[0],stu[i].s[1],stu[i].s[2],stu[i].aver);
fclose (fp);}
void paixu()//按学号排序浏览成绩
{ int i,j,k;
FILE *fp;
if ((fp=fopen("stu.dat","rb"))==NULL)
{printf("cannot open file\n");
return;}
printf("按学号排序查看全体同学的成绩如下:\n") ;
for(i=0;i<SIZE;i++)
fread(&stu[i],sizeof(struct student),1,fp);
for(i=0;i<SIZE-1;i++)
{k=i;
for(j=i+1;j<SIZE;j++)
if(stu[j].num<stu[k].num)k=j;
temp=stu[k];stu[k]=stu[i];stu[i]=temp;}
for(i=0;i<SIZE;i++)
{printf("学号:%4d 姓名%-10s班级:%d 数分:%.1f 几代:%.1f C语言:%.1f 平均:%.1f\n",stu[i].num,stu[i].name,stu[i].c,stu[i].s[0],stu[i].s[1],stu[i].s[2],stu[i].aver);
}
fclose (fp);
}
void del()//删除某个学生的某项资料
{}
void cha()//输入学号查成绩
{int a,i;
FILE *fp;
printf("请输入你的学号:");
scanf("%d",&a);
getchar();
for(i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
if(a==stu[i].num)void read(int i);
}
fclose (fp);
}
int main()
{
cha();
return 0;
}
这是我在做的一个程序,还很简陋,想求教:查询成绩那里出了什么问题?【void cha()】那里
能帮上忙一定有悬赏!!嗯不要复制别人的程序,告诉我哪里错了就好。谢谢
scanf("%d",&a);
getchar();
for(i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
if(a==stu[i].num)void read(int i);
}
我不懂的应该是这里,不可以直接去比较然后输出,这样子嘛。。。。?
追问
额,不好意思 眼有点花,请问一下修改的是哪里?
额,不好意思 眼有点花,请问一下修改的是哪里?
追答没怎么修改,那个查询还是空的,找到后并没输出什么信息,需要你白自己实现