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

边栏推荐
- How to choose Visibility, Display, and Opacity when interacting or animating
- HCIP---多生成树协议相关知识点
- C Expert Programming Preface
- Pagoda application experience
- Day016 类和对象
- C Pitfalls and pitfalls Appendix B Interview with Koenig and Moo
- Port protocol for WEB penetration
- 树莓派的信息显示小屏幕,显示时间、IP地址、CPU信息、内存信息(c语言),四线的i2c通信,0.96寸oled屏幕
- 左旋氧氟沙星/载纳米雄黄磁性/As2O3磁性Fe3O4/三氧化二砷白蛋白纳米球
- ModuleNotFoundError: No module named 'yaml'
猜你喜欢
随机推荐
scikit-learn no moudule named six
”sed“ shell脚本三剑客
【Unity实战100例】文件压缩Zip和ZIP文件的解压
磷酸化甘露糖苷修饰白蛋白纳米粒/卵白蛋白-葡聚糖纳米凝胶的
Scala练习题+答案
二分法中等 LeetCode6133. 分组的最大数量
上传markdown文档到博客园
C Pitfalls and Defects Chapter 7 Portability Defects 7.11 An Example of a Portability Problem
第一讲 测试知多少
The Microsoft campus ambassador to shout you to autumn recruit!
shell编程规范与变量
Based on php online examination management system acquisition (php graduation design)
10 Practical Uses of NFTs (NFT System Development)
FusionGAN:A generative adversarial network for infrared and visible image fusion article study notes
365 days challenge LeetCode1000 questions - Day 046 Generate a string with odd number of each character + add two numbers + valid parentheses
找工作必备!如何让面试官对你刮目相看,建议收藏尝试!!
Popular explanation: what is a clinical prediction model
shell脚本
深拷贝浅拷贝
Based on php film and television information website management system acquisition (php graduation design)









