📄 stud.c
字号:
#include<stdio.h>
#include<string.h>
struct date
{int year;
int month;
int day;
};
struct student
{char num[10];
char name[8];
struct date birthday;
char sex;
int score[6];
float ave;
}stu[10];
void main()
{int i,j;
char k[30];
FILE *fp;
for(i=0;i<10;i++)
{printf("\n请输入第%d个学生的信息:\n",i+1);
printf("学号:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
printf("出生年月(XXXX-XX-XX):");
scanf("%d-%d-%d",&stu[i].birthday.year,&stu[i].birthday.month,&stu[i].birthday.day);
printf("性别(请选择:1—男,2—女):");
scanf("%s",k);
while(strcmp(k,"1")!=0&&strcmp(k,"2")!=0){printf("性别选项代号错误,请重新选择输入!\n");printf("性别(请选择:1—男,2—女):");scanf("%s",k);}
if(strcmp(k,"1")==0)stu[i].sex='M';
else stu[i].sex='F';
printf("语文成绩:");
scanf("%d",&stu[i].score[0]);
printf("数学成绩:");
scanf("%d",&stu[i].score[1]);
printf("英语成绩:");
scanf("%d",&stu[i].score[2]);
printf("物理成绩:");
scanf("%d",&stu[i].score[3]);
printf("化学成绩:");
scanf("%d",&stu[i].score[4]);
printf("生物成绩:");
scanf("%d",&stu[i].score[5]);
printf("以上信息确认无误?(请选择:1—确认无误,2—返回修改):");
scanf("%s",k);
while(strcmp(k,"1")!=0&&strcmp(k,"2")!=0){printf("确认选项代号错误,请重新选择输入!\n");printf("以上信息确认无误?(请选择:1—确认无误,2—返回修改):");scanf("%s",k);}
if(strcmp(k,"1")==0)continue;
else
loop:{ printf("请选择需要修改的信息项(一次只能选择修改一项):\n");
printf("1—学号 2—姓名 3—出生年月 4—性别 5—语文成绩\n");
printf("6—数学成绩 7—英语成绩 8—物理成绩 9—化学成绩 10—生物成绩\n");
scanf("%s",k);
while(strcmp(k,"1")!=0&&strcmp(k,"2")!=0&&strcmp(k,"3")!=0&&strcmp(k,"4")!=0&&strcmp(k,"5")!=0&&strcmp(k,"6")!=0&&strcmp(k,"7")!=0&&strcmp(k,"8")!=0&&strcmp(k,"9")!=0&&strcmp(k,"10")!=0)
{printf("选择修改的信息项代号错误,请重新选择输入: ");scanf("%s",k);}
if(strcmp(k,"1")==0){printf("学号:");scanf("%s",stu[i].num);}
else if(strcmp(k,"2")==0){printf("姓名:");scanf("%s",stu[i].name);}
else if(strcmp(k,"3")==0){printf("出生年月(XXXX-XX-XX):");scanf("%d-%d-%d",&stu[i].birthday.year,&stu[i].birthday.month,&stu[i].birthday.day);}
else if(strcmp(k,"4")==0)
{printf("性别(请选择:1—男,2—女):");scanf("%s",k);
while(strcmp(k,"1")!=0&&strcmp(k,"2")!=0){printf("性别选项代号错误,请重新选择输入!\n");printf("性别(请选择:1—男,2—女):");scanf("%s",k);}
if(strcmp(k,"1")==0)stu[i].sex='M';
else stu[i].sex='F';}
else if(strcmp(k,"5")==0){printf("语文成绩:");scanf("%d",&stu[i].score[0]);}
else if(strcmp(k,"6")==0){printf("数学成绩:");scanf("%d",&stu[i].score[1]);}
else if(strcmp(k,"7")==0){printf("英语成绩:");scanf("%d",&stu[i].score[2]);}
else if(strcmp(k,"8")==0){printf("物理成绩:");scanf("%d",&stu[i].score[3]);}
else if(strcmp(k,"9")==0){printf("化学成绩:");scanf("%d",&stu[i].score[4]);}
else {printf("生物成绩:");scanf("%d",&stu[i].score[5]);}
printf("该学生所有需要修改的信息项修改完毕?(请选择:1—是,返回 2—否,继续修改): ");
scanf("%s",k);
while(strcmp(k,"1")!=0&&strcmp(k,"2")!=0){printf("确认选项代号错误,请重新选择输入!\n");printf("该学生所有需要修改的信息项修改完毕?(请选择:1—是,返回 2—否,继续修改): ");scanf("%s",k);}
if(strcmp(k,"1")==0)continue;
else goto loop;
}
}
for(i=0;i<10;i++)
{int sum=0;
for(j=0;j<6;j++)
{sum=sum+stu[i].score[j];}
stu[i].ave=sum/6.0;
}
fp=fopen("stud","w");
for(i=0;i<10;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("写入学生信息时产生错误!\n");
fclose(fp);
fp=fopen("stud","r");
printf("\n\n输出学生信息列表:\n");
printf("学号\t\t姓名\t\t出生年月\t性别\t语文成绩\t数学成绩\t英语成绩\t物理成绩\t化学成绩\t生物成绩\t平均成绩\n");
for(i=0;i<10;i++)
{fread(&stu[i],sizeof(struct student),1,fp);
printf("%s\t\t%s\t\t%d-%d-%d\t%c\t%d\t\t%d\t\t%d\t\t%d\t\t%d\t\t%d\t\t%6.2f\n",stu[i].num,stu[i].name,stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day,stu[i].sex,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].score[5],stu[i].ave);}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -