当前位置:网站首页>【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:运行结果

边栏推荐
- 方舟:生存进化官服和私服区别
- Spark练习题+答案
- Spark shuffle调优
- shell programming conventions and variables
- How to encapsulate the cookie/localStorage sessionStorage hook?
- 【Objective-C中的@synthesize】
- LeetCode952三部曲之二:小幅度优化(137ms -> 122ms,超39% -> 超51%)
- 基于php影视资讯网站管理系统获取(php毕业设计)
- 左旋氧氟沙星/载纳米雄黄磁性/As2O3磁性Fe3O4/三氧化二砷白蛋白纳米球
- AIDL communication
猜你喜欢

JVM内存结构详解

左旋氧氟沙星/载纳米雄黄磁性/As2O3磁性Fe3O4/三氧化二砷白蛋白纳米球

Based on php Xiangxi tourism website management system acquisition (php graduation design)

shell规范与变量

基于php动漫周边商城管理系统(php毕业设计)

NFT的10种实际用途(NFT系统开发)

ModuleNotFoundError: No module named ‘yaml‘

Based on php tourism website management system acquisition (php graduation design)

ORI-GB-NP半乳糖介导冬凌草甲素/姜黄素牛血清白蛋白纳米粒的研究制备方法

FusionGAN:A generative adversarial network for infrared and visible image fusion article study notes
随机推荐
Transformer学习
Centos7--MySQL的安装
PyQt5 + MySQL5.8 【学生信息管理系统】【增删改查】
XSS漏洞
365天挑战LeetCode1000题——Day 046 生成每种字符都是奇数个的字符串 + 两数相加 + 有效的括号
RecycleView的使用
property语法
2022-08-01 第五小组 顾祥全 学习笔记 day25-枚举与泛型
ARFoundation入门教程U2-AR场景截图截屏
with语句和上下文管理器
0DFS Medium LeetCode6134. Find the closest node to the given two nodes
render-props和高阶组件
基于php在线考试管理系统获取(php毕业设计)
深拷贝浅拷贝
基于php影视资讯网站管理系统获取(php毕业设计)
JSD - 2204 - Knife4j framework - processing - Day07 response results
MySQL相关知识
FusionGAN:A generative adversarial network for infrared and visible image fusion article study notes
模拟数据之mockjs
Based on php film and television information website management system acquisition (php graduation design)