我需要介绍一个编号。的学生,他们的姓名,姓氏和分数(3分)。必须对分数进行平均,然后再将通过的分数按插入的相反顺序显示。问题是,例如,我有3个学生,我需要在结构中引入4次才能显示给我结果,我需要一个接一个,而不是空格或其他东西。有人可以帮助我吗?谢谢!
#include <stdio.h>
#include <stdlib.h>
struct students
{
char name[100];
char surname[100];
float a,b,c;
};
int main()
{
int n,i,j;
scanf("%d",&n);
struct students s[n];
for(i=1;i<=n;i++)
{
scanf("\n%s %s %f %f %f\n",s[i].name,s[i].surname,&s[i].a,&s[i].b,&s[i].c);
}
for(j=n;j>=1;j--)
{
float m;
m=(s[j].a+s[j].b+s[j].c)/3;
if(s[j].a >= 5 && s[j].b >= 5 && s[j].c >= 5 && m >= 6)
{
printf("%s %s %.2f\n", s[j].name, s[j].surname, m);
}
}
return 0;
}
答案 0 :(得分:0)
问题是您有一个结构数组,并且索引错误。
给定n = 3,则有一个数组,由3个索引为0、1和2的结构组成。
首先,您需要将循环的结构读取更改为此
for(i=0;i<n;i++) {
scanf("\n%s %s %f %f %f\n",s[i].name,s[i].surname,&s[i].a,&s[i].b,&s[i].c); }
对于下一个for循环,您需要将其更改为此
for(j=n - 1;j>=0;j--)
希望这会有所帮助