题8.15:有一个班4个学生, 5门课程。 ①求第1门课程的平均分; ②找出有两门以上课程不及格的学生, 输出他们的学号和全部课程成绩及平均成绩; ③找出平均成绩在90分以上或全部课程成绩在85分以上

本文主要是介绍题8.15:有一个班4个学生, 5门课程。 ①求第1门课程的平均分; ②找出有两门以上课程不及格的学生, 输出他们的学号和全部课程成绩及平均成绩; ③找出平均成绩在90分以上或全部课程成绩在85分以上,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

本题是谭浩强《C程序设计课后习题》题8.15。
题目:
有一个班4个学生, 5门课程。
①求第1门课程的平均分;
②找出有两门以上课程不及格的学生, 输出他们的学号和全部课程成绩及平均成绩;
③找出平均成绩在90分以上或全部课程成绩在85分以上的学生。
分别编3个函数实现以上3个要求。


以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj

一、解题思路

思路:
本题采用二维数组来存放4个学生的5门课程,定义int a[4][5],在编写函数时,我们需要使用指针进行遍历.
大家都了解一维数组转换成指针是这样的:a[4]等价*(a+4)
那么二维数组的转换方式就是a[4][5]等价*(*(a+4)+5)
大家只要理解了这个转换方式,然后分别在所编写的函数中使用指针的方式替换数组,这道题就解出来了,求平均分和每科成绩都不难,定义两个辅助变量进行判断即可。

二、代码部分

1.引入库

代码如下(示例):

#include<stdio.h>

2.主函数部分

代码如下(示例):

int i, j;
void avg1(int a[][5], int n)
{float sum=0;for (i = 0; i < n; i++)for (j = 0; j < 5; j++)sum += *(*(a + i) + 0);printf("第一门课的平均成绩为:%f\n", sum / 5.0);
}
void fall(int a[][5], int n)
{for (i = 0; i < n; i++){int fall_count = 0;float  sum = 0;for (j = 0; j < 5; j++){if (/*a[i][j]*/*(*(a + i) + j) < 60)fall_count++;}if (fall_count <= 2)continue;printf("学号:%d有两门以上课程不及格,其全部成绩是:\n ", i + 1);for (j = 0; j < 5; j++){sum += *(*(a + i) + j) /*a[i][j]*/;printf("%d ", *(*(a + i) + j)/* a[i][j]*/);}printf("\n平均分为:%f\n", sum / 5.0);}
}
void seek(int a[][5], int n)
{/*找出平均成绩在90分以上或全部课程成绩在85分以上的学生。*/for (i = 0; i < n; i++){int fall_count = 0;float  sum = 0;for (j = 0; j < 5; j++){if (/*a[i][j]*/*(*(a + i) + j) >= 85)fall_count++;sum += *(*(a + i) + j)/*a[i][j]*/;}if (fall_count == 5 || sum / 5.0 >= 90.0)printf("学号为%d的学生平均成绩在90分以上或全部课程成绩在85分以上。\n", i + 1);}
}
int main()
{int a[4][5];printf("请输入这4名学生的5门成绩:\n");for (i = 0; i < 4; i++)for (j = 0; j < 5; j++)scanf("%d",*(a+i)+j /*&a[i][j]*/);avg1(a, 4);fall(a, 4);seek(a, 4);return 0;
}

三、执行结果

在这里插入图片描述

输出:

请输入这4名学生的5门成绩:
100 89 86 88 87
100 89 86 50 20
100 89 86 88 87
100 89 86 88 60
第一门课的平均成绩为:400.000000
学号为1的学生平均成绩在90分以上或全部课程成绩在85分以上。
学号为3的学生平均成绩在90分以上或全部课程成绩在85分以上。

这篇关于题8.15:有一个班4个学生, 5门课程。 ①求第1门课程的平均分; ②找出有两门以上课程不及格的学生, 输出他们的学号和全部课程成绩及平均成绩; ③找出平均成绩在90分以上或全部课程成绩在85分以上的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/590562

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.