PAT乙级1004题解(C语言)实现

本文介绍了如何使用C语言解决PAT乙级考试中的一道题目,该题目涉及结构体和数组,要求找出最高分和最低分学生的姓名和学号。博主详细解析了代码实现,包括结构体定义、输入输出及查找最大值和最小值的过程。同时,分享了使用结构体的经验和技巧,强调了实践的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好啊,这里是Cyber Striver的博客。今天我继续为大家带来PAT乙级的题解。


目录

题目

题解

思路

经验总结


题目

 


题解

#include <stdio.h>
int main()
{
    struct 
	{
		char name[11];
		char number[11];
		int score;
	}a[10000];
	int n = 0;
	scanf("%d", &n);
	int i = 0,max=0,min=0;
	for (i = 0; i < n; i++)
	{
		scanf("%s", &(a[i]).name);
		scanf("%s", &(a[i]).number);
		scanf("%d", &(a[i]).score);
	}
	int MAX = a[0].score,MIN=a[0].score;
	for (i = 0; i < n; i++)
	{
		if (a[i].score > MAX)
		{
			MAX = a[i].score;
			max = i;
		}
	}
	for (i = 0; i < n; i++)
	{
		if (a[i].score < MIN)
		{
			MIN = a[i].score;
			min = i;
		}
	}
	printf("%s %s\n", (a[max]).name, (a[max]).number);
	printf("%s %s\n", (a[min]).name, (a[min]).number);
	return 0;
}


思路

  这道题比较简单,考察的是比较基本的结构体的知识。在一看见这道题的时候我就想到了要用一个结构体来容纳不同学生的各项数据。思路也比较简单:先创建结构体,然后把数据存在结构体中,然后通过比大小的程序得出最大值和最小值,最后输出。

  虽然比较简单,但是跟着我一起来分析分析代码吧!


 struct 
	{
		char name[11];
		char number[11];
		int score;
	}a[10000];
	int n = 0;
	scanf("%d", &n);
	int i = 0,max=0,min=0;
	for (i = 0; i < n; i++)
	{
		scanf("%s", &(a[i]).name);
		scanf("%s", &(a[i]).number);
		scanf("%d", &(a[i]).score);
	}

  这一部分,我创建了一个结构体类型的数组,因为怕输出的太多了导致溢出问题,所以就直接怼到10000个了。

  创建了max,min用来记录最大最小值的下标以便后期追踪打印。

  然后就开始输入各项数据。


  

int MAX = a[0].score,MIN=a[0].score;
	for (i = 0; i < n; i++)
	{
		if (a[i].score > MAX)
		{
			MAX = a[i].score;
			max = i;
		}
	}
	for (i = 0; i < n; i++)
	{
		if (a[i].score < MIN)
		{
			MIN = a[i].score;
			min = i;
		}
	}
	printf("%s %s\n", (a[max]).name, (a[max]).number);
	printf("%s %s\n", (a[min]).name, (a[min]).number);

  这一部分实现了,找到成绩的最大值和最小值,并把它们对应的下标存储到max和min当中以便接下来打印。


经验总结

  记得没错的话,这是我第一次在刷题中使用结构体,一开始使用的时候还有点生疏,甚至是结构体的一些基本定义方式都有点模糊不清了!学而不用则忘啊!

  1)结构体的定义方式:

struct 
	{
		char name[11];
		char number[11];         语句;不要忘记打“:”
		int score;
	}a[10000];               这里是需要定义的变量名,注意变量名后也需要“:”     

    2)结构体类型的定义方式:

  第一种:

struct student
	{
		char name[11];
		char number[11];
		int score;
	};                //定义了名为student的结构体类型。注意大括号面的“;”
student a[10000];

  第二种:

typedef struct      //注意student这时必须在末尾而不能在struct左边。
	{
		char name[11];
		char number[11];
		int score;
	}student;
student a[10000];

  3)一些运算符的优先级:(如果你拿不定把握,用括号就完事了!)

 


本次博客到这里就结束了,如果你觉得我的文章还不错的话,请给我多多点赞评论哦!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值