2019年第一届全国高校计算机能力挑战赛初赛编程题(C++)
-
资源ID:347369961
资源大小:217.04KB
全文页数:11页
- 资源格式: DOCX
下载积分:0金贝
快捷下载
账号登录下载
微信登录下载
微信扫一扫登录
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
|
下载须知 | 常见问题汇总
|
2019年第一届全国高校计算机能力挑战赛初赛编程题(C++)
2019年第一届全国高校计算机能力挑战赛初赛个人解答源码及思路,非评分标准答案。(程序设计赛 C+)1.电商促销某种商品时,希望通过打折鼓励消费者组团消费。已知团队消费金额=该团的人数和*商品单价。打折规则如下: 当组团消费者数量不满50人时,商品消费金额没有折扣;消费者数量大于等于50,但小于100人时,商品消费金额打9折;消费者数量达到或超过100人时,商品消费金额打85折。 现在有一批团购信息(含团购人数和商品单价,每人限购一件商品),请计算该团折扣后实际消费金额。输入说明:某团的人数和商品单价。输出说明:求该团的折扣后的实际消费金额。输入样例:100 50输出样例:4250参考源码:1. #include <iostream>2. using namespace std;3. int main() 4. int number, unitPrice;5. double totalPrice = 0;6. cin >> number >> unitPrice;7. totalPrice = number * unitPrice;8. if (number >= 100) 9. totalPrice *= 0.85;10. else if (number >= 50) 11. totalPrice *= 0.9;12. 13. cout << totalPrice;14. return 0;15. 算法思路: 模拟算法。运行截图:测试用例1(题目输入样例1,9折)测试用例2(85折)测试用例3(不打折)2.对于给定的十进制正整数N(N<100000),将1到N(含N)之间的每个整数转成八进制,求转换后的所有八进制数中含7的总个数。提示:某个数的八进制含7的个数可以参照下面的例子:对于整数127,对应的八进制为177,其含7的个数为2。输入说明:输入整数N输出说明:输出含7的总个数输入样例:8输出样例:1参考源码:1. #include <iostream>2. using namespace std;3. int convert(int n) 4. int sum = 0;5. int remainder;6. while (n) 7. remainder = n % 8;8. n = n / 8;9. if (remainder = 7) 10. sum+;11. 12. 13. return sum;14. 15.16. int main() 17. int n;18. int total = 0;19. cin >> n;20. for (int i = 1; i <= n; i+) 21. total += convert(i);22. 23. cout << total << endl;24. return 0;25. 算法思路: 应用辗转相除法来做进制转换,不需要输出转换后的数,在转换过程中直接进行7数码的判断和累计。运行截图:测试用例1(题目输入样例1)测试用例2(N为99999,取最大值)测试用例3(N为1,取最小值)3.输入N个整数,从中挑选符合以下规则的三种类型的数,分别输出。(1)个位数字为1、4或7的数;(2)个位数字为2、5或8的数;(3)个位数字为3、6或9的数。输入说明:第一行输入整数个数N;第二行输入这N个整数。输出说明:分三行输出,第一行输出符合条件(1)的数据,第二行输出符合条件(2)的数据,第三行输出符合条件(3)的数据;备注:某行如果没有任何数据,输出空行。输入样例:1011 12 13 24 25 26 37 38 39 40输出样例:11 24 3712 25 3813 26 39参考源码:1. #include <iostream>2. #include <malloc.h>3. using namespace std;4. void computer(int data, int n) 5. int remainder;6. for (int i = 0; i < n; i+) 7. remainder = datai % 10;8. if (remainder = 1) | (remainder = 4) | (remainder = 7) 9. cout << datai << " "10. 11. 12. cout << endl;13. for (int i = 0; i < n; i+) 14. remainder = datai % 10;15. if (remainder = 2) | (remainder = 5) | (remainder = 8) 16. cout << datai << " "17. 18. 19. cout << endl;20. for (int i = 0; i < n; i+) 21. remainder = datai % 10;22. if (remainder = 3) | (remainder = 6) | (remainder = 9) 23. cout << datai << " "24. 25. 26. cout << endl;27. 28.29. int main() 30. int n;31. cin >> n;32. int *data = (int *) malloc(n * sizeof(int);33. for (int i = 0; i < n; i+) 34. cin >> datai;35. 36. computer(data, n);37. free(data);38. return 0;39. 算法思路: 模拟算法,求余数进行分类判断(1、4、7;2、5、8;3、6、9)。由于没有采用数组来进行三个分类的存放,所以在函数中进行了三次循环,依次输出三类数。运行截图:测试用例1(题目输入样例1)测试用例2(输出第一行为空行)测试用例3(输出第二行为空行)测试用例4(输出第一行、第二行均为空行)4.在N(N<30)名运动员参加的体操比赛中,有K(K<10)名裁判给每位运动员分别打分,按规则每名运动员最后得分需去掉一个最高分和一个最低分,然后把其他裁判的打分相加,计算得出该运动员的总得分(规定数据中每名运动员的总得分各不相同)。现在比赛完毕,根据总得分高低排序得出冠军、亚军。请你帮忙算出冠军和亚军,并输出他们的姓名。输入说明:第一行输入整数N和K。N表示运动员人数,K表示裁判人数;从第二行开始,依次分行输入这N名运动员的数据(数据格式为:姓名各裁判的整数打分,其中每名运动员的姓名不含空格,每名裁判的打分以空格分隔)。输出说明:输出冠军和亚军运动员的姓名,以单个空格分开他们的姓名。输入样例:5 4Zhang 85 85 90 80Wang 85 90 80 90Zhao 90 92 85 90Li 75 80 85 80Yang 81 75 80 85输出样例:Zhao Wang参考源码:1. #include <iostream>2. #include <algorithm>3.4. using namespace std;5. struct player 6. string name;7. int totalScore;8. ;9.10. bool cmp(player first, player second) 11. return first.totalScore > second.totalScore;12. 13.14. int sum(int score, int k) 15. int sum = 0;16. for (int i = 0; i < k; i+) 17. sum += scorei;18. 19. if (k > 2) 20. sum -= score0;21. sum -= scorek - 1;22. 23. return sum;24. 25.26. int main() 27. int n, k;28. player players30;29. player onePlayer;30. int scores10;31. string name;32. int score;33. cin >> n >> k;34. for (int i = 0; i < n; i+) 35. cin >> name;36. onePlayer.name = name;37. for (int j = 0; j < k; j+) 38. cin >> score;39. scoresj = score;40. 41. sort(scores, scores + k);42. onePlayer.totalScore = sum(scores, k);43. playersi = onePlayer;44. 45. sort(players, players + n, cmp);46. if (n>1) 47. cout << players0.name << " " << players1.name << endl;48. else49. cout << players0.name<<endl;50. 51. return 0;52. 算法思路: