蓝桥杯c 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)?【答案提交】这是一道结果填空题,你只需要算出结果后提交即可。

本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

蓝桥杯b组c语言决赛试题及答案

蓝桥杯b组c语言决赛试题及答案

蓝桥杯b组c语言决赛试题及答案蓝桥杯B组C语言决赛试题及答案一、选择题1. 下列哪个选项是C语言中的关键字?A. intB. StringC. varD. float答案:A2. 在C语言中,哪个函数用于计算并返回字符串的长度?A. strlenB. lengthC. sizeD. count答案:A3. 下列哪个选项不是C语言中的基本数据类型?A. intB. floatC. charD. string答案:D二、填空题1. 在C语言中,表示逻辑“与”的运算符是______。

答案:&&2. 若有定义 `int a = 5;`,则表达式 `a++` 的值是______。

答案:53. 函数 `printf` 的返回值类型是______。

答案:int三、编程题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;}```答案:程序正确计算了100以内所有偶数的和,并输出结果。

2. 编写一个C语言函数,实现字符串的反转。

```c#include <stdio.h>#include <string.h>void reverseString(char* str) {int length = strlen(str);for (int i = 0; i < length / 2; i++) {char temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}int main() {char str[] = "Hello, World!";reverseString(str);printf("Reversed string: %s\n", str);return 0;}```答案:函数 `reverseString` 正确地反转了输入的字符串,并在 `main` 函数中进行了测试。

蓝桥杯考试题及答案

蓝桥杯考试题及答案

蓝桥杯考试题及答案一、单项选择题(每题2分,共10题)1. 以下哪个不是计算机编程语言?A. PythonB. JavaC. C++D. English答案:D2. 在HTML中,用于定义最重要的标题的标签是?A. `<h1>`B. `<h6>`C. `<head>`D. `<body>`答案:A3. 在数据库中,用于删除表中数据的SQL命令是?A. DELETEB. DROPC. INSERTD. UPDATE答案:A4. 哪种数据结构允许在两端进行插入和删除操作?A. 栈B. 队列C. 链表D. 数组答案:C5. 在计算机科学中,二进制数“1010”转换为十进制数是多少?A. 8B. 10C. 12D. 14答案:B6. 以下哪个选项不是面向对象编程的特性?A. 封装B. 继承C. 多态D. 过程化答案:D7. 在JavaScript中,用于定义函数的关键字是?A. functionB. varC. letD. const答案:A8. 在Unix/Linux系统中,查看当前目录下的文件和文件夹的命令是?A. lsB. pwdC. cdD. mkdir答案:A9. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C10. 在计算机图形学中,3D图形渲染中常用的坐标系统是?A. 笛卡尔坐标系B. 极坐标系C. 柱面坐标系D. 球面坐标系答案:A二、填空题(每题2分,共5题)1. 在Python中,用于创建空列表的语法是____。

答案:[]2. 在HTML中,用于创建超链接的标签是____。

答案:<a>3. SQL查询语句中,用于选择所有列的关键字是____。

答案:*4. 在计算机科学中,一个算法的时间复杂度通常用____表示。

答案:大O符号5. 在JavaScript中,用于获取元素的CSS样式的属性是____。

蓝桥杯大赛试题及答案

蓝桥杯大赛试题及答案

蓝桥杯大赛试题及答案 一、单项选择题 1. 在计算机编程中,以下哪个关键字用于定义一个类? A. class B. function C. struct D. interface 答案:A

2. 在HTML中,用于创建无序列表的标签是? A.

3. 在JavaScript中,以下哪个方法用于将字符串转换为大写? A. toLowerCase() B. toUpperCase() C. trim() D. split() 答案:B

二、填空题 1. 在Python中,用于计算列表中元素个数的函数是____。 答案:len()

2. 在CSS中,用于设置元素背景颜色的属性是____。 答案:background-color 3. 在SQL中,用于选择所有列的关键字是____。 答案:*

三、简答题 1. 请简述什么是算法的时间复杂度,并给出一个例子。 答案:算法的时间复杂度是指算法执行时间随输入数据规模增长的变化趋势。例如,对于一个简单的线性搜索算法,其时间复杂度为O(n),意味着随着输入数据的增加,算法执行时间线性增长。

2. 解释什么是闭包,并给出一个JavaScript中闭包的应用场景。 答案:闭包是指一个函数能够访问其外部作用域中的变量。在JavaScript中,闭包的一个应用场景是创建私有变量,例如在模块模式中,外部函数可以访问内部函数的变量,但内部函数的变量对外部是不可见的。

四、编程题 1. 编写一个函数,实现计算两个整数的和。 答案: ```python def sum_numbers(a, b): return a + b ```

2. 编写一个函数,实现检查一个字符串是否是回文。 答案: ```javascript function isPalindrome(str) { var reversedStr = str.split('').reverse().join(''); return str === reversedStr; } ```

蓝桥杯部分题目(含答案)

蓝桥杯部分题目(含答案)

1、未名湖边的烦恼关键词:递归,蓝桥杯,算法问题描述每年冬天,北大未名湖上都是滑冰的好地方。

北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。

每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。

现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。

(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式两个整数,表示m和n输出格式一个整数,表示队伍的排法的方案数。

样例输入3 2样例输出5数据规模和约定m,n∈[0,18]#include "iostream"#include "cstdio"#include "cmath"#include "algorithm"#include "map"using namespace std;int f(int m,int n){if(m<n) return 0;if(n==0) return 1;return f(m,n-1)+f(m-1,n);}int main(){int m,n;scanf("%d%d",&m,&n);int ans=f(m,n);printf("%d\n",ans);return 0;}2.标题:蚂蚁感冒关键词:结构体排序,蓝桥杯【题目描述】长100厘米的细长直杆子上有n只蚂蚁。

它们的头有的朝左,有的朝右。

每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。

当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。

这些蚂蚁中,有1只蚂蚁感冒了。

并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。

请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。

【数据格式】第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。

蓝桥杯试题C语言答案

蓝桥杯试题C语言答案

1、A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些人参加了竞赛:(1)A参加时,B也参加;(2)B和C只有一个人参加;(3)C和D或者都参加,或者都不参加;(4)D和E中至少有一个人参加;(5)如果E参加,那么A和D也都参加。

00110 c、d#include<stdio.h>int main(){int a,b,c,d,e; /*0表示不参加, 1表示参加.*/for(a=0;a<2;a++)for(b=0;b<2;b++)for(c=0;c<2;c++)for(d=0;d<2;d++)for(e=0;e<2;e++){if(a&&!b) continue;if(b&&c||!b&&!c) continue;if(c&&!d||!c&&d) continue;if(!d&&!e) continue;if(e&&(!a||!d)) continue;printf("%d%d%d%d%d",a,b,c,d,e);}return 0;}2、某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:1)A和B两人中至少去一人;2)A和D不能一起去;3)A、E和F三人中要派两人去;4)B和C都去或都不去;5)C和D两人中去一个;6)若D不去,则E也不去。

试编写一个程序,输出问应当让哪几个人去?#include<stdio.h>int main(){int a,b,c,d,e,f;for(a=1;a>=0;a--)for(b=1;b>=0;b--)/*1:去 0:不去*/for(c=1;c>=0;c--)for(d=1;d>=0;d--)for(e=1;e>=0;e--)for(f=1;f>=0;f--){if(a+b>=1&&a+d!=2&&a+e+f==2&&b==c&&c+d==1&&(d+e==0||d==1))printf("a=%d,b=%d,c=%d,d=%d,e=%d,f=%d",a,b,c,d,e,f);}return 0;}3、警察局抓住了A、B、C、D四名盗窃嫌疑犯,其中只有一人是小偷。

蓝桥杯试题及答案

蓝桥杯试题及答案

蓝桥杯试题及答案蓝桥杯是面向全国高校计算机专业学生的程序设计竞赛,由工业和信息化部人才交流中心主办,旨在提高学生的编程能力、算法设计能力以及团队合作能力。

以下是一份蓝桥杯试题及答案的示例,供参考。

### 蓝桥杯程序设计竞赛试题及答案#### 题目一:求最大公约数题目描述:给定两个正整数 a 和 b,请编写一个程序计算它们的最大公约数(GCD)。

输入格式:输入包含两个整数 a 和 b,用空格分隔。

输出格式:输出 a 和 b 的最大公约数。

样例输入:```24 36```样例输出:``````答案:```c#include <stdio.h>int gcd(int a, int b) {while (b != 0) {int temp = b;b = a % b;a = temp;}return a;}int main() {int a, b;scanf("%d %d", &a, &b);printf("%d\n", gcd(a, b));return 0;}```#### 题目二:字符串反转题目描述:编写一个程序,实现对输入的字符串进行反转。

输入格式:输入一个字符串。

输出格式:输出反转后的字符串。

样例输入:```Hello World```样例输出:`````ldrow olleH```答案:```c#include <stdio.h>#include <string.h>int main() {char str[1000];scanf("%s", str);int len = strlen(str);for (int i = len - 1; i >= 0; i--) { printf("%c", str[i]);}return 0;}```#### 题目三:二分查找题目描述:在一个已排序的数组中,使用二分查找算法找出一个特定元素的位置。

第十二届蓝桥杯2021年省赛真题(CC++大学B组)

第十二届蓝桥杯2021年省赛真题(CC++大学B组)

第⼗⼆届蓝桥杯2021年省赛真题(CC++⼤学B组)第⼗⼆届蓝桥杯 2021年省赛真题 (C/C++ ⼤学B组)这次的难度⽐上次⼤,主要表现在数据量⼤。

填空题的后两道⽐较难。

⼤雪莱up主A 空间(进制转换)本题总分:5 分(√)问题描述⼩蓝准备⽤ 256MB 的内存空间开⼀个数组,数组的每个元素都是 32 位⼆进制整数,如果不考虑程序占⽤的空间和维护内存需要的辅助空间,请问256MB 的空间可以存储多少个 32 位⼆进制整数?答案提交这是⼀道结果填空的题,你只需要算出结果后提交即可。

本题的结果为⼀个整数,在提交答案时只填写这个整数,填写多余的内容将⽆法得分。

256 * 1024 * 1024* 8 / 32答案67108864B 卡⽚(模拟)本题总分:5 分(√)问题描述⼩蓝有很多数字卡⽚,每张卡⽚上都是数字 0 到 9。

⼩蓝准备⽤这些卡⽚来拼⼀些数,他想从 1 开始拼出正整数,每拼⼀个,就保存起来,卡⽚就不能⽤来拼其它数了。

⼩蓝想知道⾃⼰能从 1 拼到多少。

例如,当⼩蓝有 30 张卡⽚,其中 0 到 9 各 3 张,则⼩蓝可以拼出 1 到 10,但是拼 11 时卡⽚ 1 已经只有⼀张了,不够拼出 11。

现在⼩蓝⼿⾥有 0 到 9 的卡⽚各 2021 张,共 20210 张,请问⼩蓝可以从 1拼到多少?提⽰:建议使⽤计算机编程解决问题。

答案提交这是⼀道结果填空的题,你只需要算出结果后提交即可。

本题的结果为⼀个整数,在提交答案时只填写这个整数,填写多余的内容将⽆法得分。

思路构造专门的判定函数check。

代码#include<cstdio>#include<iostream>using namespace std;int s[10];bool check(int x){while(x){int t=x%10;x/=10;if(--s[t]<0) return false; //不够了}return true;}int main(){for(int i=0;i<10;i++){s[i]=2021;}for(int i=1;;i++){if(!check(i)) {cout<<i-1<<endl;return 0;}}return 0;}C 直线(枚举)本题总分:10 分问题描述在平⾯直⾓坐标系中,两点可以确定⼀条直线。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2016蓝桥杯c-c++B组省赛试题及解析第一题煤球数目有一堆煤球,堆成三角棱锥形。

具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

答案:171700#include<>int main(){int a[101] ={0};for(int i = 1 ; i < 101 ; i ++) a[i] = a[i-1] + i;int ans = 0;for(int j = 1 ; j < 101 ; j ++) ans += a[j];printf("%d\n",ans);return 0;}第二题生日蜡烛某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。

现在算起来,他一共吹熄了236根蜡烛。

请问,他从多少岁开始过生日party的?请填写他开始过生日party的年龄数。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

答案:26#include<>int main(){int start,end;for(start = 1 ; start < 236 ; start ++){for( end = start ; end < 236 ; end ++ ){int sum = 0;for(int i = start; i <= end; i ++)sum += i;if( sum == 236){printf("start : %d end : %d\n",start,end); }}}return 0;}第三题凑算式B DEFA + --- + ------- = 10C GHI(如果显示有问题,可以参见【图】)这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法。

这个算式一共有多少种解法?注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。

答案:29#include<>int ans = 0;int num[10];bool visit[10];void Solve(){double sum = num[0] + (double)num[1] / num[2] + (double)(num[3]*100+num[4]*10+num[5])/(num[6]*100+num[7]*10+num[8]);if(sum == 10){ans ++;}}void dfs(int index){if(index == 9){Solve();return ;}for(int i = 1 ; i < 10 ; i ++) {if(!visit[i]){visit[i] = true; num[index] = i; dfs(index+1);visit[i] = false; }}}int main(){dfs(0);printf("%d\n",ans);return 0;}第四题快速排序排序在各种场合经常被用到。

快速排序是十分常用的高效率的算法。

其思想是:先选一个“标尺”,用它把整个队列过一遍筛子,以保证:其左边的元素都不大于它,其右边的元素都不小于它。

这样,排序问题就被分割为两个子区间。

再分别对子区间排序就可以了。

下面的代码是一种实现,请分析并填写划线部分缺少的代码。

#include <>void swap(int a[], int i, int j){int t = a[i];a[i] = a[j];a[j] = t;}int partition(int a[], int p, int r) {int i = p;int j = r + 1;int x = a[p];while(1){while(i<r && a[++i]<x);while(a[--j]>x);if(i>=j) break;swap(a,i,j);}______________________;return j;}void quicksort(int a[], int p, int r) {if(p<r){int q = partition(a,p,r);quicksort(a,p,q-1);quicksort(a,q+1,r);}}int main(){int i;int a[] = {5,13,6,24,2,8,19,27,6,12,1,17};int N = 12;quicksort(a, 0, N-1);for(i=0; i<N; i++) printf("%d ", a[i]);printf("\n");return 0;}注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。

答案:swap(a,p,j)第五题抽签X星球要派出一个5人组成的观察团前往W星。

其中:A国最多可以派出4人。

B国最多可以派出2人。

C国最多可以派出2人。

....那么最终派往W星的观察团会有多少种国别的不同组合呢?下面的程序解决了这个问题。

数组a[] 中既是每个国家可以派出的最多的名额。

程序执行结果为:DEFFFCEFFFCDFFFCDEFFCCFFFCCEFFCCDFFCCDEFBEFFFBDFFFBDEFFBCFFFBCEFFBCDFFBCDEF....(以下省略,总共101行)#include <>#define N 6#define M 5#define BUF 1024void f(int a[], int k, int m, char b[]) {int i,j;if(k==N){b[M] = 0;if(m==0) printf("%s\n",b);return;}for(i=0; i<=a[k]; i++){for(j=0; j<i; j++) b[M-m+j] = k+'A';______________________;图.”的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。

注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>,不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

答案:方法一:#include <>#include <>int main(){int n;int flag = false;scanf("%d",&n);for(int i = 0 ; i * i <= n ; i ++){for(int j = 0 ; j * j <= n ; j ++){for(int k = 0 ; k * k <= n ; k ++){int temp = n - i*i - j*j - k*k;double l = sqrt((double) temp);if(l == (int)l ){printf("%d %d %d %d\n",i,j,k,(int)l); flag = true;break;}}if(flag)break;}if(flag)break;}return 0;}方法二:#include <>#include <>int mpt[5000010] ={0}; .”的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。

注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>,不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

第十题最大比例X星球的某个大奖赛设了M级奖励。

每个级别的奖金是一个正整数。

并且,相邻的两个级别间的比例是个固定值。

也就是说:所有级别的奖金数构成了一个等比数列。

比如:16,24,36,54其等比值为:3/2现在,我们随机调查了一些获奖者的奖金数。

请你据此推算可能的最大的等比值。

输入格式:第一行为数字 N (0<N<100),表示接下的一行包含N个正整数第二行N个正整数Xi(Xi<1 000 000 000 000),用空格分开。

每个整数表示调查到的某人的奖金数额要求输出:一个形如A/B的分数,要求A、B互质。

表示可能的最大比例系数测试数据保证了输入格式正确,并且最大比例是存在的。

例如,输入:31250 200 32程序应该输出:25/4再例如,输入:43125 32 32 200程序应该输出:5/2再例如,输入:33888 524288 2程序应该输出:4/1资源约定:峰值内存消耗 < 256M CPU消耗 < 3000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。

注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>,不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

答案:#include <>#include <algorithm>#include <queue>using namespace std;#define LL long long struct fs{LL up,down;};int n;LL arr[110];fs Fs[110];bool cmp(LL a,LL b) {return a > b;}LL Gcd(LL a,LL b) {if( b == 0 )return a;return Gcd(b,a%b);}LL Get(LL a, LL b){if( a < b) a ^= b ^= a ^= b;LL v[30];queue<LL>team;if( a == b || a / b == a) return b; v[0] = a, v[1] = b;v[2] = a / b;int top = 3,i,j;(a/b);while()){();for(i = 0 ; i < top ; i ++){LL temp = (v[i] > now) ? v[i] / now : now / v[i]; bool find = false;for(j = 0 ; j < top ; j ++)if( v[j] == temp) find = true;if(find == true) continue;(temp);v[top++] = temp;}}LL ans = v[0];for(i = 0 ; i < top ; i ++){ans = v[i];break;}for(i = 0 ; i < top ; i ++)if( v[i] < ans && v[i] != 1) ans = v[i];return ans;}int main(){int i,j;scanf("%d",&n);for(i = 0 ; i < n ; i ++) scanf("%lld",&arr[i]); sort(arr,arr+n,cmp);int top = 1;for(i = 1; i < n ; i ++)if(arr[i] != arr[i-1]) arr[top++] = arr[i]; n = top;for(i = 0 ; i < n - 1; i ++){LL gcd = Gcd(arr[i],arr[i+1]);Fs[i].up = arr[i] / gcd;Fs[i].down = arr[i+1] / gcd;}LL x = Fs[0].up;for(i = 0 ; i < n - 1 ; i ++)x = Get(x,Fs[i].up);LL y = Fs[0].down;for(i = 0 ; i < n - 1; i ++)y = Get(y,Fs[i].down); printf("%lld/%lld\n",x,y); return 0;}。

相关文档
最新文档