如下程序是计算10名学生的平均分,修改为从文件cj. txt中读成绩进行计算。

#include<stdio.h>
#define N 10
float tj_avg(int a[]);
void main( )
{
int scores[N],i;
float avg_m;
freopen("cj.txt","r",stdin);
for (i=0;i<N;i++)
scanf("%lf",&index); //这里应该是需要修改的吧,怎么改呢
avg_m =tj_avg( scores);
printf("平均分为%.2f\n",avg_m);
}
float tj_avg(int a[])
{
float avg;int i,sum = 0;
for(i = 0;i<N;i++)
sum = sum+a[i];
avg = (float)sum/N;
return avg;
}

代码如下:

#include<stdio.h>
#define N 10
float tj_avg(int a[],int n);
void main()
{
    int scores[N], i;
    int n;
    float avg_m;
    FILE* fp = fopen("cj.txt", "r");
    if (fp == 0)
    {
        printf("文件打开错误");
        return ;
    }
    n = 0;
    while (!feof(fp))
    {
        if (fscanf(fp, "%d", &scores[n])) //成绩以空格分隔
        {
            if(scores[n] >= 0) //验证成功读取数据
                n++;
        }

    }
    fclose(fp);
    avg_m = tj_avg(scores,n);
    printf("平均分为%.2f\n", avg_m);
}
float tj_avg(int a[],int n)
{
    float avg; int i, sum = 0;
    for (i = 0; i < n; i++)
        sum = sum + a[i];
    avg = (float)sum / n;
    return avg;
}

用fopen打开文件,然后读取成绩。这里你得说明文件中成绩是如何存储的。每个成绩是浮点数还是整数,成绩之间用什么分隔,是每行一个成绩还是一行中都是成绩。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632