#include
#include
struct student
{
int id;
int score;
int average;
}s1[4];
int main()
{
double sum=0;
for(int i=0;i<4;i++)
{
scanf("%d",&s1[i].score);
//printf("%lf",s1[i].score);
sum+=s1[i].score;
//printf("%lf",sum);
double avg=sum/4;
printf("%lf",avg);
if (avg*11/101;
}
else if(avg*10.5/1011/10>s1[i].score)
{
s1[i].average=2;
}
else
{
s1[i].average=3;
}
//printf("%d %d %d\n",s1[i].id,s1[i].score,s1[i].average);
}
return 1;
首先,你在每次循环时都计算了平均值,但你应该在循环外计算平均值。其次,你没有给结构体数组的 id
字段赋值。另外,你的 return 1;
应该改为 return 0;
,因为通常情况下,程序成功执行会返回0。
#include<stdio.h>
#include<string.h>
struct student
{
int id;
int score;
int average;
} s1[4];
int main()
{
double sum = 0;
for(int i = 0; i < 4; i++)
{
s1[i].id = i + 1;
scanf("%d", &s1[i].score);
sum += s1[i].score;
}
double avg = sum / 4;
printf("Average: %lf\n", avg);
for(int i = 0; i < 4; i++)
{
if (avg * 11 / 10 < s1[i].score)
{
s1[i].average = 1;
}
else if (avg * 10.5 / 10 < s1[i].score && avg * 11 / 10 > s1[i].score)
{
s1[i].average = 2;
}
else
{
s1[i].average = 3;
}
printf("%d %d %d\n", s1[i].id, s1[i].score, s1[i].average);
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:线性表是具有「相同数据类型」的n(n≥0)个数据元素的「有限序列」,其中n为元素的个数,当n = 0时,线性表为空
假设线性表名为L,则一般表示为 L= {a1,a2,a3,…,aj,a(j + 1),…,an}
线性表的几个概念