求大神帮助啊~

2025-05-18 06:15:44
推荐回答(2个)
回答1:

#include "stdio.h"
#include "string.h"
#define M 2 //班级总人数
#define L 20 //姓名长度
#define N 4 //课程总数
//定义结构体类型
typedef struct student{
int num; //姓名
char *name; //学号
float score[N]; //各科成绩
}stuType;
//函数声明
void initial(); //初始化
void staOfStudent(); //个人统计
void staOfClass(); //班级统计
void addStudent(); //增加一名学生的信息
void outStuInformation(char str[L]); //输出一名学生的信息
void search(); //查找某个学生
//全局变量声明
stuType stu[M];
int curStuCount=0; //当前学生人数
//主函数
void main(){
initial(); //初始化
printf("\n");
staOfStudent(); //个人统计
printf("\n");
staOfClass(); //班级统计
printf("\n");
search(); //查找某个学生
}
//函数定义
void initial(){ //初始化
int i;
printf("该班级共%d人,\n",M);
for(i=0;i addStudent(); //增加一名学生的信息
}
void staOfStudent(){ //个人统计
int i,j;
float ave[N]={0.0}; //存放每个学生的平均成绩
float sum[N]={0.0}; //存放每个学生的总成绩
for(i=0;i for(j=0;j sum[i]+=stu[i].score[j];
ave[i]=sum[i]/N;
printf("学生%s的总分为:%.2f,平均分为:%.2f\n",stu[i].name,sum[i],ave[i]);
}
}
void staOfClass(){ //班级统计
int i,j;
float ave[N]={0.0};
float sum[N]={0.0};
for(i=0;i for(j=0;j sum[i]+=stu[j].score[i];
ave[i]=sum[i]/M;
printf("该班级第%门课程的平均分为:%.2f\n",i+1,ave[i]);
}
}
void addStudent(){ //增加一名学生的信息
int k;
printf("\n请输入第%d名学生的学号,姓名:\n",curStuCount+1);
scanf("%d,%s",&stu[curStuCount].num,&stu[curStuCount].name);//注意输入时学号与姓名用“,”隔开
for(k=0;k printf("第%d门课程成绩:",k+1);
scanf("%f",&stu[curStuCount].score[k]);
}
curStuCount++; //计数器+1
}
void outStuInformation(char str[L]){ //输出一名学生的信息
int i,j;
for(i=0;i if(strcmp(str,stu[i].name)==0){
printf("该学生信息如下:\n");
printf("学号:%3d 姓名:%6s\n",stu[i].num,stu[i].name);
printf("成绩:");
for(j=0;j printf("%.2f",stu[i].score[j]);
printf("\n");
break;
}
if(i>=M)
printf("没有找到该学生的信息.\n");
}
void search(){ //查找某个学生
char tmpStr[L];
printf("请输入要查找的学生姓名:");
scanf("%s",tmpStr);
outStuInformation(tmpStr); //调用outStuInformation函数
}

回答2:

#include "stdio.h"
#include "string.h"
#define M 2 //班级总人数
#define L 20 //姓名长度
#define N 4 //课程总数
//定义结构体类型
typedef struct student{
char num[L]; //学号
char name[L]; //姓名
float score; //各科成绩
}stuType;
//函数声明
void initial(); //初始化
void staOfStudent(); //个人统计
void staOfClass(); //班级统计
void addStudent(); //增加一名学生的信息
void outStuInformation(char str[L]); //输出一名学生的信息
void search(); //查找某个学生
//全局变量声明
stuType stu[M];
int curStuCount=0; //当前学生人数
//主函数
int main()
{
initial(); //初始化
printf("\n");
staOfStudent(); //个人统计
printf("\n");
staOfClass(); //班级统计
printf("\n");
search(); //查找某个学生
}
//函数定义
void initial(){ //初始化
int i;
printf("该班级共%d人,\n",M);
for(i=0;i addStudent(); //增加一名学生的信息
}
void staOfStudent(){ //个人统计
int i,j;
float ave[N]={0.0}; //存放每个学生的平均成绩
float sum[N]={0.0}; //存放每个学生的总成绩
for(i=0;i for(j=0;j sum[i]+=stu[j].score;
ave[i]=sum[i]/N;
printf("学生%s的总分为:%.2f,平均分为:%.2f\n",stu[i].name,sum[i],ave[i]);
}
}
void staOfClass(){ //班级统计
int i,j;
float ave[N]={0.0};
float sum[N]={0.0};
for(i=0;i for(j=0;j sum[i]+=stu[j].score;
ave[i]=sum[i]/M;
printf("该班级第%门课程的平均分为:%.2f\n",i+1,ave[i]);
}
}
void addStudent(){ //增加一名学生的信息
int k;
printf("\n请输入第%d名学生的学号,姓名:\n",++curStuCount);
scanf("%s %s",stu[curStuCount].num,stu[curStuCount].name);

for(k=0;k printf("第%d门课程成绩:",k+1);
scanf("%f",&stu[curStuCount].score);
}
curStuCount++; //计数器+1
}
void outStuInformation(char str[L]){ //输出一名学生的信息
int i,j;
for(i=0;i if(strcmp(stu[i].name,str)==0){
printf("该学生信息如下:\n");
printf("学号:%3d 姓名:%6s\n",stu[i].num,stu[i].name);
printf("成绩:");
for(j=0;j printf("%.2f",stu[i].score);
printf("\n");
break;
}
if(i>=M)
printf("没有找到该学生的信息.\n");
}
void search(){ //查找某个学生
char tmpStr[L];
printf("请输入要查找的学生姓名:");
scanf("%s",tmpStr);
outStuInformation(tmpStr); //调用outStuInformation函数
}
改的没错误了。。不过,你这。。还有很多问题。。