【C语言】PAT乙级1004 成绩排名 :读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

c语言输入字符时控制符%s前加空格的原因解释

c语言指针与结构体之内存动态分配

注:本题无需写的像我一样复杂,使用结构体数组 动态内存分配 等手段的目的是减少占用内存和加强对这些手段的理解,一般解决本题不需要以上手段。

直接上代码!

#include <stdio.h>
#include<stdlib.h>
//结构体定义
struct condition {
	char name[11];
	char id[11];
	int score;
};
int main(void)
{
	int n = 0;
	int max = 0;
	int min = 0;
	int count = 0;
	scanf("%d", &n);
    //动态内存分配结构体数组
	struct condition* ptr = (struct condition*)malloc(n * sizeof(struct condition));
    //为结构体数组成员赋值
	for (count = 0;count < n;count++)
	{
		scanf(" %s %s %d",ptr[count].name, ptr[count].id, &ptr[count].score);
	}
    //最简单的查找最大值和最小值算法
	for (count = 1;count < n;count++)
	{
		if (ptr[count].score > ptr[max].score)
		{
			max = count;
		}
		if (ptr[count].score < ptr[min].score)
		{
			min = count;
		}
	}
    /*输出,此处%s不可写为% s(vs2019会自动将%s变为% s),会报警告,原因是pat使用gcc编译器,gcc中printf的%s加空格有作用,但我们没有使用这个性质,而vs2019没有这个性质*/
	printf("%s %s\n", ptr[max].name, ptr[max].id);
	printf("%s %s", ptr[min].name, ptr[min].id);
	free(ptr);
	return 0;
}

 【C语言】PAT乙级1004 成绩排名 :读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

上一篇:【C++学习总结2-6】类和对象(封装)—— 重载


下一篇:C++智能指针