c语言结构体循环又有问题 求大佬解决一下

1322:【结构体数组】计算学生总成绩及输出高分学生信息时间限制:1Sec内存限制:1MB提交:303解决:149[提交][状态][讨论版]题目描述有若干个学生的信息,每... 1322: 【结构体数组】计算学生总成绩及输出高分学生信息
时间限制: 1 Sec 内存限制: 1 MB
提交: 303 解决: 149
[提交][状态][讨论版]
题目描述
有若干个学生的信息,每个学生的信息包括学号、姓名、3门课(高数、英语、C语言)的成绩和总成绩。其中:学号由不少于11位、不超过15位数字组成;姓名不超过10个汉字,中间不含空格;各门课的成绩为0-100之间的整数。

输入
测试数据有多组,每组的第一行为一个正整数n(n不超过100),表示有n个学生的信息,每个学生的信息单独占一行,学生的各数据之间由一个空格分隔。

输出
对于每组测试数据,计算出每个学生的总成绩,输出总成绩高于270分的学生信息,输出每个学生的信息单独占一行,各数据之间由一个空格分隔。

样例输入
5
20151214001 张老三 98 89 92
20151214002 李老四 79 67 58
20151214003 王老五 90 86 88
20151214004 李麻子 98 89 92
20151214005 赵二财 92 75 83
样例输出
20151214001 张老三 98 89 92
20151214004 李麻子 98 89 92
#include<stdio.h>
struct student
{
char num[16];
char name[12];
int score[3];
int total;

} ;
int main()
{
struct student st[100];
int i,j,sum;
int m,t;
int max;
scanf("%d",&m);
getchar();
while(m--)
{
for(i=0;i<m;i++)
{
scanf("%s%s",st[i].num,st[i].name);
for(j=0;j<3;j++)
scanf("%d",&st[i].score[j]);
}
for(i=0;i<m;i++)
{
sum=0;
for(j=0;j<3;j++)
sum=sum+st[i].score[j];
st[i].total=sum;
}
for(i=0;i<m;i++)
{
if(st[i].total>270)
{
printf("%s %s",st[i].num,st[i].name);
for(j=0;j<3;j++)
{

printf(" %d",st[i].score[j]);

}
printf("\n");
}
}}

}
展开
 我来答
司马刀剑
高粉答主

2018-01-30 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7316万
展开全部
#include<stdio.h>
#define N 3
#define M 5
typedef struct
student
{
double grade[N]; //储
}STU; //储存5名学生的结构体数组
void add_average(STU stu[],int n) //求各科平均分的函数
{
int i, j, sum;
double avg;
for(i=0; i<N; i++)
{
sum= 0;
for(j=0; j<n; j++)
{
sum= sum + stu[i].grade[j];
}
avg = sum*1.0/n;
printf("\n第%d科的平均成绩为:%.2f\n",i+1 ,avg);
}
}
int main() //主函数
{
int i,j;
STU st[M];
for(i=0; i<M; i++)
{
printf("请分别输入第%d个学生的三科成绩\n", i+1);
for(j=0; j<N; j++)
{
scanf("%lf", &st[i].grade[j]);
}
}
add_average(st,M);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Yuqi_Tan

2018-01-30 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3416万
展开全部

你发的程序有几处错误:

1、 int m,t;改成:int m;

2、去掉int max;这一句

3、while(m--)这一行为多余的循环,去掉本行及下一行的左花括号,相应地,最后一行的右花括号也去掉。

修改之后再经优化,最后的程序如下:

#include<stdio.h>
struct student
{
char num[16];
char name[12];
int score[3];
int total;
};
int main()
{
struct student st[100];
int i,j,sum;
int m;
scanf("%d",&m);
getchar(); 
for(i=0;i<m;i++)
{
scanf("%s%s",st[i].num,st[i].name);
for(j=0;j<3;j++)scanf("%d",&st[i].score[j]);
}
for(i=0;i<m;i++)
{
sum=0;
for(j=0;j<3;j++)sum=sum+st[i].score[j];
st[i].total=sum;
}
for(i=0;i<m;i++)
if(st[i].total>270)
{
printf("%s %s",st[i].num,st[i].name);
for(j=0;j<3;j++)printf(" %d",st[i].score[j]);
printf("\n");
}
}

已经运行过。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式