标题:简单的c语言文件操作问题
只看楼主
cuit吴彦祖
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-12-24
结帖率:100%
已结贴  问题点数:20 回复次数:2 
简单的c语言文件操作问题
 有一存储很多学生成绩的文本文件(学生与课程数不限),每个学生的数据包括学号(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;
}
搜索更多相关主题的帖子: 课程 printf 成绩 文件 search 
2019-12-24 17:30
wang_gs
Rank: 2
等 级:论坛游民
威 望:1
帖 子:3
专家分:35
注 册:2019-12-4
得分:20 
#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;
}
2019-12-24 18:18
cuit吴彦祖
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-12-24
得分:0 
回复 2楼 wang_gs
谢谢大佬,新人很多不懂的,麻烦了
2019-12-27 15:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498611-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.442923 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved