当前位置:网站首页>【C语言实现】两种计算平均成绩题型,博主精心整理,值得一读
【C语言实现】两种计算平均成绩题型,博主精心整理,值得一读
2022-08-01 21:34:00 【万羽西】
有需要的小伙伴们可以点进来看看哟,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:运行结果
边栏推荐
- 基于php动漫周边商城管理系统(php毕业设计)
- Homework 8.1 Orphans and Zombies
- Based on php film and television information website management system acquisition (php graduation design)
- Interview Blitz 70: What are sticky packs and half packs?How to deal with it?
- 牛血清白蛋白刺槐豆胶壳聚糖缓释纳米微球/多西紫杉醇的纳米微球DTX-DHA-BSA-NPs
- 你居然不懂Bitmap和Drawable? 相关知识大扫盲
- 可视化——Superset使用
- LeetCode952三部曲之二:小幅度优化(137ms -> 122ms,超39% -> 超51%)
- 基于php在线学习平台管理系统获取(php毕业设计)
- 小程序--分包
猜你喜欢
Day016 类和对象
LeetCode952三部曲之一:解题思路和初级解法(137ms,超39%)
Homework 8.1 Orphans and Zombies
Unity Shader general lighting model code finishing
虚拟内存与物理内存之间的关系
10 Practical Uses of NFTs (NFT System Development)
Chapter 12, target recognition of digital image processing
基于php影视资讯网站管理系统获取(php毕业设计)
ImportError: `save_weights` requires h5py.问题解决
CS-NP白蛋白包覆壳聚糖纳米颗粒/人血清白蛋白-磷酸钙纳米颗粒无机复合材料
随机推荐
一个关于操作数据库的建议—用户密码
【C语言实现】求两个整数的较大值
PX4模块设计之十五:PX4 Log设计
树莓派的信息显示小屏幕,显示时间、IP地址、CPU信息、内存信息(c语言),四线的i2c通信,0.96寸oled屏幕
C pitfalls and pitfalls Chapter 8 Suggestions and answers 8.2 Answers
C Pitfalls and Defects Chapter 7 Portability Defects 7.6 Memory Location 0
ModuleNotFoundError: No module named 'yaml'
基于php湘西旅游网站管理系统获取(php毕业设计)
虚拟内存与物理内存之间的关系
AIDL通信
Based on php hotel online reservation management system acquisition (php graduation project)
How to encapsulate the cookie/localStorage sessionStorage hook?
Interview Blitz 70: What are sticky packs and half packs?How to deal with it?
render-props和高阶组件
Spark集群搭建
Small program -- subcontracting
Image fusion GANMcC study notes
TP5-NPs负载噻吩类化合物TP5白蛋白纳米粒/阿魏酸钠新糖牛血清蛋白纳米粒
AI应用第一课:支付宝刷脸登录
Appendix A printf, varargs and stdarg a. 2 use varargs. H to realize the variable argument list