我算是废了,请问有没有会的

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 30
#define N 11
#define B " 学号 成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 总分 合格"

int main()

{FILE *in, *out; // 声明和定义相关变量
char txt[]=".txt",dat[]=".dat",s_[]="grade_source_";
char num_in[10];
char inname[23],outname[23];
int i,j,k,t;
int A[M][N]={0}; // 声明和定义数组A

do{inname[0]='\0';outname[0]='\0'; // 生成输入输出文件名
printf("请输入班号:");scanf("%s",num_in);
strcat(strcat(strcat(inname,s_),num_in),txt);
strcat(strcat(strcat(outname,s_),num_in),dat);
if((in=fopen(inname,"r"))==NULL) // 打开原始数据文件
printf("无法打开此文件,请重新输入!\n\n");
else break;
}while(1);

if((out=fopen(outname,"w"))==NULL) // 建立数据处理后的存储文件
{printf("无法打开此文件\n");
exit(0); }

getchar();system("cls");
printf("\t\t%s\n\n%s\n\n","以下显示的为定义后未输入数据的空数组",B);
//在屏幕上显示未输入数据的数组A的内容
for(i=0;i<M;i++)
{printf("%-7d",A[i][0]);
for (j=1;j<N;j++)
printf("%6d",A[i][j]);
printf("\n"); }

printf("\n\n\t\t\t 按 Enter 键 开始数据输入\n\t\t\t并显示输入数据后的数组内容\n");getchar();system("cls");

for(i=0;i<M;i++) // 从原始数据文件读入数据,放到数组A中
{ for (j=0;j<N-2;j++)
fscanf(in,"%d",&A[i][j]);}

fclose(in); // 关闭原始数据文件

printf("\t\t%s\n\n%s\n\n","以下显示的为输入数据后未计算总分的数组",B);
// 在屏幕上显示输入数据后的数组A的内容
for(i=0;i<M;i++)
{printf("%-7d",A[i][0]);
for (j=1;j<N;j++)
printf("%6d",A[i][j]);
printf("\n"); }

printf("\n\n\t\t 按 Enter 键 开始计算 总分 与 合格否\n\t\t\t并显示计算后的数组内容\n");getchar();system("cls");
printf("\t\t%s\n\n%s\n\n","以下显示的为输入数据后未计算总分的数组",B); // 在数组A中整理数据,既:求和 与 标记 合格否

printf("%s\n\n",B);
// 在屏幕上显示计算后的数据

return 0;
}
请问如果想达到计算总分,并判断是否合格这样的效果怎么写代码?

你的是否合格是怎么判断的?
大体写了一下,根据总成绩的是否大于等于540来判定的,你根据你的需要来改吧。参考如下:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 30
#define N 11
#define B " 学号 成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 总分 合格"

int main()
{
    FILE *in, *out; // 声明和定义相关变量
    char txt[]=".txt",dat[]=".dat",s_[]="grade_source_";
    char num_in[10];
    char inname[23],outname[23];
    int i,j,k,t;
    int A[M][N]={0}; // 声明和定义数组A

    do{
        inname[0]='\0';outname[0]='\0'; // 生成输入输出文件名
        printf("请输入班号:");scanf("%s",num_in);
        strcat(strcat(strcat(inname,s_),num_in),txt);
        strcat(strcat(strcat(outname,s_),num_in),dat);
        if((in=fopen(inname,"r"))==NULL) // 打开原始数据文件
            printf("无法打开此文件,请重新输入!\n\n");
        else 
            break;
    }while(1);

    if((out=fopen(outname,"w"))==NULL) // 建立数据处理后的存储文件
    {
        printf("无法打开此文件\n");
        exit(0); 
    }

    getchar();system("cls");
    printf("\t\t%s\n\n%s\n\n","以下显示的为定义后未输入数据的空数组",B);
    //在屏幕上显示未输入数据的数组A的内容
    for(i=0;i<M;i++)
    {
        printf("%-7d",A[i][0]);
        for (j=1;j<N;j++)
            printf("%6d",A[i][j]);
        printf("\n"); 
    }

    printf("\n\n\t\t\t 按 Enter 键 开始数据输入\n\t\t\t并显示输入数据后的数组内容\n");getchar();system("cls");

    for(i=0;i<M;i++) // 从原始数据文件读入数据,放到数组A中
    { 
        for (j=0;j<N-2;j++)
            fscanf(in,"%d",&A[i][j]);
    }

    fclose(in); // 关闭原始数据文件

    printf("\t\t%s\n\n%s\n\n","以下显示的为输入数据后未计算总分的数组",B);
    // 在屏幕上显示输入数据后的数组A的内容
    for(i=0;i<M;i++)
    {
        printf("%-7d",A[i][0]);
        for (j=1;j<N;j++)
            printf("%6d",A[i][j]);
        printf("\n"); 
    }

    printf("\n\n\t\t 按 Enter 键 开始计算 总分 与 合格否\n\t\t\t并显示计算后的数组内容\n");getchar();system("cls");
    printf("\t\t%s\n\n%s\n\n","以下显示的为输入数据后未计算总分的数组",B); // 在数组A中整理数据,既:求和 与 标记 合格否

    //补充代码1
    for (i=0;i<M;i++)
    {
        for (j=0;j<N-2;j++)
        {
            if(j<N-3)
                printf("%d ",A[i][j]);
            else
                printf("%d\n",A[i][j]);
        }
    }
    printf("%s\n\n",B);
    // 在屏幕上显示计算后的数据
    //补充代码2
    for (i=0;i<M;i++)
    {
        A[i][9] = 0;
        for (j=0;j<N-2;j++)
        {
            printf("%d ");
            A[i][9] += A[i][j];
        }
        printf("%d ",A[i][9]);
        //判断是否合格
        if (A[i][9] >= 540) //这个条件根据你的需求来调整
        {
            printf("1\n"); //合格显示1
            A[i][10] = 1;
        }else
        {
            printf("0\n"); //不合格显示0
            A[i][10] = 0;
        }
    }

    return 0;
}

请按照 ‘代码块’ 格式来提交代码

谢邀,c++不太懂,请小伙伴参考小桥流水的回答,如果还不行私聊我给你个c++比较擅长的