差不多了,应该没什么问题了,再控制一下文件里浮点型的格式就行了,看看吧,运行运行
#include<stdio.h>
#include<stdlib.h>
FILE *fp;
struct
{
int num;
char name[20];
float score[3];
float sum;
}stu[20];
void input(void);
void search(void);
int main(void)
{
int n;
printf("您已经进入了学生信息系统\n");
do
{
printf("1 学生信息录入\n");
printf("2 学生信息查询\n");
printf("0 退出\n");
printf("输入编号:");
scanf("%d", &n);
switch(n)
{
case 1:input();break;
case 2:search();break;
case 0:break;
default:printf("您输入的选项有误!\n");
}
}while(n!=0);
printf("您已经退出了学生信息系统\n");
return 0;
}
void input(void)
{
int i;
if((fp=fopen("filename.txt", "w")) == NULL)
{
printf ("打开文件失败!\n");
exit(0);
}
printf("请输入学生信息:\n");
for(i=0;i<4;i++)
{
printf("学生%d\n",i+1);
printf("学号:");
scanf("%d",&stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
printf("语文:");
scanf("%f",&stu[i].score[0]);
printf("数学:");
scanf("%f",&stu[i].score[1]);
printf("英语:");
scanf("%f",&stu[i].score[2]);
stu[i].sum=(stu[i].score[0] + stu[i].score[1] +stu[i].score[2])/3;
fprintf(fp,"%-03d
%-10s
%-03.6f
%-03.6f
%-03.6f
%-03.6f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);
}
fclose(fp);
}
void search(void)
{
int num,i;
if((fp=fopen("filename.txt","r"))==NULL)
{
printf("不能打开");
exit(0);
}
while(1)
{
i=0;
printf("请输入学生学号(输入0退出):");
scanf("%d",&num);
if(num==0)
break;
while(!feof(fp))
{
fscanf(fp,"%d
%10s
%f
%f
%f
%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].sum);
if(num == stu[i].num)
{
printf("学号 姓名 语文 数学 英语 总分\n");
printf("%-d
%-s
%-f
%-f
%-f
%-f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);
fclose(fp);
return;
}
i++;
}
fseek(fp,0,0);
printf ("没有该学生的信息!\n");
printf("请重新输入:\n");
}
}
[
本帖最后由 小小战士 于 2012-12-14 11:54 编辑 ]