#include
#include
#include
int N;/////总人数
struct student
{
char name[20];////姓名
int math[2];////math[0]课程是否被选,math[1]记录成绩
int physical[2];
int computer[2];
int english[2];
};
void initelse(struct student *p)
{
printf("\n输入数学成绩,若该生未选输入0\t");
scanf("%d", &p->math[0]);
if(p->math[0])
{
printf("\n请输入数学成绩\t");
scanf("%d", &p->math[1]);
}
else
p->math[1]=0;
printf("\n输入物理成绩,若该生未选输入0\t");
scanf("%d", &p->physical[0]);
if(p->math[0])
{
printf("\n请输入物理成绩\t");
scanf("%d", &p->physical[1]);
}
else
p->physical[1]=0;
printf("\n输入计算机成绩,若该生未选输入0\t");
scanf("%d", &p->computer[0]);
if(p->math[0])
{
printf("\n请输入计算机成绩\t");
scanf("%d", &p->computer[1]);
}
else
p->computer[1]=0;
printf("\n输入英语成绩,若该生未选输入0\t");
scanf("%d", &p->english[0]);
if(p->math[0])
{
printf("\n请输入英语成绩\t");
scanf("%d", &p->english[1]);
}
else
p->english[1]=0;
};
void init(struct student *p)
{
printf("请输入学生姓名\t");
scanf("%s", p->name);
initelse(p);
};
////////////////////////////初始化函数
void modify(struct student* student)
{
char temp[20];
int i;
printf("\n----------------------------\n");
printf("请输入要修改的学生的姓名\t");
scanf("%s", temp);
printf("\n");
for(i=0;i
if(strcmp(student[i].name, temp)==0)
initelse(&student[i]);
else
printf("没有这个学生\n");
}
};////////////////////////修改函数
void displayall(struct student *student)
{
int i;
for(i=0;i
printf("姓名: %s\n", student[i].name);
if(student[i].math[0])
printf("数学成绩:%d\t", student[i].math[1]);
else
printf("该生没有选择数学!\t");
if(student[i].physical[0])
printf("物理成绩:%d\n", student[i].physical[1]);
else
printf("该生没有选择物理!\t");
if(student[i].computer[0])
printf("计算机成绩:%d\t", student[i].computer[1]);
else
printf("该生没有选择计算机\t");
if(student[i].english[0])
printf("英语成绩:%d\t", student[i].english[1]);
else
printf("该生没有选择英语\n");
}
};/////////////输出学生信息
int main()
{
int i;
char yesorno;
FILE *stream;
struct student *student ;
printf("请输入学生的总人数:\t");
scanf("%d", &N);
student=(struct student*)malloc(sizeof(student)*N);
for(i=0;i
printf("数据初始化完成!\n");
displayall(student);
printf("是否要修改?y修改,n不修改\t");
scanf("%c",&yesorno);
getchar();
while(yesorno=='y')
{
modify(student);
printf("修改下一个输入:y,其他任意键退出!\n");
scanf("%c", &yesorno);
getchar();
}
printf("按任意键开始写入文件!\n");
getchar();
if((stream=fopen("a.dat", "w+"))==NULL)
{
perror("写入文件失败");
printf("\n按任意键退出\n");
getchar();
exit(1);
}
fwrite(&student, sizeof(student)*N, 1, stream);
printf("写入成功\n");
//free(student);
exit(0);
}
需要一段时间..
我结构那部分没学好。。