不知到哪里错了,运行不了

编程实现:

对学生成绩进行管理:

包含读入、修改、排序、输出、保存功能。

(1)读入:将所给"chengji.txt"文件中的所有学生信息读入到结构体数组中。

每位学生信息包括:学号、姓名及5门课成绩。

(2)修改:将所有学生第3门课成绩都添加5分。

(3)排序:按总成绩从高分到低分排序。

(4)输出:将所有学生信息输出到屏幕上,包括学生的总成绩。

(5)保存:将学生最终成绩(包括总成绩)保存在"最终成绩.txt"文件中。编程实现:

对学生成绩进行管理:

包含读入、修改、排序、输出、保存功能。

(1)读入:将所给"chengji.txt"文件中的所有学生信息读入到结构体数组中。

每位学生信息包括:学号、姓名及5门课成绩。

(2)修改:将所有学生第3门课成绩都添加5分。

(3)排序:按总成绩从高分到低分排序。

(4)输出:将所有学生信息输出到屏幕上,包括学生的总成绩。

(5)保存:将学生最终成绩(包括总成绩)保存在"最终成绩.txt"文件中。
#include <stdio.h>
#include <string.h>
#define N 100
#define M 5
struct student
{
int xh;
char xm[7];
int cj[M];
int zf;
}a[N],t;
int ldj=0;
FILE *fp;
int shuru();
int xiugai();
int paixu();
int shuchu();
int baocun();

int main()
{
shuru();
xiugai();
paixu();
shuchu();
baocun();
}
int shuru()
{
fp=fopen("chengji.txt","r");
int n=0,m;
while(feof(fp)==0)
{
fscanf(fp,"%d\t%s",&a[n].xh,&a[n].xm);
for(m=0;m<M;m++)
fscanf(fp,"\t%d",&a[n].cj[m]);
fscanf(fp,"\n");
n++;
}
ldj=n;
fclose(fp);
}
int xiugai()
{
int m,n;
for(n=0;n<ldj;n++)
a[n].cj[2]=a[n].cj[2]+5;
}
int paixu()
{
int m,n;
for(n=0;n<ldj;n++)
{
a[n].zf=0;
for(m=0;m<M;m++)
a[n].zf=a[n].zf+a[n].cj[m];
}
for(n=0;n<ldj;n++)
for(m=n+1;m<ldj;m++)
if(a[m].zf>a[n].zf)
{
t=a[m];
a[m]=a[n];
a[n]=t;
}
}
int shuchu()
{
int n,m;
for(n=0;n<ldj;n++)
{
printf("%d\t%s\t",a[n].xh,a[n].xm);
for(m=0;m<M;m++)
{
printf("%d\t",a[n].cj[m]);
}
printf("%d\n",a[n].zf);
}
}
int baocun()
{
int n,m;
fp=fopen("最终成绩.txt","w");
for(n=0;n<ldj;n++)
{
fprintf(fp,"%d\t%s\t",a[n].xh,a[n].xm);
for(m=0;m<M;m++)
{
fprintf(fp,"%d\t",a[n].cj[m]);
}
fprintf(fp,"%d\n",a[n].zf);
}
fclose(fp);
}

img

img

数组名就是地址 加什么&符

img

给你改好了,问题比较多,函数返回值没返回,此外还要建文件。运行截图如下,望采纳,有问题可以问题。

img

img

#include <stdio.h>
#include <string.h>
#define N 100
#define M 5
struct student {
    int xh;
    char xm[7];
    int cj[M];
    int zf;
} a[N], t;
int ldj = 0;
FILE* fp;
int shuru();
int xiugai();
int paixu();
int shuchu();
int baocun();

int main() {
    shuru();
    xiugai();
    paixu();
    shuchu();
    baocun();
}
int shuru() {
    fp = fopen("chengji.txt", "r");
    int n = 0, m;
    while (feof(fp) == 0) {
        fscanf(fp, "%d\t%s", &a[n].xh, a[n].xm);
        for (m = 0; m < M; m++)
            fscanf(fp, "\t%d", &a[n].cj[m]);
        fscanf(fp, "\n");
        n++;
    }
    ldj = n;
    fclose(fp);
    return 0;
}
int xiugai() {
    int m, n;
    for (n = 0; n < ldj; n++)
        a[n].cj[2] = a[n].cj[2] + 5;

return 0;
}
int paixu() {
    int m, n;
    for (n = 0; n < ldj; n++) {
        a[n].zf = 0;
        for (m = 0; m < M; m++)
            a[n].zf = a[n].zf + a[n].cj[m];
    }
    for (n = 0; n < ldj; n++)
        for (m = n + 1; m < ldj; m++)
            if (a[m].zf > a[n].zf) {
                t = a[m];
                a[m] = a[n];
                a[n] = t;
            }
return 0;
}
int shuchu() {
    int n, m;
    for (n = 0; n < ldj; n++) {
        printf("%d\t%s\t", a[n].xh, a[n].xm);
        for (m = 0; m < M; m++) {
            printf("%d\t", a[n].cj[m]);
        }
        printf("%d\n", a[n].zf);
    }
return 0;
}
int baocun() {
    int n, m;
    fp = fopen("最终成绩.txt", "w");
    for (n = 0; n < ldj; n++) {
        fprintf(fp, "%d\t%s\t", a[n].xh, a[n].xm);
        for (m = 0; m < M; m++) {
            fprintf(fp, "%d\t", a[n].cj[m]);
        }
        fprintf(fp, "%d\n", a[n].zf);
    }
    fclose(fp);
return 0;
}

换成英文路径