C 使用多个相同数组的结构查找浮点平均值
想寻求帮助! 我有三门学科的分数(数学、英语和科学)进入三个不同的数组 我根据建议使用“结构” 我无法打印每个科目和总科目的平均值。平均值显示为零C 使用多个相同数组的结构查找浮点平均值,c,arrays,structure,average,C,Arrays,Structure,Average,想寻求帮助! 我有三门学科的分数(数学、英语和科学)进入三个不同的数组 我根据建议使用“结构” 我无法打印每个科目和总科目的平均值。平均值显示为零 for (int i = 0; i < num && i < Max_NUM; i++) { for (j = 0; j < 3; j++) { //loop calculating sum of array elements sum=(sum+s
for (int i = 0; i < num && i < Max_NUM; i++)
{
for (j = 0; j < 3; j++)
{ //loop calculating sum of array elements
sum=(sum+std[i].subject[j]); //sum of mark for 3 subjects
sum2=sum/num;
std[i].subject[j] =(sum2/Max_Grade)*100; // average mark
//for total average mark (sub 0 avg mark+ sub 1 avg mark+ sub 2 avg mark)
totalSUB =(std[i].subject[0]+std[i].subject[1]+std[i].subject[2])/3;
}
//to print 3lines: for average marks of each subject: sub 0, sub 1, sub2
printf("\nAverage mark: %.2f",std[i].subject[j]);
//to print average marks for each subject: sub 0, sub 1, sub2
printf("\nTotalSUB- Average mark: %.2f",totalSUB);
return 0;
} //end of if
for(int i=0;i
输出错误,如所附图片所示:
完整代码如下:
#include <stdio.h>
#include <stdlib.h>
#define Max_Grade 415
#define Max_NUM 150
int main()
{
int i,j,num;//variable declaration
double avg=0.0,sum=0.0, sum2=0.0, totalSUB=0.0;
struct student
{
double subject[3];
};
struct student std[Max_NUM];
printf("Enter number of students: ");
scanf("%d",&num);
// for loop to read i'th student's j'th subject
for (int i = 0; i < num && i < Max_NUM; i++)
{
for (j = 0; j < 3; j++)
{
printf("Enter marks of student %d for subject %d: ", i, j);
scanf("%f", &std[i].subject[j]);
//sleep(2);
}
}
for (int i = 0; i < num && i < Max_NUM; i++)
{
for (j = 0; j < 3; j++)
{ //loop calculating sum of array elements
sum=(sum+std[i].subject[j]); //sum of mark for 3 subjects
sum2=sum/num;
std[i].subject[j] =(sum2/Max_Grade)*100; // average mark
//for total average mark (sub 0 avg mark+ sub 1 avg mark+ sub 2 avg mark)
totalSUB =(std[i].subject[0]+std[i].subject[1]+std[i].subject[2])/3;
}
//to print 3lines: for average marks of each subject: sub 0, sub 1, sub2
printf("\nAverage mark: %.2f",std[i].subject[j]);
//to print average marks for each subject: sub 0, sub 1, sub2
printf("\nTotalSUB- Average mark: %.2f",totalSUB);
return 0;
} //end of if
} //end of int main()
#包括
#包括
#定义最高等级415
#定义最大数量150
int main()
{
int i,j,num;//变量声明
双平均值=0.0,总和=0.0,总和=0.0,总和=0.0,总和=0.0;
结构学生
{
双重主体[3];
};
结构学生标准[Max_NUM];
printf(“输入学生人数:”);
scanf(“%d”和&num);
//循环阅读第i个学生的第j个主题
对于(int i=0;i
您可以达到如下所示的效果。用你想要的科目建立一个结构,并为那么多的学生分配记忆。在每个学生std
的循环中,您可以读取每个学生的科目分数。同样,你也可以计算平均分数
struct student {
int subject[3];
};
struct student std[Max_NUM];
printf("Enter number of students: ");
scanf("%d",&num);
/* for loop to read i'th student's j'th subject*/
for (int i = 0; i < num && i < Max_NUM; i++) {
for (j = 0; j < 3; j++) {
printf("Enter marks of student %d for subject %d: ", i, j);
scanf("%d", &std[i].subject[j]);
}
}
struct学生{
国际主题[3];
};
结构学生标准[Max_NUM];
printf(“输入学生人数:”);
scanf(“%d”和&num);
/*循环阅读第i个学生的第j个主题*/
对于(int i=0;i
使用函数或结构。你好,谢谢回复。输入标记将是浮动的,因此我修改了double j代码>和双主题[3]在结构中的code>将printf行中的student更改为thisprintf(“为科目%f输入学生%d\n的分数:”,i,j)代码>但在scanf行中出错-错误消息:数组下标不是整数-在scanf(“%d”,&std[i]。主题[j])
@SKmay,j
是三个非标记变量的主题之一。您需要的是在struct student声明中键入一个double
而不是int
,并且在读取scanf
中的%d
时将其更改为%f
说明符。感谢sunil找到了平均分数。我很难打印每个学生的平均值。我在我的主要职位上做了修改。谢谢你的帮助