C程序设计(第五版)【谭浩强】第八章课后习题15

该程序实现了一个C语言的课程管理系统,包括计算第一门课程的平均分,找出有两门以上课程不及格的学生,以及找出平均成绩90分以上或所有课程85分以上的学生。程序通过二维数组存储学生分数,定义并调用了相应功能的函数。

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

C程序设计(第五版)【谭浩强】第八章课后习题15

//4个学生,5门课程
//①函数1:求第一门课程的平均分
//②函数2:找出有2以上课程不及格的学生,输出其学号和全部成绩
//③函数3:平均成绩在90分以上或全部课程成绩在85分以上的学生(输出学号即可)

#include<stdio.h>
float func1(float(*p)[5], int n) //n表示行数
{
	float aver = 0, sum = 0;
	for (int i = 0; i < n; i++)
	{
		sum = sum + *(*(p+i)+0);
	}
	aver = sum / n;
	return aver;
}

void func2(float(*p)[5], int n)
{		
	int flag[4] = { 0 }; //记录每个学生低于60分的课程的个数

	for (int i = 0; i < n; i++)
	{	

		for (int j = 0; j < 5; j++)
		{
			if (*(*(p + i) + j) < 60)
			{
				flag[i]++;
			}
		}
	}
	for (int i = 0; i < 4; i++)
	{
		if (flag[i] > 1)
		{
			printf("No.%d\t", i + 1);  //学号
			for (int j = 0; j < 5; j++)
			{
				printf("%.2f\t", *(*(p + i) + j));
			}
			printf("\n");
		}
		else break;
	}
}

void func3(float(*p)[5], int n)
{
	int flag1[4] = { 0 }, flag2[4] = { 1 }, sum[4] = { 0 }, aver[4] = { 0 };
	//计算每个学生的平均分并在flag1中记录
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			sum[i] += *(*(p + i) + j);
		}
		aver[i] = sum[i] / 5;
		if (aver[i] >= 90)
			flag1[i] = 1;
	}
	//检查每个学生每门课程的成绩,若有低于85的,则将flag2赋值为0;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			if (*(*(p + i) + j) < 85)
				flag2[i] = 0;
			break;
		}

	}

	
	//输出flag1==1||flag2==1
	for (int i = 0; i < n; i++)
	{
		if (flag1[i] == 1 || flag2[i]== 1)
		{
			printf("No.%d\t", i + 1);  //学号
			printf("\n");

		}
	}
}

int main()
{
	float score[4][5] = { {34,56,28,92,98},
		{96,87,89,86,91},
		{96,105,87,200,98},
		{97,97,96,97,90} };
	float(*ps)[5] = score;
	
	//按一定的格式将课程分数和学号原样输出
	for (int i = 0; i < 6; i++)
	{
		if (i == 0)
		{
			printf("Num\t");
		}
		else
			printf("C.No.%d\t", i);
	}
	printf("\n");
	for (int i = 0; i < 4; i++)
	{
		printf("No.%d\t", i + 1);  //学号
		for (int j = 0; j < 5; j++)
		{
			printf("%.2f\t", *(*(ps + i) + j));
		}
		printf("\n");

	}
	printf("\n");

	//调用函数1求第一门课程的平均成绩
	printf("the first subject's average is:%.2f\n", func1(ps, 4));

	//调用函数2求解问题②找出有2以上课程不及格的学生,输出其学号和全部成绩
	printf("The following students have failed two or more subjects:\n");
	//表头
	for (int i = 0; i < 6; i++)
	{
		if (i == 0)
		{
			printf("Num\t");
		}
		else
			printf("C.No.%d\t", i);
	}
	printf("\n");
	//调用函数2
	func2(ps, 4);


	//调用函数3
	printf("Students with an average score of 90 or more or all courses with a score of 85 or more:\n");
	func3(ps, 4);


	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值