#include<stdio.h>int main (){ void averagescore(int a[][5],float ave1[10]); void kcaverage(int a[][5],float ave2[10]); int high(int a[][5]); int stu[10][5]; float ave1[10],ave2[5]; int i,j,h; printf("请输入该10个学生的成绩:"); for(i=0;i<10;i++) for(j=0;j<5;j++) { scanf("%d",&stu[i][j]); } printf("每个学生的成绩平均值为:\n"); averagescore(stu,ave1); printf("\n每门课程的平均分为:\n"); kcaverage(stu,ave2); h==high(stu[10][5]); printf("最高的平均分为:");return 0;}void averagescore(int a[10][5],float ave1[10]){ int i,j; float sum,ave; for(i=0;i<10;i++) { sum=0.0; for(j=0;j<5;j++) { sum+=a[i][j]; } ave=sum/5; printf("第%d个学生的平均分为:%f",i+1,ave); }}void courseaverage(int a[10][5],float ave2){ int i,j; float sum,ave; for(i=0;i<5;i++) { for(j=0,sum=0.0;j<10;j++) sum+=a[j][i]; ave=sum/10; printf("第%d的课程平均分为:",i+1,ave);}}int high(int a[10][5]){ int i,j,ave=0,stu; for(i=0;i<10;i++) { for(j=0;j<5;j++) { if(a[i][j]>ave) { ave=a[i][j]; } } } return ave;}
时间: 2024-04-28 09:23:11 浏览: 93
这段代码是一个计算10个学生5门课程成绩的平均分和每个课程的平均分,以及最高平均分的程序。其中,函数averagescore用于计算每个学生的平均分,函数kcaverage用于计算每门课程的平均分,函数high用于计算最高平均分。但是,该代码存在一些问题:
1. 函数courseaverage未定义,但在主函数中被调用。
2. 函数kcaverage的形参是一个一维数组,但在函数中使用了二维数组a[10][5]。
3. 函数high的返回值类型是int,但应该是float,因为最高平均分可能为小数。
如果您需要我修改这段代码,请告诉我您的具体需求,我会尽力满足您的要求。
相关问题
#include<stdio.h> struct Student { int age; char name[100]; float score[5]; }; int main(void) { struct Student stu1; int i; float ave,sum; stu1.age=18 strcpy(stu1.name,"zhangsan"); for(i=0;i<5;i++) scanf("%f",&stu.score[i]); for(i=0;i<5;i++) { sum=sum+stu1.score; } printf("",stu1.score); } 续写一下最低分,最高分。
可以在输入分数的同时,记录最低分和最高分,然后输出即可。
代码如下:
#include<stdio.h>
#include<string.h>
struct Student {
int age;
char name[100];
float score[5];
};
int main(void)
{
struct Student stu1;
int i;
float ave,sum, min, max;
stu1.age=18;
strcpy(stu1.name,"zhangsan");
// 输入分数同时记录最低分和最高分
scanf("%f",&stu1.score[0]);
min = stu1.score[0];
max = stu1.score[0];
sum = stu1.score[0];
for(i=1;i<5;i++)
{
scanf("%f",&stu1.score[i]);
if(stu1.score[i] < min) {
min = stu1.score[i];
}
if(stu1.score[i] > max) {
max = stu1.score[i];
}
sum += stu1.score[i];
}
// 计算平均分
ave = sum / 5;
// 输出结果,包括最低分、最高分和平均分
printf("Name: %s\nAge: %d\n", stu1.name, stu1.age);
printf("Scores: ");
for(i=0;i<5;i++) {
printf("%.1f ", stu1.score[i]);
}
printf("\n");
printf("Minimum score: %.1f\n", min);
printf("Maximum score: %.1f\n", max);
printf("Average score: %.1f\n", ave);
return 0;
}
注意,此处代码有个小错误,输入分数时循环中的变量写成了stu,应该是stu1。已经进行了修改。
#include <stdio.h> #include <stdlib.h> #define N 10 typedef struct student { long studentID; char studentName[20]; float score[3]; }STUDENT; void input(STUDENT * stu_inf,int n) { printf("请输入学生数据(10个):\n"); int j; for(j=0;j<n;j++) { scanf("%ld",&stu_inf->studentID); scanf("%s",stu_inf->studentName); for(int k=0;k<3;k++) scanf("%f",&stu_inf->score[k]); stu_inf++; } } void average(STUDENT * stu_inf,int n,float* ave_course) { int i,j; for(i=0;i<3;i++) { for(j=0;j<n;j++) {ave_course[i] += stu_inf[j].score[i];} } for(j=0;j<3;j++) {ave_course[j]/=n;} }int main() { int i; float av[3]={0};//分别存储三门课的平均分 STUDENT *inf=(STUDENT*)malloc(N*sizeof(STUDENT)); input(inf,N);//输入结构体数组 average(inf,N,av);//计算平均分 STUDENT m=max(inf,N);//找最高分学生 printf("\n三门课的平均分如下:\n"); for(i=0;i<3;i++) {printf("%.2d ",av[i]);} printf("\n最高分学生数据如下:\n",*av); printf("%ld %s ",m.studentID,m.studentName);//输出最高分学生的学号姓名 int su=0; for(i=0;i<3;i++) {printf("%.2f ",m.score[i]);}//输出最高分学生的三门课 free(inf); return 0; }查错
在程序中调用了一个未定义的函数max,需要先定义或导入该函数。另外,在输出最高分学生数据时,printf函数的格式控制字符串中应当包含占位符,如"%ld %s"。最后,计算平均分时,输出应当使用"%.2f"格式控制字符串来控制小数位数。修改后的程序如下:
```
#include <stdio.h>
#include <stdlib.h>
#define N 10
typedef struct student {
long studentID;
char studentName[20];
float score[3];
} STUDENT;
void input(STUDENT *stu_inf, int n) {
printf("请输入学生数据(10个):\n");
int j;
for (j = 0; j < n; j++) {
scanf("%ld", &stu_inf->studentID);
scanf("%s", stu_inf->studentName);
for (int k = 0; k < 3; k++) {
scanf("%f", &stu_inf->score[k]);
}
stu_inf++;
}
}
void average(STUDENT *stu_inf, int n, float* ave_course) {
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < n; j++) {
ave_course[i] += stu_inf[j].score[i];
}
}
for (j = 0; j < 3; j++) {
ave_course[j] /= n;
}
}
STUDENT max(STUDENT *stu_inf, int n) {
int i, j, max_index = 0;
float max_score = 0.0;
for (i = 0; i < n; i++) {
float sum = 0.0;
for (j = 0; j < 3; j++) {
sum += stu_inf[i].score[j];
}
if (sum > max_score) {
max_score = sum;
max_index = i;
}
}
return stu_inf[max_index];
}
int main() {
int i;
float av[3] = {0}; //分别存储三门课的平均分
STUDENT *inf = (STUDENT*)malloc(N * sizeof(STUDENT));
input(inf, N); //输入结构体数组
average(inf, N, av); //计算平均分
STUDENT m = max(inf, N); //找最高分学生
printf("\n三门课的平均分如下:\n");
for (i = 0; i < 3; i++) {
printf("%.2f ", av[i]);
}
printf("\n最高分学生数据如下:\n");
printf("%ld %s ", m.studentID, m.studentName); //输出最高分学生的学号姓名
for (i = 0; i < 3; i++) {
printf("%.2f ", m.score[i]); //输出最高分学生的三门课
}
printf("\n");
free(inf);
return 0;
}
```
阅读全文