一、题目最长的单词作者: ZhuKai时间限制: 10s章节: 字符串问题描述明明刚开始学习英语的时候对英语有浓厚的兴趣但是随着时间的推移英语单词量的增加明明越来越觉得背单词是一件相当痛苦的事情。于是他想出各种各样的方法来增加背单词的乐趣。这次他想出的方法是把所有要背的英语单词排成一行找出其中最长的一个单词来先背然后划去这个单词在剩下的单词中再找出一个最长的单词来背以此类推直到把所有单词都背完。如果有多个长度相同的单词则先背一行中靠前的那个单词。这样做的好处是背到越后面单词越短越容易背越能增加背单词的信心。例如有这么一行单词 one two three four five 明明会首先挑出three来背因为它是最长的一个单词由5个字母组成然后明明会选择four这个单词虽然five这个单词的长度和four这个单词的长度一样但是four在five的前面所以明明会先背four这个单词然后再背five等明明把five这个单词背完以后接着背one这个单词最后背的是two这个单词。但是在这样背单词之中明明又发现了另一个问题当要背非常多的单词时寻找最长的单词会花很多时间他想让你帮助他写一个程序找出一行单词中最长的那个节约明明背单词所花的时间与此同时明明希望你能告诉他这个英文单词有多少个字母组成那他可以做到心里有数。明明的问题可以归结为在一行英文单词中找出其中最长的单词若有多个最长找出第一个出现的并输出这个单词的长度。输入说明你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据每组测试数据仅占一行每行包括许多个英语单词和空格单词和单词之间可能有多个空格每行的长度不会超过1000个字符。每组测试数据与其后一组测试数据之间没有任何空行第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。输出说明对于每一组测试数据你写的程序要求计算出一组相应的运算结果并将每组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一个整数和一个英语单词整数表示该英文单词的长度整数和单词之间用一个空格隔开。输出时每组运算结果单独占一行其行首和行尾都没有任何空格或其他任何字符每组运算结果与其后一组运算结果之间没有任何空行或其他任何字符第一组运算结果前面以及最后一组运算结果后面也都没有任何空行或其他任何字符。 注通常显示屏为标准输出设备。#include iostream #include string using namespace std; int main() { string str; while(getline(cin,str)) { string s[1000]; int k0; for(char c:str) { if(c! ) { s[k]c; }else { k; } } int max0; int num0; for(int i0;ik;i) { if(s[i].length()max) { maxs[i].length(); numi; } } coutmax s[num]endl; } //总结利用getline函数读一行 然后再一个个存到数组中 再比较长度 return 0; }总结利用getline函数读一行 然后再一个个存到数组中 再比较长度二、题目奖学金作者: ZhuKai时间限制: 10s章节: 字符串问题描述明明所在学校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种获取的条件各不相同1. 院士奖学金每人8000元期末平均成绩高于80分并且在本学期内发表1篇或1篇以上论文的学生均可获得。2. 五四奖学金每人4000元期末平均成绩高于85分并且班级评议成绩高于80分的学生均可获得。3. 成绩优秀奖每人2000元期末平均成绩高于90分的学生均可获得。4. 西部奖学金每人1000元期末平均成绩高于85分的西部省份学生均可获得。5. 班级贡献奖每人850元班级评议成绩高于80分的学生干部均可获得。只要符合条件就可以得奖。 每项奖学金的获奖人数没有限制每名学生也可以同时获得多项奖学金。例如明明的期末平均成绩是87分班级评议成绩82分同时他还是一位学生干部那么他可以同时获得五四奖学金和班级贡献奖奖金总数是4850元。由于老师在学期末的时候很忙所以他把奖学金统计的事情交给明明做。老师把考试的相关数据给了明明让他统计出以下数据1 哪位同学获得的奖学金最多2 获得最多奖学金的同学一共获得了多少奖学金3 所有获得奖学金的同学一共获得了多少奖学金明明虽然很愿意帮老师这个忙但是他发现同学的数量很多统计起来很麻烦经常有统计出错的情况发生。于是明明就想请你帮一个忙帮他写一个统计程序统计出以上三项内容。输入说明你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据每组测试数据有多行每组测试数据的第一行有一个整数N1≤N≤100表示学生的总数。接下来的N行每行是一位学生的数据一行中从左向右依次是姓名期末平均成绩班级评议成绩是否是学生干部是否是西部省份学生以及发表的论文数。姓名是由大小写英文字母组成的长度不超过20的字符串不含空格期末平均成绩和班级评议成绩都是0到100之间的整数包括0和100是否是学生干部和是否是西部省份学生分别用一个字符表示Y表示是N表示不是发表的论文数是0到10的一个整数包括0和10每两个相邻数据项之间用一个空格分隔。每组测试数据与其后一组测试数据之间没有任何空行第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。输出说明对于每一组测试数据你写的程序要求计算出一组相应的运算结果并将每组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果有三行第一行是获得最多奖金的学生的姓名第二行是这名学生获得的奖金总数。 如果有不止一名学生获得的奖学金最多输出他们之中出现最早的学生姓名第三行是这N个学生获得的奖学金的总数。输出时每组运算结果其行首和行尾都没有任何空格或其他任何字符每组运算结果与其后一组运算结果之间有一个空行最后一组运算结果后面没有空行。 注通常显示屏为标准输出设备。#include iostream #include string using namespace std; int main() { int n; while (cin n) { string name, maxName; int avg, cls, paper; char leader, west; int maxMoney 0; int total 0; for (int i 0; i n; i) { cin name avg cls leader west paper; int money 0; if (avg 80 paper 1) money 8000; if (avg 85 cls 80) money 4000; if (avg 90) money 2000; if (avg 85 west Y) money 1000; if (cls 80 leader Y) money 850; total money; if (money maxMoney) { maxMoney money; maxName name; } } cout maxName endl; cout maxMoney endl; cout total endl; coutendl; } //总结1.可以不用分割字符串直接cin 更简单 2.getline可能读入换行符 要用cin.ignore() 3.string 转int 用stoi return 0; }总结1.可以不用分割字符串直接cin 更简单 2.getline可能读入换行符 要用cin.ignore()三、回文数2作者: ZhuKai时间限制: 10s章节: 字符串问题描述有一天明明正在做作业发现了一组很有趣的数字例如1、11、313等等。他发现这些数字都是左右对称的即不论你把这些数字从左读到右还是从右读到左读出来的数字都是一样的。于是明明就把这个发现告诉了他爸爸。明明的爸爸是一名数学家对此类型数字早有研究。他对明明说“这些是回文数是一种特殊的数字即这些数字的左右两边是对称的。例如11左右两边对称313左右也是对称的。” 明明觉得这很有趣接着问他爸爸还有什么和这类回文数有关的有趣的东西。明明的爸爸就说“你把这些回文数转换成二进制数看看是不是也符合回文数的规则。”明明发现1的二进制数也是1符合回文数的规则11的二进制数是1011不符合回文数的规则33的回文数是100001符合回文数的规则。明明就回答爸爸说“1和33的二进制数符合回文数的规则11的二进制数则不符合回文数的规则。” 明明爸爸很满意明明的回答又给了明明很多十进制数让他判断在这些数中哪些数既是十进制回文数又是二进制回文数。明明起先做起来很有意思但是时间一长就失去了兴趣。他想请你帮个忙帮他写一个程序用来判断一个数它的十进制数是回文数且它的二进制数也是回文数。明明的问题可以归结为给你一个整数十进制判断该整数的十进制数和它的二进制数是否全为回文数。输入说明你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据每组测试数据仅有一行每行有一个整数N0 N 1000表示要判断回文数的那个数。每组测试数据与其后一组测试数据之间没有任何空行第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。输出说明对于每一组测试数据你写的程序要求计算出一组相应的运算结果并将每组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为“Yes”或“No”如果该数的十进制数和二进制数都是回文数则输出“Yes”不含双引号否则输出“No”不含双引号。每组运算结果单独形成一行数据其行首和行尾都没有任何空格每组运算结果与其后一组运算结果之间没有任何空行第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。 注通常显示屏为标准输出设备。#include iostream #include string using namespace std; int main() { int n; while(cinn) { string astd::to_string(n); int lena.length(); int flag10; int tenn; for(int i0;ilen/2;i) { if(a[i]!a[len-i-1]) { coutNoendl; flag11; break; } } if(flag11) continue; int two0; int k1; while(ten!0) { int numten%2; twonum*ktwo; kk*10; tenten/2; } // couttwo:twoendl; string bstd::to_string(two); int flag20; lenb.length(); for(int i0;ilen/2;i) { if(b[i]!b[len-i-1]) { coutNoendl; flag21; break; } } if(flag10flag20) { coutYesendl; } } return 0; }总结十进制转二进制 首尾匹配四、翻译Also in the 19th century, the British mathematician and inventor CharlesBabbage[插图] worked out the principles of the modern digital computer. Heconceived a number of machines, such as the Difference Engine, thatwere designed to handle complicated mathematical problems. Manyhistorians consider Babbage and his associate, the mathematician AugustaAda Byron[插图], the true pioneers of the modern digital computer. One ofBabbages designs, the Analytical Engine, had many features of a moderncomputer. It had an input stream in the form of a deck of punched cards,a store for saving data, a mill for arithmetic operations, and a printerthat made a permanent record[插图]. Babbage failed to put this idea intopractice, though it may well have been technically possible at that date.19世纪英国数学家、发明家查尔斯·巴贝奇Charles Babbage推导出了现代数字计算机的原理。他构想了差分机Difference Engine等机器用于处理复杂的数学问题。许多历史学家认为巴贝奇及其同事奥古斯塔·艾达·拜伦AugustaAda Byron是现代数字计算机的真正先驱。巴贝奇的设计之一分析机Analytical Engine具有现代计算机的许多特征。它以穿孔卡片的形式输入数据具有保存数据的“存储器”进行算术运算的“加工机”以及制作永久记录的打印机。巴贝奇未能将这一构想付诸实践尽管在那个时代从技术角度 讲这很有可能实现。Analogue computers began to be built in the late 19th century. Earlymodels calculated by means of rotating shafts and gears. Numericalapproximations of equations too difficult to solve in any other way wereevaluated with such machines. Lord Kelvin[插图] built a mechanical tidepredictor that was a specialized analogue computer. During World Wars Iand II, mechanical and, later, electrical analogue computing systems wereused as torpedo course predictors in submarines and as bombsightcontrollers in aircraft. Another system was designed to predict springfloods in the Mississippi River[插图] basin.模拟计算机开始于19世纪末。早期的模型通过旋转轴和齿轮计算。方程的数值近似难以以任何其他方式解决用这样的机器进行评估。开尔文勋爵建造了一个机械潮汐预测器这是一个专门的模拟计算机。在第一次世界大战和第二次世界大战期间机械和后来的电子模拟计算机系统被用作潜艇的鱼雷航向预测器和飞机的投弹瞄准控制器。另一个系统被设计用来预测密西西比河流域的春季洪水。During World War II, a team of scientists and mathematicians, working atBletchley Park, north of London, created one of the first all-electronicdigital computers: Colossus[插图]. By December 1943, Colossus, whichincorporated 1,500 vacuum tubes, was operational. It was used by theteam headed by Alan Turing[插图], in the largely successful attempt to crackGerman radio messages enciphered in the Enigma code[插图].第二次世界大战期间一组科学家和数学家在伦敦北部布莱切利公园工作制造了第一台全电子数字计算机之一巨人计算机。到 1943 年 12 月由 1500 个真空管组成的巨人计算机已经可以运作了。艾伦·图灵领导的团队用它破译了德国用恩尼格玛密码加密的无线电讯息取得了很大的成功。