IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 两种计算平均成绩题型【C实现】,博主精心整理,值得一读 -> 正文阅读

[Python知识库]两种计算平均成绩题型【C实现】,博主精心整理,值得一读

系列文章目录


有需要的小伙伴们可以点进来看看哟,c_基础算法详解,内容详细,包看包懂!!!

>求两个整数的较大值得三种方法<



前言

计算平均成绩是变成入门的基础题,今天给大家带来两种题型,一种是直接求几个数的平均值,一种是类似于公务员打分,去掉最高分和最低分求出平均值。


一、普通平均值

这里用牛客网一道例题讲解。

计算平均成绩
题目
这里有几点需要注意,输入的成绩是整数,但平均值是浮点数,并且保留一位小数

方法一

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int d = 0;
	int e = 0;
	scanf("%d %d %d %d %d", &a, &b, &c, &d, &e);
	double avg = (a + b + c + d + e) / 5.0;  //  因为是浮点数所以用 double 类型定义, 并且要除以 5.0,而不是 5,需要注意
	printf("%.1lf", avg);  //  因为是保留一位小数,所以要 .1lf
	return 0;
}

保留几位小数就在打印的时候写 .多少,比如保留两位就是 .2lf ,因为是double 类型,所以是 lf 而不是 f ,整型除以整型只能得到整型,就算是用 double 定义的也没用,所以要除以 5.0 ,而不是 5。

方法二

为了避免输入的冗余,我们可要考虑用数组输入,不然以后要我们输入100个数根本写不出来。

#include <stdio.h>

int main()
{
	int sum = 0;
	int arr[20] = { 0 };
	for (int i = 0; i < 5; i++)
	{
		scanf("%d", &arr[i]);
		sum += arr[i];
	}
	double avg = sum / 5.0;
	printf("%.1lf\n", avg);
	return 0;
}

利用 for 循环对数组进行输入,并且同时可以求出数组里五个元素的和,比第一种方法更具有通用性,需要注意,我们在创建数组的时候一定要初始化数组,数组个数可以给的多一点,我们可以利用 for 循环控制输入的个数

二、较为特殊的计算平均成绩

我们这里还是用一道题目举例
公务员面试
公务员面试
这道题需要注意的点是去掉最高分和最低分,输入为百分之,意味着分数不会超过100,并且输出小数保留两位,并且要考虑到分数一样的情况

错误示范

#include <stdio.h>

int main()
{
	int arr[7] = { 0 };
	int sz = sizeof(arr) / sizeof(arr[0]);  //  计算出数组的长度
	int max = 0;
	int min = 0;
	int sum = 0;
	for (int i = 0; i < sz; i++)
	{
		scanf("%d", &arr[i]);
		sum += arr[i];
	}
	for (int j = 0; j < sz; j++)
	{
		if (max < arr[j])
		{
			max = arr[j];
		}
		if (min > arr[j])
		{
			min = arr[j];
		}
	}
	double avg = (sum - max - min) / 5.0;
	printf("%.2lf\n", avg);
	return 0;
}

1. 其实这个写法看起来思路还算是清晰,但我们要注意,这里的 min 初始化的值是 0,在第二个 for 循环判断的时候,永远不会出现 min > arr[i] 的情况,所以 min 永远都是0,除非有一个裁判打了 0 分, 不然这就是个有 bug 的代码,需要我们注意。
2. 单纯的使用 if 会让代码显得冗余,可以加以改进

正确演示

#include <stdio.h>

int main()
{
	int sum = 0;
	int arr[7] = { 0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (int i = 0; i < sz; i++)
	{
		scanf("%d", &arr[i]);
		sum += arr[i];
	}
	int max = -1;
	int min = 101;  //  初始化 min 的时候用 101 一定比裁判给的分都高,
	for (int j = 0; j < sz; j++)
	{
		max = max < arr[j] ? arr[j] : max;
		min = min > arr[j] ? arr[j] : min;  //  利用三目操作符直接判断最大值和最小值
	}
	printf("%.2lf\n", (sum - max - min) / 5.0);
	return 0;
}

这里将 max 初始化为 -1,min 初始化为 101,有效的避免了上述的问题,也解决了出现了 0 分和 100 分的问题,并且使用三目操作符让代码看起来更加精炼,其实这里还可以将下面的部分封装成函数,对于初学者来说逼格满满!!!在计算的时候我们发现定义 avg 这个变量去算平均值是没必要的,可以直接在 printf 函数后面将表达式写出来,使代码更加的整洁。
ps附函数代码可以参考哦,会有新的收货!!

总结

提示:
计算平均成绩是学习编程初期一定要掌握的重要算法,结尾处将再奉上第二题的封装函数的写法,写文不易,希望家人们多多支持,一键三连,你们的陪伴,就是博主最大的动力!!!
点赞

ps:函数写法
#include <stdio.h>

double Avg(int arr[], int sz)
{
	int max = -1;
	int min = 101;
	int sum = 0;
	for (int j = 0; j < sz; j++)
	{
		max = arr[j] > max ? arr[j] : max;
		min = arr[j] < min ? arr[j] : min;
		sum += arr[j];
	}
	return (sum - max - min) / 5.0;
}

int main()
{
	int arr[7] = { 0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (int i = 0; i < sz; i++)
	{
		scanf("%d", &arr[i]);
	}
	double avg = Avg(arr, sz);
	printf("%.2lf\n", avg);
	return 0;
}
ps:运行结果

运行结果

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:27:47  更:2021-08-01 14:28:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 19:05:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码