P5742 【深基7.例11】评等级

一:题目

P5742 【深基7.例11】评等级_第1张图片

二:思路分析

1.这道题如果直接定义一个结构体数组,数组大小太大,会导致堆溢出

P5742 【深基7.例11】评等级_第2张图片

2.再细看题目的要求,要求我们写一个参数为结构体的函数

3.如果直接写会导致堆溢出,我们可以用calloc在栈区开辟一块结构体大小的空间

三:代码

#include 
#include 
//P5742评等级
struct Stu
{
	int s;
	int g;
	int h;
	int sum;
};
void Func(struct Stu* p)
{
	if ((p->h + p->s > 140) && (p->sum >= 800))
	{
		printf("Excellent\n");
	}
	else
		printf("Not excellent\n");
}
int main()
{
	int n = 0;
	int i = 0;
	scanf("%d", &n);
	int sz = sizeof(struct Stu);
	struct Stu* p = (struct Stu*)calloc(n, sz);
	for (i = 0; i < n; i++)
	{
		scanf("%d %d %d", &(p + i)->s, &(p + i)->g, &(p + i)->h);
		(p + i)->sum = 7*(p + i)->g + 3*(p + i)->h;
	}
	for (i = 0; i < n; i++)
	{
		Func(p + i);
	}
	free(p);
	
	return 0;
}

你可能感兴趣的:(题目讲解,算法,数据结构,学习方法,线性代数,c语言)