持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第17天,点击查看活动详情
🚩write in front🚩
🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 阿里云星级博主~掘金⇿InfoQ~51CTOP创作者~周榜91﹣总榜873⇿全网访问量35w+🏅
🆔本文由 謓泽 发布到掘金(JueJin) 如需转载还请通知⚠
📝个人主页-謓泽 的个人主页 - 文章 - 掘金 (juejin.cn)📃
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏-【C语言】Topic - 謓泽的专栏 - 掘金 (juejin.cn)🎓
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩
第六十四题→输入⑩个数字,总分减去最高分和最低分,再求小数点后两位平均分。
✔题解思路如下👇
每日名言:如果做某一件事能给我带来好心情,那么无论遇到什么样的挫折,我都会竭力去做。
⒈题目内容⇢输入十次分数,每次输入的目标范围内是(1~100)求每次输入的总数,求出输入最高的分数,求出输入最低的分数,再用总数减去最高和最低的分数。最后,去掉最高分和最低分求出平均数,小数点后面保留两位。
⒉在上述题目虽然很多,但是实际上也是非常好解决的一道题目。对于有些小伙伴一眼就可以做出来了。但是,这道题目可能有些人会说总数减去最高和最低的分数,这个怎么弄啊,看上去要好复杂,实际上这个是最好弄的,只要你能想到方法。那么接下来我就来说说给大家一个思路。
说明⇢我们可以先假设每次输入的最高分数变量是 "H" 而最低分数变量是 "M" 而我们输入的分数是 "s"。
⒊疑问⇢什么样的情况下才能每次输入(s)最后得到的是最高分数呢。
说明①⇢其实关键点就是在这里,我们可以使用判断来解决。假设我们输入的数字(s)最终是小于最高分数(H)的话就把我们所输入的数字赋值给小于最高分数的数字也就是H = s。但是这里最高分数的变量我们不能定义为100,因该定义为0,你自己带进去算下如果判断是s>H 此时的H等于100的话,表达式永远不可能成立,如果是小于100的话你会发现是把最低的分数给求出来了。所以,H我们给上0,这样的话就是 s>H(值0) 那么我们假设输入的数字是80(s),80>0,此时我们把输入的值s赋值给H当中的值,这样此时H=80。那么我们再次输入90(s),判断 s>H(上次值80),成立。把(s)的值赋值给(H)也就是,那么此时的H不就是为90了吗。那这不就求出我们想要的最高分数了吗。
说明②⇢最低分数实际上在上面说了,把M=100,把输入(s)<M(100),然后每次 M = s。你可以自己带进去算下,会得出最后的结果一定是最小的那个数字的。实在是太妙了啊(✿◕‿◕✿)
代码示例如下👇
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
int i = 0;
int score = 0;//每次输入的数字
int sum = 0;//总数
int Hscore = 0;//最高分数,注意:如果是100的话就没有数字大于Hscore
int Mscore = 100;//最低分数。
printf("请输入数字->:");
for (i = 0; i < 10; i++)
{
scanf("%d", &score);
sum += score;
//判断最低的数字
if (score < Mscore)
Mscore = score;
//判断最高的数字
if (score > Hscore)
Hscore = score;
}
printf("最高的分数:%d\n", Hscore);
printf("最低的分数:%d\n", Mscore);
printf("总数:%d\n", sum);
printf("去掉最高分和最低分的平均数:%.2lf\n", (sum - Hscore - Mscore) / 8.0);
return 0;
}
运行结果🖊
请输入数字->:100 88 55 66 44 33 10 0 50 80
最高的分数:100
最低的分数:0
总数:526
去掉最高分和最低分的平均数:53.25