考试问题(线性表)

考试问题(线性表)

时间: 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞