蓝桥杯cc省赛试题及答案解析
- 格式:docx
- 大小:71.87 KB
- 文档页数:27
蓝桥杯第七届cc初赛试题及答案蓝桥杯第七届CC初赛试题及答案1. 选择题1.1 以下哪个选项是C语言中定义数组的正确方式?A) int array[10];B) int array[];C) int [10] array;D) int array=10;答案:A1.2 以下哪个关键字用于定义一个结构体?A) structB) unionC) enumD) typedef答案:A1.3 在C语言中,哪个运算符用于取地址?A) *B) &C) %D) #答案:B2. 填空题2.1 在C语言中,关键字________用于定义一个函数。
答案:void2.2 如果一个变量的值是10,那么表达式sizeof(&variable)的结果是________。
答案:4(或根据系统不同,可能是8)2.3 在C语言中,________运算符用于定义一个指针。
答案:*3. 编程题3.1 编写一个C语言程序,计算并输出100以内所有偶数的和。
答案:```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("Sum of even numbers from 1 to 100 is: %d\n", sum);return 0;}```3.2 编写一个C语言程序,实现字符串的反转。
答案:```c#include <stdio.h>#include <string.h>void reverseString(char *str) {int len = strlen(str);for (int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}int main() {char str[] = "Hello, World!";reverseString(str);printf("Reversed string: %s\n", str);return 0;}```4. 简答题4.1 请解释C语言中指针和引用的区别。
第十一届蓝桥杯C++省赛B组真题和题解试题A:门牌制作题目【问题描述】小蓝要为一条街的住户制作门牌号。
这条街一共有2020位住户,门牌号从1到2020编号。
小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017需要依次粘贴字符1、0、1、7,即需要1个字符0,2个字符1,1个字符7。
请问要制作所有的1到2020号门牌,总共需要多少个字符2?【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解答案:624#include <cstdio>#include <algorithm>#include <cstring>#include <string>#include <queue>#include <stack>#include <set>#include <cmath>#include <iostream>using namespace std;const int INF = 1e9;int cnt;void cal(int x){while(x){if(x % 10 == 2) cnt++;x /= 10;}}int main(){for(int i = 1; i <= 2020; i++){ cal(i);}cout << cnt;return 0;}试题B:既约分数题目【问题描述】如果一个分数的分子和分母的最大公约数是1,这个分数称为既约分数。
例如,3/4,5/2,1/8,7/1都是既约分数。
请问,有多少个既约分数,分子和分母都是1到2020之间的整数(包括1和2020)?【答案提交】这是一道结果填空题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
蓝桥杯第九届cc组试题及答案蓝桥杯第九届CC组试题及答案一、选择题(每题5分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列哪个选项是正确的C语言函数声明?A. int function(int x);B. int function(int);C. int function(int x, int y);D. int function(x, int y);答案:A3. 在C语言中,以下哪个选项是合法的字符串字面量?A. "Hello, World!"B. 'Hello, World!'C. "Hello, World!" "Another string"D. "Hello, World!" Another string答案:A4. 在C语言中,以下哪个选项是合法的数组声明?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5] = {1, 2};D. int arr[] = {1, 2, 3, 4};答案:A二、填空题(每题5分,共20分)1. 在C语言中,使用________关键字可以定义一个指针变量。
答案:int*2. C语言中,________运算符用于计算两个整数的和。
答案:+3. 在C语言中,________函数用于将字符串复制到另一个字符串。
答案:strcpy4. C语言中,________关键字用于定义一个静态局部变量。
答案:static三、编程题(每题10分,共20分)1. 编写一个C语言函数,计算并返回两个整数的和。
答案:```cint add(int a, int b) {return a + b;}```2. 编写一个C语言程序,读取一个字符串,并打印出它的逆序。
2024年第十五届蓝桥省赛中级组C++真题(附解析)一、选择题(选择题严禁使用程序验证,选择题不答或答错都不扣分)1、定义 char a[]="hello\nworld",执行 cout<<a,输出结果是( )A、helloworldB、 helloworldC、hellonworldD、hello\nworld解析:\n输出时会换行2、(11001010)2+(F8)16的结果是( )。
A、(11001010)2B、(701)8 C、(1C2)16 D、(452)10解析:(11001010)2值为202 (F8)16值为248 和为450,转为16进制为C、(1C2)163、表达式4%12 的结果是( )。
A、0B、4C、3 D、12解析:4%12 ,为求4除以12的余数,结果为44、下列选项中,逻辑表达式的值始终与 B的真假无关的是( )。
A、(!A || B) && AB、(A || B) && (!A && B)C、(A && !A)||BD、(A || B) && (A || !B)解析:D,如果A为真,该语句一定为真,如果A为假,不管B的值是否为真,该语句的值都为假,所以与B的真假无关5、运行下面程序,输出结果是()。
1.int a[6] = {16, 8, 32, 10, 9, 21};2.int func(int L, int R, int d) {3.if (L > R)4.return 0;5.int sum = 0, m = a[L], index = L;6.for (int i = L + 1; i <= R; i++) {7.if (m < a[i]) {8. m = a[i];9. index = i;10. }11. }12.int lt = func(L, index - 1, d + 1);13.int rt = func(index + 1, R, d + 1);14.return lt + rt + d * m;15.}16.int main() {17. cout << func(0, 5, 1);18.return 0;19.}A、196B、197C、198D、199解析:A ,当func 函数被调用时,它首先检查L 是否大于R,这是递归的基本情况。
第三届“蓝桥杯”全国软件专业人才设计与创业大赛全国总决赛C/C++程序设计本科组比赛选手须知:●比赛时间为4小时(9:00-13:00)。
●参赛选手切勿在提交的代码中书写“XX”、“考号”,“院校名”等身份信息或其它与竞赛题目无关的内容,否则成绩无效。
●试题包含三种类型:“结果填空”、“代码填空”与“程序设计”,总计100分。
结果填空:5分代码填空:16分程序设计:19+27+33= 79分结果填空题:要求参赛选手根据题目描述直接填写结果。
求解方式不限。
不要求源代码。
把结果填空的答案存入【XX+XX文件夹】下对应题号的“解答.txt”中即可。
代码填空题:要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不超过一条语句(即中间不能出现分号)。
把代码填空的答案(仅填空处的答案,不包括题面已存在的代码)存入【XX+XX文件夹】下对应题号的“解答.txt”中即可。
程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。
选手的程序只有能运行出正确结果的时候才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
对每个编程题目,要求选手把所有函数写在一个文件中。
调试好后,存入与【XX+XX 文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
代码中允许使用STL类库,但不能使用MFC或ATL等非ANSI c++标准的类库。
例如,不能使用CString类型(属于MFC类库)。
1.结果填空(满分5分)题目在【XX+XX文件夹】下对应题号的“题目.rar”中,请先解压该文件。
解压密码以考场公布为准。
把答案存入【XX+XX文件夹】下对应题号的“解答.txt”中即可。
第七届蓝桥杯省赛a组试题及答案第七届蓝桥杯省赛A组试题及答案1. 选择题- 1.1 以下哪个选项是Java中的数据类型?A. BooleanB. StringC. IntegerD. All of the above- 答案:D- 1.2 在C++中,用于定义一个类的方法是什么关键字?A. classB. structC. functionD. method- 答案:A2. 填空题- 2.1 在Python中,用于定义函数的关键字是____。
- 答案:def- 2.2 在JavaScript中,用于声明变量的关键字是____。
- 答案:var3. 编程题- 3.1 编写一个函数,计算并返回从1到n的整数之和。
- 答案:```pythondef sum_n(n):return sum(range(1, n+1))```- 3.2 编写一个程序,实现一个简单的计算器,可以进行加、减、乘、除操作。
- 答案:```pythondef calculator(a, b, operation):if operation == '+':return a + belif operation == '-':return a - belif operation == '*':return a * belif operation == '/':return a / b if b != 0 else 'Error: Division by zero'```4. 简答题- 4.1 解释什么是面向对象编程(OOP)?- 答案:面向对象编程(OOP)是一种编程范式,它使用“对象”来设计应用程序和程序。
对象是现实世界中事物的抽象,它们具有属性(数据)和方法(功能)。
- 4.2 描述一下什么是递归函数?- 答案:递归函数是一个调用自身的函数,它允许函数在执行过程中调用自己。
第七届蓝桥杯省赛c语言试题及答案第七届蓝桥杯省赛C语言试题及答案1. 题目一:计算圆的面积要求:编写一个程序,输入圆的半径,计算并输出圆的面积。
答案:```c#include <stdio.h>#define PI 3.14159int main() {float radius, area;printf("请输入圆的半径: ");scanf("%f", &radius);area = PI * radius * radius;printf("圆的面积是: %.2f\n", area);return 0;}```2. 题目二:字符串反转要求:编写一个函数,实现字符串的反转。
答案:```c#include <stdio.h>#include <string.h>void reverseString(char *str) {int i, j;char temp;for(i = 0, j = strlen(str) - 1; i < j; i++, j--) {temp = str[i];str[i] = str[j];str[j] = temp;}}int main() {char str[100];printf("请输入一个字符串: ");scanf("%s", str);reverseString(str);printf("反转后的字符串是: %s\n", str);return 0;}```3. 题目三:寻找最大值要求:编写一个程序,输入10个整数,找出并输出其中的最大值。
答案:```c#include <stdio.h>int main() {int numbers[10], max;printf("请输入10个整数:\n");for(int i = 0; i < 10; i++) {scanf("%d", &numbers[i]);}max = numbers[0];for(int i = 1; i < 10; i++) {if(numbers[i] > max) {max = numbers[i];}}printf("最大值是: %d\n", max);return 0;}```4. 题目四:计算阶乘要求:编写一个函数,计算并返回一个整数的阶乘。
第八届蓝桥杯c组试题及答案第八届蓝桥杯C组试题及答案1. 单项选择题1.1 以下哪个选项是C语言中声明一个整型数组的正确方式?A. int array[10];B. int [10] array;C. int array[];D. int array=10;1.2 正确答案是 A。
2. 程序填空题2.1 请在以下程序中填入缺失的代码,以实现计算并输出1到100之间所有奇数的和。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 1) {sum += i;}}printf("Sum of odd numbers: %d\n", sum);return 0;}```2.2 缺失的代码是 `if (i % 2 == 1) {`。
3. 程序改错题3.1 以下程序旨在计算并输出1到100之间所有偶数的和,但存在错误,请找出并修正错误。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("Sum of even numbers: %d\n", sum);return 0;}```3.2 错误在于程序的目的是计算奇数的和,但代码计算的是偶数的和。
要修正这个问题,需要将 `if (i % 2 == 0)` 更改为 `if (i % 2 != 0)`。
4. 编程题4.1 编写一个程序,实现以下功能:从用户输入一个整数n,然后输出n的阶乘。
```c#include <stdio.h>long long factorial(int n) {if (n == 0) return 1;return n * factorial(n - 1);}int main() {int n;printf("Enter a number: ");scanf("%d", &n);printf("Factorial of %d is %lld\n", n,factorial(n));return 0;}```4.2 以上程序正确实现了题目要求的功能。
第⼗⼆届蓝桥杯⼤赛软件赛省赛第⼆场CC++⼤学A组题解A. 双阶乘输出2021!! \bmod 10^4for 循环每次减2即可B. 格点求第⼀象限整点中,xy\leq 2021的整点个数for 循环暴⼒遍历2021\times 2021的平⾯,统计答案即可C. 整数分解求2021分解为5个正整数的有序分解⽅案数令f_{n, p}表⽰n被分解为p个正整数的有序分解⽅案数搜索或递推均可D. 城邦给定编号为1~2021的2021元完全图,定义点权为编号数码的集合的元素和(例如 : 2021的为2+0+1=3)。
定义连接两点a, b的边权为两点点权之和求 MST 边权和先暴⼒把1~2021的点权跑出来,然后所有边已知由于是提交答案题,跑 Kruskal 或者 Prim 算法均可E. 游戏给定数值n,两⼈轮流进⾏游戏。
每⼀轮可将数字n化为其因数之⼀,直到n变为1问n=20210509时的游戏⽅案数令f_d表⽰从d开始,游戏的⽅案数,初始f_1=1⽤刷表法,将d的所有倍数n,均执⾏f_n+=f_d复杂度为\displaystyle \sum_{i=1}^n \lfloor{n\over i}\rfloor\approx \sum_{i=1}^n {n\over i}=O(n\log n)期望时长为5sF. ⼩平⽅求[1,n)\cap Z中,模n意义下,平⽅严格⼩于{n\over 2}的数的个数n\leq 10^4for 循环暴⼒验证即可G. 完全平⽅数给定正整数n,求最⼩的正整数x,使得nx为完全平⽅数n\leq 10^{12}考虑到n⼤于\sqrt n的质因数最多1个否则任意两个乘起来也超过n因此优先⽤欧拉筛或埃⽒筛打出\sqrt n\leq 10^6范围内的质因数,将该部分的每个质数在n中的次数求出若次数为奇数,则x中必须出现奇数次该质数,故取1次;否则x中需为偶数次,取0次最后验证n是否仍有其他质因数,若有,则x中该质因数必须出现奇数次,同样取1次H. 负载均衡n台计算机,第i台算⼒为v_im个任务,每个在a_i时刻送达,需要消耗b_i号计算机c_i的时间与d_i的算⼒若分配任务时,计算机算⼒充⾜,必须执⾏任务,并输出剩余算⼒;否则输出-1n, m\leq 2\times 10^5考虑将任务拆成两瓣:1. a_i时到达的,消耗b_i号计算机d_i算⼒的2. a_i+c_i时到达的,消耗b_i号计算机-d_i算⼒的且第⼆个⼦任务奏效当且仅当第⼀个⼦任务奏效因此,对任务标记原来的序号i,再按时间排序;时间相同时,算⼒为负数的任务(第⼆类任务)优先维护每台计算机的剩余算⼒,按时间顺序执⾏任务当执⾏第⼀类任务时,检查算⼒是否充⾜,充⾜则执⾏当前任务,更新剩余算⼒并输出;若不充⾜,则标记当前任务原来序号i不⽣效,并且输出-1当执⾏第⼆类任务时,检查当前任务是否⽣效,若不⽣效则直接退出;否则更新算⼒复杂度为O(n\log n)I. 国际象棋规定国际象棋棋盘中,位于点(x,y)的马可以攻击8个⽅向:1. (x-2, y-1)2. (x-2, y+1)3. (x-1, y-2)4. (x-1, y+2)5. (x+1, y-2)6. (x+1, y+2)7. (x+2, y-1)8. (x+2, y+1)求n\times m的棋盘中,放置k匹马且不互相攻击的⽅案数n\leq 6, m\leq 100, k\leq 20状压 dp :预处理n_{1, S}表⽰当前⾏状态状态为S时,下⼀⾏的最⼤可选集合;n_{2, S}表⽰下两⾏最⼤可选集合;cnt_S表⽰|S|记f_{m, S, T, k}表⽰第m⾏状态为S且第(m-1)⾏状态为T时,放置了k匹马且不互相攻击的⽅案数不难得出,当且仅当S\subseteq n_{1, T}时⽅程有意义,且初始状态为f_{1, S, 0, cnt_S}=1状态转移采⽤刷表实现:将f_{m, S, T, k}刷到\forall R\subseteq (n_{1, S}\cap n_{2, T}),f_{m+1, R, S, k+|R|}答案为\displaystyle \sum_S\sum_T f_{m, S, T, k}发现第⼀维可以滚动成m\bmod 2形式,故空间复杂度为2\times 2^n\times 2^n\times k=O(k\cdot 4^n)时间复杂度为m\times 2^n\times 2^n\times k+2^n\times 2^n=O(mk\cdot 4^n),显然充⾜甚⾄加上了S\subseteq n_{1, T}的限制,根本拉不到那么⼤J. 完美序列这题题⽬是真的绕定义完美序列为:满⾜除第1个数外,所有数为前⼀个数的因数的序列。