注册 登录
编程论坛 C语言论坛

简单的c语言文件操作问题

cuit吴彦祖 发布于 2019-12-24 17:30, 2378 次点击
 有一存储很多学生成绩的文本文件(学生与课程数不限),每个学生的数据包括学号(10个数字)、姓名(最多4个汉字)、性别、课程名称(最多7个汉字)、成绩(整数)。从键盘输入某门课程的名称,要求在文件中查找有无相应的课程(可能有多条记录或没有),有则计算并输出该课程的选课人数与平均成绩,无则报告没有。
编程可用素材:printf("请输入要计算平均成绩的课程名称:")、printf("文件打开失败,请检查文件名及路径是否正确、文件是否存在!")、printf("\n计算结果为:\n")、printf("文件中没有名称为“…”的课程\n"…、printf("课程“…”有 … 人选学,平均成绩为…。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    FILE *fp;
    int num;
    char name[9], search[15];
    char sex[3];
    char course[15];
    int scores, i = 0;
    double sum = 0, ave;

    printf("请输入要计算平均成绩的课程名称:");
    gets(search);
    fp = fopen("xscj.txt", "r");
    if (fp == NULL)
    {
        printf("文件打开失败,请检查文件名及路径是否正确、文件是否存在!");
        exit(1);
    }
    while (fscanf(fp, "%d %s %s %s %d", &num, name, sex, course, &scores) != EOF)
    {
        if (strcmp(search, course) == 0)
        {
            i++;
            sum += scores;
        }
        if (strcmp(search, course) != 0)
        {
            printf("文件中没有名称为“%s”的课程\n", search);
            break;
        }
    }
    ave = sum / i;
    printf("\n计算结果为:\n");
    printf("课程“%s”有 %d 人选学,平均成绩为%.1lf", search, i, ave);
    fclose(fp);

    return 0;
}
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
2 回复
#2
wang_gs2019-12-24 18:18
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    FILE *fp;
    char num[11];
    char name[9], search[15];
    char sex[3];
    char course[15];
    int scores, i = 0;
    double sum = 0, ave;

    printf("请输入要计算平均成绩的课程名称:");
    gets(search);
    fp = fopen("xscj.txt", "r");
    if (fp == NULL)
    {
        printf("文件打开失败,请检查文件名及路径是否正确、文件是否存在!");
        exit(1);
    }
    while (fscanf(fp, "%s %s %s %s %d", num, name, sex, course, &scores) != EOF)
    {
        if (strcmp(search, course) == 0)
        {
            i++;
            sum += scores;
        }
    }
    if (i == 0)
        printf("\n文件中没有名称为\"%s\"的课程", search);
    else
    {
        ave = sum / i;
        printf("\n计算结果为:");
        printf("\n课程\"%s\"有 %d 人选学,平均成绩为%.1f", search, i, ave);
    }
    fclose(fp);
    return 0;
}
#3
cuit吴彦祖2019-12-27 15:18
回复 2楼 wang_gs
谢谢大佬,新人很多不懂的,麻烦了
1