第12周报告2-2 大奖赛计分程序

2024-03-03 11:58
文章标签 程序 报告 计分 大奖赛

本文主要是介绍第12周报告2-2 大奖赛计分程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

任务2-1:为大奖赛编制一个计分程序,成绩在0-10之间,输入错误时要能马上重新输入。评委人数在程序中的修改要尽可能方便。
任务2-2:在任务2-1的基础上,输出当前选手的最后得分后,提示“按任意键计算下一位选手的成绩,退出请选择N:”如果输入的不是N或n,可以为下一位选手计算成绩。运行结果如图所示,将此任务写入报告,体会:如果一个大任务难于直接完成,可以先完成核心任务,再逐渐完善。

第一部分是我的解答,第二部分总结同学们的做法。


【第一部分 我的报告】

实验目的:学会使用循环控制语句解决实际问题

实验内容:编写大奖赛用的计分程序

/* 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院
* All rights reserved.
* 文件名称: score.cpp
* 作    者: 贺利坚
* 完成日期:  2011 年 11 月 15 日
* 版 本 号:  V1.0* 对任务及求解方法的描述部分
* 输入描述:选手的原始成绩
* 问题描述:各评委打出的成绩介于0-10之间,计分规则为去掉一个最高分和一个最低分后取平均。其他要求:输出错误要能马上重新输入;评委人数在程序中的修改要尽可能方便;计算完一位选手的成绩后可以连续地计算下一位选手的成绩。
* 程序输出:各位选手的最高分、最低分及最终成绩
* 问题分析:用两层的do循环完成,第一层完成每位选手的计分,第二层输入所有评委给出的评分,输入不对时用continue从头开始
* 算法设计:……
* 程序头部的注释结束(此处也删除了斜杠)
*/
#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{const int n=10;   //学会用常变量int i;double ave, score, sum, max, min;  //这几个变量涉及成绩,double是合理的char choice;  //用于接受用户选择,字符型多合适cout<<setiosflags(ios::fixed)<<setprecision(3); //输出格式,只设一次就管用do     //计算选手的成绩,至少1次,用do很自然,别的循环不用想{i=1;    //i代表评委的编号,其实这个变量名起得不好max=-1;  //这儿有技巧,第1位评委给的成绩一定大于-1,max将变成第1个成绩min=11;  //同样和技巧,要学会这样“设圈套”sum=0;   //注意:这4个变量在循环内赋初值是必须的,这意味着计算某一选手成绩的开始cout<<"请输入选手的成绩(0-10)"<<endl;do  //至少有一位评委,再用do循环{cout<<"第"<<i<<"位评委给分:";cin>>score;if(score<0||score>10) continue;  //输入不对就继续输,continue多合适sum+=score;if(max<score) max=score;  // 联想上一层循环中max的初值,学会技巧if(min>score) min=score;   //有不少同学用函数解决,复杂化了i++;}while(i<=n);ave = (sum-max-min)/(n-2);cout<<"减去一个最高分:"<<max;cout<<", 减去一个最低分:"<<min<<"。"<<endl;cout<<"当前选手的最后得分是:"<<ave<<endl;cout<<"******************* SUCCESS ***********************"<<endl;cout<<"按 N 退出,其他键继续....";cin>>choice; //用choice=getchar();也行cout<<endl;}while(choice!='N' && choice!='n'); //不管输入大小写,全算数return 0;
}

运行结果:


经验积累:

1. 至少执行1次的循环用do-while

2. 赋初值的位置有学问

3. max,min初值的技巧

4. 编写实用程序,一定要实用

 

【第二部分 同学们做法的点评】

许多同学谈到这道题难了。程序是写得长了,但如果将思维整理好了,不难。关键是学过的内容不熟练。怎么熟练起来,看书、上机,无他法。

有同学程序越写越乱,头脑不清楚了,原因很简单:变量名尽用单个字母的,而不是起有意义的。这叫自找罪受。实际上,好的编程风格最受益的是自己。生活中论人品,编程也要有品格,有品味。

以后,同学们要注意程序能够顺利运行后,运行结果是否正确。不少同学的输出明显错误,例如成绩在0-10之间,但平均成绩却大大高于10,有可能吗?大奖赛就砸在你手里了。

最大的问题是没有用do-while循环。其实三种循环各有特点,做到用最合适的循环,有利于给出好的解决方案。

……
}while(choice!='N' && choice!='n');

处,有同学是这样写的

……if (choice=='N' && choice=='n') break;
}while(1);

显得有些没有必要,直接循环条件就可以了。

有同学给出的用for循环的解决办法输入不在0-10范围内的事,方法倒也巧妙,贴在下面。程序中还有其他毛病,我一并指出,供大家参考。

#include<iostream>
using namespace std;
int main()
{cout << "请输入评委数目:" <<endl; //处理好,增强了程序的适用性,但这一句放在cin前就更好了。double all =0 , max , min , fen;int ping , i;char a;cin >> ping; do{cout << "请输入选手的成绩(0-10):" << endl;for (i = 1; !(i == ping+1) ;)  //!(i == ping+1)写成i!=ping+1或i<=ping更好,注意这儿表达式3是空的,一般这儿应写i++{cout<< "第" << i << "位评委给分:";cin >> fen;if (fen >= 0 && fen <= 10){if (i==1) min = fen; //这么处理不如在循环前给min赋一大值if (fen > max)max = fen; //max没有像min一样处理,利用了VC++未赋初值的变量默认一个绝对值很大的负数的特点。在其他编译系统中未必这样,所以程序移植时就危险了。进一步,这样处理是错的,因为没有专门赋值,在计算第二位选手的成绩时,max保存的是第一位选手的最高成绩。if (fen < min)min = fen;all += fen; i++;  //这个i++没有放在for中,用得很妙。我先以为错误的,作者解释后,我承认我错了,评价他“别有用心”。看出来了吗?如果(fen >= 0 && fen <= 10)为假,i是不会自增的。同学在这儿是用了脑子的,赞!但程序可读性受影响。}elsecout <<"输入错误,请重新输入:";cout <<endl;}cout << "减去一个最高分:" << max << ",减去一个最最低分:" << min << "。" << endl;cout <<"当前选手的最后得分是:" << (all - max - min) / ping << endl;  //这儿有错,去掉两个成绩后,评委数应该减2才对cout <<"******************** SUCCESS ********************" << endl;cout << "按 N 退出,其他键继续…………" << endl;getchar();cin >> a;}while (!(a == 'N' || a == 'n'));return 0;
}


 

这篇关于第12周报告2-2 大奖赛计分程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/769542

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

这些心智程序你安装了吗?

原文题目:《为什么聪明人也会做蠢事(四)》 心智程序 大脑有两个特征导致人类不够理性,一个是处理信息方面的缺陷,一个是心智程序出了问题。前者可以称为“认知吝啬鬼”,前几篇文章已经讨论了。本期主要讲心智程序这个方面。 心智程序这一概念由哈佛大学认知科学家大卫•帕金斯提出,指个体可以从记忆中提取出的规则、知识、程序和策略,以辅助我们决策判断和解决问题。如果把人脑比喻成计算机,那心智程序就是人脑的

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于