考试问题(线性表)
时间: 1ms 内存:128M
描述:
(线性表)输入考生姓名和获得的分数(3门考试)然后列出清单:
1.所有通过考试的考生(3门考试>=180分)
2.没有通过考试的考生
3.所有考试拿100分的考生
输入:
输入:学生总数n
输入:
名字1 分数1 分数2 分数3
名字2 分数1 分数2 分数3
名字3 分数1 分数2 分数3
。。。
名字n 分数1 分数2 分数3
输出:
示例输入:
5
zhao 60.0 70.0 80.0
qian 50.0 65.0 90.0
sun 100.0 100.0 100.0
li 30.0 40.0 20.0
zhou 100.0 90.0 70.0
示例输出:
zhao -- pass exam
qian -- pass exam
sun -- pass exam
zhou -- pass exam
li -- not pass exam
sun -- 3 x 100.0
提示:
参考答案(内存最优[752]):
#include<stdio.h>
#include<stdlib.h>
struct student
{
char name[10];
float a[3];
float sum;
}*p;
int main()
{
int m,i;
scanf("%d",&m);
p=(struct student *)malloc(m*sizeof(struct student));
for(i=0;i<m;i++)
{
scanf("%s%f%f%f",p[i].name,&p[i].a[0],&p[i].a[1],&p[i].a[2]);
p[i].sum=p[i].a[0]+p[i].a[1]+p[i].a[2];
}
for(i=0;i<m;i++)
if(p[i].sum>=180)
printf("%s -- pass exam\n",p[i].name);
for(i=0;i<m;i++)
if(p[i].sum<180)
printf("%s -- not pass exam\n",p[i].name);
for(i=0;i<m;i++)
if(p[i].sum==300)
printf("sun -- 3 x 100.0\n",p[i].name);
return 0;
}
参考答案(时间最优[0]):
#include<stdio.h>
#include<stdlib.h>
struct student
{
char name[10];
float a[3];
float sum;
}*p;
int main()
{
int m,i;
scanf("%d",&m);
p=(struct student *)malloc(m*sizeof(struct student));
for(i=0;i<m;i++)
{
scanf("%s%f%f%f",p[i].name,&p[i].a[0],&p[i].a[1],&p[i].a[2]);
p[i].sum=p[i].a[0]+p[i].a[1]+p[i].a[2];
}
for(i=0;i<m;i++)
if(p[i].sum>=180)
printf("%s -- pass exam\n",p[i].name);
for(i=0;i<m;i++)
if(p[i].sum<180)
printf("%s -- not pass exam\n",p[i].name);
for(i=0;i<m;i++)
if(p[i].sum==300)
printf("sun -- 3 x 100.0\n",p[i].name);
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。