Cpp软件竞赛参考题目
- 格式:docx
- 大小:22.24 KB
- 文档页数:6
C语言大赛题目第一道题回文时间限制:1000MS内存限制:65536KB题目简介“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
请写一个程序判断读入的字符串是否是“回文”。
标准输入输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。
标准输出如果一个字符串是回文串,则输出"yes",否则输出"no".范例输入4levelabcdenoonhaha范例输出yesnoyesno第二道题阶乘的精确值时间限制:1000MS内存限制:65000KB题目简介输入不超过1000的正整数n,输出n!=1×2×3×……×n的精确结果。
标准输入标准输出范例输入30范例输出265252859812191058636308480000000第三道题6174问题时间限制:1000MS内存限制:65000KB题目简介假设你有一个各位数字互不相同的四位数,把所有数字从大到小排序后得到a,从小到大排序后得到b,然后用a-b替换原来这个数,并继续操作。
例如,从1234出发,一次可以得到4321-1234=3087,8730-378=8352,,8352-2358-6174。
有趣的是,7641-1467=6174,回到了他自己。
输入一个n位数,输出操作数列,直到出现循环(即新得到的数曾经得到过)。
输入保证在循环之前最多只会产生1000个整数。
标准输入输入一个四位数的整数。
标准输出输出操作数列,每两个数字间用“->”隔开,“->”与数字间有个空格,最后一个数字输出时后面不能带有空格。
范例输入12348913范例输出1234 -> 3087 -> 8352 -> 6174 -> 61748913 -> 8442 -> 5994 -> 5355 -> 1998 -> 8082 -> 8532 -> 6174 -> 6174 第四道题Text Reverse时间限制:1000MS内存限制:65000KB题目简介KMY写单词的时候喜欢反过来写。
一、统计数字问题(1)题目描述一本书的页码从自然数1 开始顺序编码直到自然数n。
书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。
例如,第6 页用数字6 表示,而不是06 或006 等。
数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2, (9)现在给定书的总页码十进制整数n (1≤n≤109) 。
编程计算书的全部页码中分别用到多少次数字0,1,2, (9)(2)输入要求输入只有1 行,给出表示书的总页码的整数n。
(3)输出要求输出共有10行,在第k行输出页码中用到的数字k-1及其出现的次数。
(4)样例输入11(5)样例输出0 11 42 13 14 15 16 17 18 19 1#include<iostream>using namespace std;int main(){int a[10] = { 0,0,0,0,0,0,0,0,0,0 };int i, j, k;int n;cout << "输入页数" << endl;cin >> n;for (i = 1; i <= n; i++){for (j = i; j / 10 != 0 || j % 10 != 0; j = j / 10){for (k = 0; k <= 9; k++){if (j % 10 == k)a[k] = a[k] + 1;}}}for (i = 0; i <= 9; i++)cout << i<<" "<<a[i] << '\n';return 0;}没有问题。
二、叙拉古猜想(1)题目描述有这样一个游戏:从一个正整数开始,两人轮流进行如下运算:若是奇数,就把这个数乘以3再加1;若是偶数,就把这个数除以2。
c++编程竞赛题一、链表操作题题目:链表反转之最短路徑求解【题目描述】给定一个链表表示的图,其中每个节点包含一个整数值和一个指向下一个节点的指针。
请实现一个函数,输入起点和终点,返回从起点到终点最短路径的长度。
【题目要求】实现一个函数 `shortestPathLength`,输入起点 `start` 和终点 `end`,返回从 `start` 到 `end` 的最短路径长度。
【输入输出格式】输入格式为三个整数 `n`、`m` 和起点 `start`,表示链表中的节点数和路径长度。
接下来 `m` 行,每行两个整数 `a` 和 `b`,表示链表中从 `start` 到节点 `a` 的路径长度和节点 `a` 到终点的路径长度。
输出格式为整数,表示从起点到终点的最短路径长度。
【提示】链表中的节点数不超过 1000,路径长度不超过 1000。
【样例输入】3 2 34 51 2 3 1【样例输出】2【解题思路】本题主要考察链表操作和最短路径求解。
首先需要将链表反转,使得起点是链表的头节点。
然后使用 Dijkstra 算法求解最短路径长度。
具体实现时需要注意链表的存储方式,可以使用结构体数组来表示链表节点。
在 Dijkstra 算法中,需要使用一个集合来记录已经访问过的节点,避免重复访问。
同时需要使用一个队列来存储待访问的节点,按照距离从小到大的顺序依次访问。
具体实现时可以使用 C 标准库中的相关函数来实现队列和集合的操作。
最后根据题目要求输出结果即可。
二、数组操作题题目:寻找重复子数组之最大长度【题目描述】给定一个长度为 n 的数组 nums,找到其中连续的子数组的重复次数最多且大于平均数的那段子数组,并返回其长度。
如果存在多个符合条件的子数组,返回任意一个即可。
【输入输出格式】输入格式为两个整数 n 和 m,表示数组 nums 的长度和目标数组的元素个数。
接下来 m 行,每行一个整数 x 表示目标数组中的元素个数。
c++中学生比赛样题【原创实用版】目录1.C++编程语言简介2.中学生 C++编程比赛样题及解析3.比赛样题的技巧和方法4.总结正文【1.C++编程语言简介】C++是一种通用的高级编程语言,它是 C 语言的增强版,可以进行面向对象编程。
C++语言广泛应用于操作系统、游戏开发、桌面应用、Web 开发等领域。
对于中学生来说,学习 C++编程语言可以提高逻辑思维能力,培养计算机编程的兴趣,为以后的学习和职业发展打下基础。
【2.中学生 C++编程比赛样题及解析】中学生 C++编程比赛样题通常包括基础题和进阶题。
基础题主要考察学生对 C++语言基本语法的掌握,如变量、数据类型、循环、条件语句等。
进阶题则涉及到算法、数据结构、面向对象编程等知识。
例如,有一道样题要求计算一个数的阶乘。
这是一种典型的算法问题,可以用循环来实现。
下面是一种简单的解法:```cpp#include <iostream>using namespace std;int factorial(int n) {int result = 1;for (int i = 1; i <= n; ++i) {result *= i;}return result;}int main() {int n;cout << "请输入一个正整数:";cin >> n;cout << "该数的阶乘为:" << factorial(n) << endl;return 0;}```【3.比赛样题的技巧和方法】解决 C++编程比赛样题需要掌握一定的技巧和方法。
首先,要熟练掌握 C++语言的基本语法和常用函数库,以便快速编写代码。
其次,要善于分析问题,将复杂的问题分解为简单的子问题,以便于编程实现。
最后,要注意代码的优化,提高程序的运行效率。
【4.总结】学习 C++编程语言对于中学生来说具有重要意义,不仅可以提高逻辑思维能力,还可以为以后的学习和职业发展打下基础。
cpp考试题库及答案1. 以下哪个是C++中的构造函数?A. 函数名与类名相同,且没有返回值B. 函数名与类名不同,且有返回值C. 函数名与类名不同,且没有返回值D. 函数名与类名相同,且有返回值答案:A2. C++中,哪个关键字用于定义类的成员函数?A. staticB. publicC. privateD. inline答案:D3. 在C++中,以下哪个运算符用于检查两个指针是否指向同一个对象?A. ==B. !=C. ==D. !=答案:C4. C++标准库中,哪个容器类允许存储唯一元素?A. vectorB. mapC. setD. list答案:C5. C++中,哪个关键字用于声明一个类为抽象类?A. abstractB. virtualC. pureD. interface答案:B6. 在C++中,以下哪个是正确的继承方式?A. public继承B. private继承C. protected继承D. 所有以上答案:D7. C++中,哪个关键字用于声明一个函数为虚函数?A. virtualB. overrideC. finalD. sealed答案:A8. 在C++中,以下哪个是正确的多态性实现方式?A. 通过虚函数B. 通过函数重载C. 通过函数覆盖D. 所有以上答案:A9. C++中,哪个关键字用于声明一个函数为友元函数?A. friendB. publicC. privateD. protected答案:A10. 在C++中,以下哪个是正确的模板声明方式?A. template <typename T>B. template <class T>C. template <typename T> 和 template <class T>D. 以上都不是答案:C结束语:通过以上题目的练习,可以帮助你更好地理解和掌握C++的基本概念和特性。
1、母牛生小牛Problem设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母牛?Input本题有多组数据。
每组数据只有一个整数N,独占一行。
(1≤N≤50)Output对每组数据,输出一个整数(独占一行)表示第N年时母牛的数量Sample Input14520Sample Output1238722、座位调整题目描述:百度办公区里到处摆放着各种各样的零食。
百度人力资源部的调研发现,员工如果可以在自己喜欢的美食旁边工作,工作效率会大大提高。
因此,百度决定进行一次员工座位的大调整。
调整的方法如下:1 .首先将办公区按照各种零食的摆放分成N 个不同的区域。
(例如:可乐区,饼干区,牛奶区等等)。
2 .每个员工对不同的零食区域有不同的喜好程度(喜好程度度的范围为1 — 100 的整数,喜好程度越大表示该员工越希望被调整到相应的零食区域)。
3 .由于每个零食区域可以容纳的员工数量有限,人力资源部希望找到一个最优的调整方案令到总的喜好程度最大。
数据输入:第一行包含两个整数N ,M ,(1<=N ,M<=300 )。
分别表示N 个区域和M 个员工。
第二行是N 个整数构成的数列a ,其中a[i] 表示第i 个区域可以容纳的员工数,(1<=a[i]<=M ,a[1]+a[2]+..+a[N]=M) 。
紧接着是一个M*N 的矩阵P ,P (i ,j )表示第i 个员工对第j 个区域的喜好度。
答案输出:对于每个测试数据,输出可以达到的最大的喜好程度。
输入样例3 31 1 1100 50 25100 50 25100 50 25输出样例175数据解释:此数据只存在一种安排方法,三个员工分别安置在三个区域。
最终的喜好程度为100+50+25=175最优解3、剪刀石头布剪刀石头布N 个小孩正在和你玩一种剪刀石头布游戏。
N 个小孩中有一个是裁判,其余小孩分成三组(不排除某些组没有任何成员的可能性),但是你不知道谁是裁判,也不知道小孩们的分组情况。
试题1、数学黑洞(程序文件名maths.c/maths.cpp)【问题描述】任给一个4位正整数,其各位数位上的数字不全相同,将数字重新组合成一个最大的数与最小的数相减,重复这个过程,最多7步,必得6174。
对任给的4位正整数(各位数位上的数字不全相同),编程输出掉进黑洞的步数。
【输入】一行,一个4位正整数n(1000< n<9999)【输出】掉进黑洞的步数输入1234输出32、进制转换(程序文件名conver.c/conver.cpp)【问题描述】任给一个十进制整数n,及正整数m(m<=16且m≠10), 将n转换成m进制并输出。
【输入】一行,两个整数n,m(0 ≤ n ≤ 500000,2 ≤ m ≤ 16,且m≠10),中间用一个空格隔开,其中n 表示十进制数。
【输出】转换后的数【输入输出样例】输入255 8输出3773、分数线划定(程序文件名score.c/score.cpp)【问题描述】公务员选拔工作正在 A 市如火如荼的进行。
为了选拔优秀人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。
面试分数线根据计划录取人数的150%划定,即如果计划录取m名公务员,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。
现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。
【输入】第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的人数。
输入数据保证m*150%向下取整后小于等于n。
第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k(1000 ≤ k ≤ 9999)和该选手的笔试成绩s(1 ≤ s ≤ 100)。
数据保证选手的报名号各不相同。
C语言竞赛题目大全POWERED BY SYD168 2010年5月7日问题:假设在一个32位的机器上,需要将某个外设寄存器的第X位(最低位为第0位,最高位为第31位)设置成0,将第Y位开始的连续三位设置成110(从高位到低位的顺序),而其它位保持不变。
对给定的寄存器值R,及X,Y,编程计算更改后的寄存器值R。
输入的数据仅一行,包括R,X,Y,以逗号","分隔,R为16进制表示的32位整数,X,Y在0-31之间且Y>=3,(Y-X)的绝对值>=3,保证两次置位不会重合更改后的寄存器值R(16进制输出)。
例如:⏹Sample Input12345678,0,3输出:1234567c解题思路:很简单的位操作,但是需要注意的是Y那里是110,不能直接或上110,而是先两次SET,在CLR。
答案:#include <stdio.h>#define CLR(r, x) r &= ~(1UL << x) //1UL 表示32位无符号数,将r的x位清零。
#define SET(r, y) r |= (1UL << y) //表示将r的y位置零int main(){int r, x, y;scanf("%x,%d,%d", &r, &x, &y);CLR(r,x); //清除x位SET(r,y); //置位y位SET(r,y-1); //置位y-1位CLR(r,y-2); //置位y-2位printf("%x", r);return 0;}第1题破译密码问题:据说最早的密码来自于罗马的凯撒大帝。
消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F)。
而你要获得消息原文,也就是要将这个过程反过来。
密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z M原文字母:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U(注意:只有字母会发生替换,其他非字母的字符不变,并且消息原文的所有字母都是大写的。
试题编号: 1
试题名称:出现次数最多的数时间限制: 1.0s
内存限制:256.0MB
问题描述:问题描述
给定n个正整数,找出它们中出现次数最多的数。
如果这样的数有多个,请输出其中最小的一个。
输入格式
输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。
输入的第二行有n个整数s1, s2, …, s n(1 ≤ s i≤ 10000, 1 ≤i ≤ n)。
相邻的数用空格分隔。
输出格式
输出这n个次数中出现次数最多的数。
如果这样的数有多个,输出其中最小的一个。
样例输入
6
10 1 10 20 30 20
样例输出
10
试题编号: 2
试题名称:ISBN号码时间限制: 1.0s
内存限制:256.0MB
问题描述:问题描述
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如
0-670-82162-4就是一个标准的ISBN码。
ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
识别码的计算方法如下:
首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。
例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。
编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出是正确的ISBN号码。
输入格式
输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。
输出格式
输出一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。
样例输入1
0-670-82162-4
样例输出1
Right
样例输入2
0-670-82162-0
样例输出2
0-670-82162-4
题三
试题编号: 3
试题名称:最大的矩形时间限制: 1.0s
内存限制:256.0MB
问题描述:问题描述
在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是h i。
这n个矩形构成了一个直方图。
例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。
请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。
对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。
输入格式
第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1000)。
第二行包含n 个整数h1, h2, … , h n,相邻的数之间由空格分隔。
(1 ≤ h i≤ 10000)。
h i是第i个矩形的高度。
输出格式
输出一行,包含一个整数,即给定直方图内的最大矩形的面积。
样例输入
6
3 1 6 5 2 3
样例输出
10
试题编号: 4
试题名称:有趣的数时间限制: 1.0s
内存限制:256.0MB
问题描述:问题描述
我们把一个数称为有趣的,当且仅当:
1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。
2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。
3. 最高位数字不为0。
因此,符合我们定义的最小的有趣的数是2013。
除此以外,4位的有趣的数还有两个:2031和2301。
请计算恰好有n位的有趣的数的个数。
由于答案可能非常大,只需要输出答案除以1000000007的余数。
输入格式
输入只有一行,包括恰好一个正整数n (4 ≤ n ≤ 1000)。
输出格式
输出只有一行,包括恰好n 位的整数中有趣的数的个数除以1000000007的余数。
样例输入
4
样例输出
3
试题编号: 5
试题名称:I’m stuck! 时间限制: 1.0s
内存限制:256.0MB
问题描述:问题描述
给定一个R行C列的地图,地图的每一个方格可能是
'#', '+', '-', '|', '.', 'S', 'T'七个字符中的一个,分别表示如下意思:
'#': 任何时候玩家都不能移动到此方格;
'+': 当玩家到达这一方格后,下一步可以向上下左右四个方向相邻的任意一个非'#'方格移动一格;
'-': 当玩家到达这一方格后,下一步可以向左右两个方向相邻的一个非'#'方格移动一格;
'|': 当玩家到达这一方格后,下一步可以向上下两个方向相邻的一个非'#'方格移动一格;
'.': 当玩家到达这一方格后,下一步只能向下移动一格。
如果下面相邻的方格为'#',则玩家不能再移动;
'S': 玩家的初始位置,地图中只会有一个初始位置。
玩家到达这一方格后,下一步可以向上下左右四个方向相邻的任意一个非'#'方格移动一格;
'T': 玩家的目标位置,地图中只会有一个目标位置。
玩家到达这一方格后,可以选择完成任务,也可以选择不完成任务继续移动。
如果继续移动下一步可以向上下左右四个方向相邻的任意一个非'#'方格移动一格。
此外,玩家不能移动出地图。
请找出满足下面两个性质的方格个数:
1. 玩家可以从初始位置移动到此方格;
2. 玩家不可以从此方格移动到目标位置。
输入格式
输入的第一行包括两个整数R 和C,分别表示地图的行和列数。
(1 ≤R, C ≤ 50)。
接下来的R行每行都包含C个字符。
它们表示地图的格子。
地图上恰好有一个'S'和一个'T'。
输出格式
如果玩家在初始位置就已经不能到达终点了,就输出“I'm stuck!”(不含双引号)。
否则的话,输出满足性质的方格的个数。
样例输入
5 5
--+-+
..|#.
..|##
S-+-T
####.
样例输出
2
样例说明
如果把满足性质的方格在地图上用'X'标记出来的话,地图如下所示:--+-+
..|#X
..|##
S-+-T
####X。