差不多了,应该没什么问题了,再控制一下文件里浮点型的格式就行了,看看吧,运行运行
#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 编辑 ]