高子越 发表于 2020-6-22 11:41:10

c语言文件的读写

某专业学生成绩信息存储在D盘根目录下,文件名为info.txt,规定学生人数不超过1000,如果学生单科成绩小于60,或总分小于210,则为考试没通过。下面有一个示例。
文件示例:D盘下面文件 info.txt
zhangsan   88 90 67
lisi            90 55 77
wangwu    66 61 75
zhaoliu      77 66 69
运行结果:
name:zhangsan      math:88   computer:90   english:67
name:lisi               math:90   computer:55   english:77
name:wangwu       math:66   computer:61      english:75
name:zhaoliu         math:77   computer:66   english:69
以下学生没通过考试:
lisi
wangwu
没通过考试人数:2
求助这个题怎么做呢?

热气球 发表于 2020-6-22 11:45:21

这是来找答案的么?

高子越 发表于 2020-6-22 14:33:25

热气球 发表于 2020-6-22 11:45
这是来找答案的么?

写了一上午没写出来

热气球 发表于 2020-6-23 09:23:56

高子越 发表于 2020-6-22 14:33
写了一上午没写出来

你写了点。有问题贴出来就好。。。。可能有时间会给你改吧改吧

高子越 发表于 2020-6-24 10:47:45

热气球 发表于 2020-6-23 09:23
你写了点。有问题贴出来就好。。。。可能有时间会给你改吧改吧

经过我的不懈努力,终于还是写出来了#include <stdlib.h>
#include <stdio.h>

typedef struct student
{
    char name;
    int ma;
    int com;
    int en;
    int score;
} stu;

int i=0,j,n=0;
stu str;

int main(void)
{
    FILE *fp=fopen("D:/info.txt","r");
    printf("所有学生信息如下:\n");
    while(fscanf(fp,"%s",str.name)!=EOF){
      fscanf(fp,"%d%d%d",&str.ma,&str.com,&str.en);
      printf("name:%s\t       math:%d      computer:%d      english:%d\n",str.name,str.ma,str.com,str.en);
      i++;
    }
    printf("以下同学没通过考试\n");
    for(j=0;j<i;j++){
      str.score=str.ma+str.com+str.en;
      if(str.score<210 || str.ma<60 || str.com<60 || str.en<60)
      {
            printf("%s\n",str.name);
            n=n+1;
      }
    }
    printf("没有通过考试的人数:%d\n",n);
    fclose(fp);
    return 0;
}


热气球 发表于 2020-6-24 14:20:15

高子越 发表于 2020-6-24 10:47
经过我的不懈努力,终于还是写出来了

对吧,赞一个{:5_106:}{:5_106:}{:5_106:}{:5_106:}{:5_106:}

高子越 发表于 2020-6-24 14:43:29

热气球 发表于 2020-6-24 14:20
对吧,赞一个

{:5_109:}{:5_109:}谢谢{:5_109:}谢谢

亚麻爹 发表于 2020-6-25 10:49:49

666
页: [1]
查看完整版本: c语言文件的读写