蓝桥杯试题C语言答案
蓝桥比赛练习C语言[5篇]
蓝桥比赛练习C语言[5篇]第一篇:蓝桥比赛练习C语言时间限制:1.0s 内存限制:256.0MB1闰年判断问题描述给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年: 1.年份是4的倍数而不是100的倍数; 2.年份是400的倍数。
其他的年份都不是闰年。
输入格式输入包含一个整数y,表示当前的年份。
输出格式输出一行,如果给定的年份是闰年,则输出yes,否则输出no。
说明:当试题指定你输出一个字符串作为结果(比如本题的yes 或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。
样例输入2013 样例输出no 样例输入2016 样例输出yes 数据规模与约定1990 <= y <= 2050。
本题的C参考代码如下:1.#include2.int main()3.{4.int y;5.scanf(“%d”, &y);6.if(y%4==0 && y%100!=0 || y%400==0)7.printf(“yes”);8.else9.printf(“no”);10.return 0;11.} 2.01字串问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。
它们的前几个是:00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串。
输入格式本试题没有输入。
输出格式输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出00000 00001 00010 00011 本题的C参考代码如下:1.#include2.int main()3.{4.int i, j, k, l, m;5.for(i = 0;i <= 1;++i)6.for(j = 0;j <= 1;++j)7.for(k = 0;k <= 1;++k)8.for(l = 0;l <= 1;++l)9.for(m = 0;m <= 1;++m)10.printf(“%d%d%d%d%dn”, i, j, k, l, m);11.return 0;12.}3.字母图形问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
蓝桥杯2022测试题答案
蓝桥杯2022测试题答案一、选择题1. 在C++中,下列哪个关键字用于定义类的构造函数?A. classB. publicC. newD. constructor答案:D2. 下列关于Python中列表(list)的描述,哪项是正确的?A. 列表是不可变的序列类型。
B. 列表不支持添加元素。
C. 列表可以通过下标访问元素。
D. 列表不支持删除元素。
答案:C3. 在Java中,final关键字的作用是?A. 使变量成为静态常量。
B. 使方法不能被重写。
C. 使类不能被继承。
D. 使变量的值在初始化后不可更改。
答案:D4. 在HTML中,用于创建超链接的标签是?A. <a>B. <link>C. <img>D. <script>答案:A5. 下列哪个算法属于贪心算法?A. 快速排序B. 动态规划C. 回溯算法D. 霍夫曼编码答案:D二、填空题1. 在计算机科学中,_________ 原理是指在解决问题时,通过解决子问题来递归地构造出解决方案。
答案:分治2. 数据库设计中,_________ 范式(NF)的核心思想是消除数据的传递依赖,确保数据库表中的数据项只依赖于主键。
答案:第三3. 在软件开发中,_________ 模式是一种设计模式,它允许系统在不修改现有代码的基础上引入新的功能。
答案:装饰器4. 计算机网络中,_________ 是指通过互联网发送和接收电子邮件消息的过程。
答案:SMTP(简单邮件传输协议)5. 操作系统中,_________ 是指系统资源的分配和回收,确保系统高效、稳定运行。
答案:调度三、简答题1. 请简述TCP和UDP的区别。
答:TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的网络传输层协议。
TCP提供可靠的、面向连接的服务,它通过三次握手建立连接,确保数据的顺序和完整性,适用于需要高可靠性的应用,如网页浏览和文件传输。
2024十五届蓝桥省赛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,这是递归的基本情况。
大学生蓝桥杯试题及答案
大学生蓝桥杯试题及答案一、选择题(每题2分,共20分)1. 在计算机科学中,通常用什么来表示一个算法的效率?A. 时间复杂度B. 空间复杂度C. 算法的可读性D. 算法的可维护性答案:A2. 下列哪种数据结构在插入和删除操作时不需要移动其他元素?A. 链表B. 数组C. 栈D. 队列答案:A3. 以下哪个选项是面向对象编程的三个基本特征?A. 封装、继承、多态B. 抽象、封装、继承C. 继承、封装、多态D. 封装、继承、抽象答案:A4. 在HTML中,用于定义最重要的标题的标签是什么?A. <h1>B. <h6>C. <title>D. <header>答案:A5. 在数据库管理系统中,用于从数据库中检索数据的SQL语句是?A. INSERTB. UPDATEC. DELETED. SELECT答案:D6. 在Java中,用于定义一个类的方法的关键字是什么?A. classB. methodC. functionD. public答案:D7. 在C语言中,用于声明一个变量为静态存储的关键字是什么?A. staticB. externC. registerD. auto答案:A8. 在Python中,用于定义一个函数的关键字是什么?A. defB. functionC. methodD. class答案:A9. 在操作系统中,用于管理进程的调度和资源分配的组件是什么?A. 文件系统B. 内存管理C. 进程管理器D. 设备驱动程序答案:C10. 以下哪个协议是用于在互联网上发送电子邮件的?A. HTTPB. FTPC. SMTPD. TCP答案:C二、填空题(每题2分,共20分)1. 在计算机科学中,________是用来衡量算法在最坏情况下执行时间的量度。
答案:时间复杂度2. 在数据结构中,________是一种允许在任意位置插入和删除数据的线性数据结构。
蓝桥杯试题及答案
蓝桥杯试题及答案一、选择题1. 在Java中,以下哪个关键字用于定义类?A. classB. interfaceC. enumD. struct答案:A2. 下列哪个不是Python的内置数据类型?A. intB. floatC. stringD. list答案:D二、填空题1. 在C语言中,定义一个整型变量的关键字是________。
答案:int2. 在JavaScript中,用于定义函数的关键字是________。
答案:function三、简答题1. 请简述什么是算法的时间复杂度,并给出一个例子。
答案:算法的时间复杂度是指算法执行时间随输入规模增长的变化趋势。
例如,对于一个简单的线性搜索算法,如果数组中有n个元素,最坏情况下需要比较n次,因此其时间复杂度是O(n)。
2. 请解释什么是栈,并给出一个栈的应用场景。
答案:栈是一种后进先出(LIFO)的数据结构,允许在一端进行数据的添加和删除操作。
一个常见的栈的应用场景是函数调用的实现,在编程中,每当调用一个函数,就会将函数的返回地址和局部变量压入栈中,待函数执行完毕后再从栈中弹出。
四、编程题1. 编写一个函数,实现对一个整数数组进行排序。
答案:```javapublic static void sort(int[] array) {for (int i = 0; i < array.length - 1; i++) {for (int j = 0; j < array.length - i - 1; j++) {if (array[j] > array[j + 1]) {int temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}}```2. 编写一个程序,实现计算一个字符串中所有元音字母的数量。
答案:```pythondef count_vowels(s):vowels = "aeiouAEIOU"return sum(1 for char in s if char in vowels)# 示例print(count_vowels("Hello World")) # 输出应该是 3```五、案例分析题1. 描述一个场景,其中使用二叉搜索树(BST)比使用数组更有效,并解释原因。
蓝桥杯 试题 辽工大 C语言 详细
简单数学问题时间限制1000MS (30000MS) 运行内存限制65536KByte总提交:800 测试通过:74描述对一个五位以内的正整数,要求:(1)判断它是一个几位数;(2)逆序输出其各位数字。
输入现有一组M个测试数据(M<100),然后有M个五位以内的的正整数输出每行依次输出该数的位数和逆序输出各位数字,各位数之间用逗号(注意是英文的逗号)隔开样例输入3564391234样例输出5,9,3,4,6,53,3,2,11,4提示题目来源【提交本题】【本题解答状况】【对本求转置矩阵问题时间限制1000MS (30000MS) 运行内存限制65536KByte总提交:322 测试通过:40描述求一个三行三列矩阵的转置矩阵。
输入第一行一个整数n<20,表示有n组测试数据,下面是n组数据;每组测试数据是九个整型数(每个数都不大于10000),分别为矩阵的的每项;输出每组测试数据的转置矩阵,每两个数之间有一个空格隔开;请在每组输出之后加一个换行样例输入21 2 3 4 5 6 7 8 92 3 4 5 6 7 8 9 1样例输出1 4 72 5 83 6 92 5 83 6 94 7 1提示注意,每行最后一个元素没有空格,直接换行。
题目来源【提交本题】【本题解答状况】【对本题提问】【返回】Dinner时间限制1000MS (30000MS) 运行内存限制65536KByte总提交:78 测试通过:18描述Little A is one member of ACM team. He had just won the gold in World Final. To celebrate, he decided to invite all to have o ne meal. As bowl, knife and other tableware is not enough in the kitchen, Little A goes to take backup tableware in warehouse. There are many boxes in warehouse, one box contains only one thing, and each box is marked by the name of things inside it. For example, if "basketball" is written on the box, which means the box contains only basketball. With these marks, Little A wants to find out the tableware easily. So, the problem for you is to help him, find out all the tableware from all boxes in the warehouse.输入There are many test cases. Each case contains one line, and one integer N at the first, N indicates that there are N boxes in the warehouse. Then N strings follow, each string is one name written on the box.输出For each test of the input, output all the name of tableware.样例输入3 basketball fork chopsticks2 bowl letter样例输出fork chopsticksbowl提示The tableware only contains: bowl, knife, fork and chopsticks.题目来源【提交本题】【本题解答状况】【对本题提问】【返回】You are my brother时间限制1000MS (30000MS) 运行内存限制65536KByte总提交:109 测试通过:12描述Little A gets to know a new friend, Little B, recently. One day, they realize that they are family 500 years ago. Now, Little A wants to know whether Little B is his elder, younger or brother.输入There are multiple test cases.For each test case, the first line has a single integer, n (n<=1000). The next n lines have two integers a and b (1<=a,b<=2000) each, indicating b is the father of a. One person has exactly one father, of course. Little A is numbered 1 and Little B is numbered 2.Proceed to the end of file.输出For each test case, if Little B is Little A’s younger, print “Y ou are my younger”. Otherwise, if Little B is Little A’s elder, print “Y ou are my elder”. Otherwise, print “Y ou are my brother”. The output for each test case occupied exactly one line.样例输入51 32 43 54 65 661 32 43 54 65 76 7样例输出You are my elderYou are my brother提示题目来源【提交本题】【本题解答状况】【对本题提问】【返回】Time时间限制1000MS (30000MS) 运行内存限制65536KByte总提交:88 测试通过:14描述Digital clock use 4 digits to express time, each digit is described by 3*3 characters (including”|”,”_”and” “).now given the current time, please tell us how can it be expressed by the digital clock.输入There are several test cases.Each case contains 4 integers in a line, separated by space.Proceed to the end of file.输出For each test case, output the time expressed by the digital clock such as Sample Output.样例输入1 2 5 62 3 4 2样例输出_ _ _| _||_ |_||_ _||_|_ _ __| _||_| _||_ _| ||_提示The digits showed by the digital clock are as follows:_ _ _ _ _ _ _ _| _| _||_||_ |_ ||_||_|| |||_ _| | _||_| ||_| _||_|题目来源辽宁2010省赛【提交本题】【本题解答状况】【对本题提问】【返回】Friends number时间限制1000MS (30000MS) 运行内存限制65536KByte总提交:26 测试通过:2描述Paula and Tai are couple. There are many stories between them. The day Paula left by airplane, Tai send one message to teleph one 2200284, then, everything is changing… (The story in “the snow queen”).After a long time, Tai tells Paula, the number 220 and 284 is a couple of friends number, as they are special, all divisors o f 220’s sum is 284, and all divisors of 284’s sum is 220. Can you find out there are how many couples of friends number less than 10,000. Then, how about 100,000, 200,000 and so on.The task for you is to find out there are how many couples of friends number in given closed interval [a,b]。
蓝桥杯试题
你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。
本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。
输入:
两个正整数,表示每种包装中糖的颗数(都不多于1000)
我们约定:
每个人从盒子中取出的球的数目必须是:1,3,7或者8个。
轮到某一方取球时不能弃权!
A先取球,然后双方交替取球,直到取完。
被迫拿到最后一个球的一方为负方(输方)
请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢?
程序运行时,从标准输入获得数据,其格式如下:
先是一个整数n(n<100),表示接下来有n个整数。然后是n个整数,每个占一行(整数<10000),表示初始球数。
185 152 135 106 123 173 122 136 174 191 145 116 151 143 175 120 161 134 162 190
149 138 142 146 199 126 165 156 153 193 144 166 170 121 171 132 101 194 187 188
程序则输出n行,表示A的输赢情况(输为0,赢为1)。
例如,用户输入:
4
1
2
10
18
则程序应该输出:
0
1
1
0
2、
在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了...
蓝桥杯c语言试题及答案
蓝桥杯c语言试题及答案蓝桥杯C语言试题及答案一、选择题(每题2分,共10分)1. 在C语言中,以下哪个是正确的字符常量?A. 'A'B. "A"C. 123D. 0x41答案:A2. 下面哪个是C语言中的合法变量名?A. 2variableB. variable-nameC. _variableD. variable#name答案:C3. 以下哪个语句可以正确地声明一个整型数组?A. int array[10] = {0, 0, ...};B. int array[] = {0, 1, 2, ...};C. int array = {0, 1, 2, ...};D. int array[10] = {0};答案:D4. C语言中,以下哪个是正确的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello\nWorld"D. "Hello" "World"答案:A5. 以下哪个是C语言中的逻辑运算符?A. &&B. ||C. !D. All of the above答案:D二、填空题(每空2分,共10分)6. 在C语言中,表示逻辑与的运算符是______。
答案:&&7. 一个C语言程序的执行是从______函数开始的。
答案:main8. 在C语言中,用于定义一个结构体的关键字是______。
答案:struct9. 以下代码段的输出结果是______。
```cint a = 5, b = 10;printf("%d", b % a);```答案:010. 当一个C语言程序中包含多个文件时,通常使用______预处理指令来包含头文件。
答案:#include三、简答题(每题5分,共10分)11. 请简述C语言中指针的概念。
C语言的蓝桥杯习题及解析1
输入一个正整数n,输出n!的值。
其中n!=1*2*3*…*n。
算法描述n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。
使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。
将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。
首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。
输入格式输入包含一个正整数n,n<=1000。
输出格式输出n!的准确值。
样例输入10样例输出3628800*/#include<stdio.h>#include<string.h>#define MAX 3000int main(){int a[MAX],i,j,n;int c=0; //进位int s;memset(a,0,sizeof(a));scanf("%d",&n);a[0]=1;for(i=2;i<=n;i++) //乘数{for(j=0;j<MAX;j++){s=a[j]*i+c;a[j]=s%10;c=s/10;}}for(i=MAX-1;i>=0;i--) //从第一个不为零的开始break;for(j=i;j>=0;j--){printf("%d",a[j]);}return 0;}BASIC-29 高精度加法/*问题描述输入两个整数a和b,输出这两个整数的和。
a和b都不超过100位。
算法描述由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。
对于这种问题,一般使用数组来处理。
定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。
同样可以用一个数组B来存储b。
计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。
第五届蓝桥杯C语言高职试题(填空)带答案
第一题标题:武功秘籍小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。
他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。
小明只想练习该书的第81页到第92页的武功,又不想带着整本书。
请问他至少要撕下多少张纸带走?这是个整数,请通过浏览器提交该数字,不要填写任何多余的内容。
第二题标题:等额本金小明从银行贷款3万元。
约定分24个月,以等额本金方式还款。
这种还款方式就是把贷款额度等分到24个月。
每个月除了要还固定的本金外,还要还贷款余额在一个月中产生的利息。
假设月利率是:0.005,即:千分之五。
那么,第一个月,小明要还本金1250, 还要还利息:30000 * 0.005,总计1400.00第二个月,本金仍然要还1250, 但利息为:(30000-1250) * 0.005 总计1393.75请问:小明在第15个月,应该还款多少(本金和利息的总和)?请把答案金额四舍五入后,保留两位小数。
注意:32.5,一定要写为:32.50通过浏览器提交答案,这是一个含有小数点和两位小数的浮点数字。
不要写多余内容(例如:多写了“元”或添加说明文字)第三题标题:猜字母把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。
如此下去,最后只剩下一个字母,请写出该字母。
答案是一个小写字母,请通过浏览器提交答案。
不要填写任何多余的内容。
第四题标题:大衍数列中国古代文献中,曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理。
它的前几项是:0、2、4、8、12、18、24、32、40、50 ...其规律是:对偶数项,是序号平方再除2,奇数项,是序号平方减1再除2。
以下的代码打印出了大衍数列的前100 项。
int main(){int i;for(i=1; i<100; i++){if(__________________) //填空printf("%d ", i*i/2);elseprintf("%d ", (i*i-1)/2);}printf("\n");}请填写划线部分缺失的代码。
c++青少年蓝桥杯 基础选择题
c++青少年蓝桥杯基础选择题C++是一门广泛使用的编程语言,适合青少年参加蓝桥杯比赛。
本文将介绍C++编程语言的基础选择题内容,并且详细解析每个问题。
1. C++语言是C语言的扩展,它最初是由哪位研究者开发的?A. Dennis RitchieB. Bjarne StroustrupC. James GoslingD. Guido van Rossum正确答案:B. Bjarne Stroustrup解析:Bjarne Stroustrup于1983年开发了C++语言,它最初是作为C语言的扩展和面向对象编程的扩充部分。
2.下列哪个数据类型是用来存储整数常量的?A. intB. floatC. charD. bool正确答案:A. int解析:int数据类型用来存储整数常量,它占用4个字节的内存空间。
3. C++中的"<<"运算符是用来做什么的?A.输出流B.输入流C.位运算D.加法运算正确答案:A.输出流解析:"<<"运算符在C++中用来输出数据到标准输出流或其他流中。
4.下列哪个标识符是合法的?A. _nameB. 123nameC. name123D. #name正确答案:A. _name和C. name123解析:标识符是用来给变量、函数、类等命名的。
合法的标识符必须以字母或下划线开头,后面可以是字母、数字或下划线。
5.下列哪种语句可以用来判断一个条件是否成立?A. for循环B. switch语句C. if语句D. while循环正确答案:C. if语句解析:if语句可以用来判断一个条件是否成立,如果条件成立,执行特定的代码块。
6.下列哪个语句可以循环执行一段代码多次?A. if语句B. for循环C. switch语句D. break语句正确答案:B. for循环解析:for循环可以用来循环执行一段代码多次,它通过设置循环条件和控制循环变量来实现循环。
蓝桥杯第六届C语言真题汇总完整版
蓝桥杯第六届C语言真题汇总完整版蓝桥杯第六届C语言真题汇总HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】1、奖券数目有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。
某抽奖活动的奖券号码是5位数(),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
请提交该数字(一个整数),不要写任何多余的内容或说明性文字。
2、星系炸弹在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为yyyy-mm-dd 即4位年份2位月份2位日期。
比如:2015-02-19 请严格按照格式书写。
不能出现其它文字或符号。
if(year%4==0||(year%100==0&&year%400!=0)) 3、三羊献瑞观察下面的加法算式:祥瑞生辉+ 三羊献瑞-------------------三羊生瑞气(如果有对齐问题,可以参看【图】)其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
4、格子中输出StringInGrid函数会在一个指定大小的格子中打印指定的字符串。
要求字符串在水平、垂直两个方向上都居中。
如果字符串太长,就截断。
如果不能恰好居中,可以稍稍偏左或者偏上一点。
下面的程序实现这个逻辑,请填写划线部分缺少的代码。
#include <>#include <>void StringInGrid(int width, int height, const char* s){int i,k;char buf[1000];strcpy(buf, s);if(strlen(s)>width-2) buf[width-2]=0;printf("+");for(i=0;i<="">printf("+\n");for(k=1; k<(height-1)/2;k++){printf("|");for(i=0;iprintf("|\n");}printf("|");printf("%*s%s%*s",_____________________________________________); .9 这九个数字组成一个分数,其值恰好为1/3,如何组法?下面的程序实现了该功能,请填写划线部分缺失的代码。
第八届蓝桥杯c组试题及答案
第八届蓝桥杯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 以上程序正确实现了题目要求的功能。
蓝桥杯—K倍区间问题(C语言解法)
蓝桥杯—K倍区间问题(C语⾔解法)题⽬描述给定⼀个长度为N的数列,A1, A2, … AN,如果其中⼀段连续的⼦序列 Ai, Ai+1, … Aj(i <=j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。
你能求出数列中总共有多少个K倍区间吗?输⼊描述第⼀⾏包含两个整数 N 和 K(1<=N,K<=10^5)。
以下 N ⾏每⾏包含⼀个整数Ai(1<=Ai<=10^5)输出描述输出⼀个整数,代表 K 倍区间的数⽬。
输⼊输出样例输⼊5 212345输出6代码与思路嵌套循环不可⾏,可能是超时借鉴了很多⽅法,⼤致有了思路要求出给定数据的K倍区间,要先求sum[i,j],使sum[i,j]mod k=0,因为sum[i,j]=sum[j]-sum[i-1],使sum[i,j]%k=0,即(sum[j]-sum[i-1])%k=0即使sum[j]%k=sum[i-1]%k,从上述分析可以得知,如果两组数mod k后的值相同,则全部数据去掉这两组数据后,剩余的数据之和为k的倍数,因为这两组数据为连续的,所以去掉这两组数据后的数据也是连续的。
要求累计和的k倍区间,也就是求对k取模后数值相同的数组数量,从若⼲个对k取模后值相同的数组中任选两组,所有余数的组合⽅式的数量即为结果。
所以⾸先要统计各累计和对k取模后余数的值及数量,然后对其进⾏排列组合,选出两组即可。
C(n,m)=n!/(n-m)!m!,通过整理得到C(n,2)=(n(n-1))/2(!!注意总结,求C(n,3)=(n(n-1)(n-2))/3 )注意取模为0时,可以单取1个,也可以取两个,所以模为零时要加1,即设置模为0时初始值为1int main(){long int tnum,k,i,num,pnum=0;//tnum记录数据总数,num记录输⼊的数据,pnum K倍区间的个数long long sum[100001]={0};//记录输⼊数据的累计和long long _modk[100001];//累计和除以k的余数,即mod klong long _modnum[100001]={0};//记录余数相同的个数_modnum[0]=1;scanf("%d %d",&tnum,&k);//tnum==total numberfor(i=1;i<=tnum;i++){scanf("%d",&num);//读⼊数据并存⼊相应数组中sum[i]=sum[i-1]+num;_modk[i-1]=sum[i]%k;}for(i=0;i<tnum;i++){_modnum[_modk[i]]++;}for(i=0;i<k;i++){if(_modnum[i]){pnum+=((_modnum[i]*(_modnum[i]-1))/2);//从余数相同的若⼲组选出两组的组合数,即C(n,2)的计算}}printf("%lld",pnum);return 0;}稍微改了下代码,可能更好理解#include<stdio.h>int sum[100000];int modk[100000];int count[100000];int main(){int n,k,num;int i,res=0;count[0]=1;scanf("%d %d",&n,&k);for(i=1;i<=n;i++){scanf("%d",&num);sum[i]=sum[i-1]+num;modk[i]=sum[i]%k;count[modk[i]]++;}for(i=1;i<k;i++){if(count[i])res+=(count[i]*(count[i]-1))/2;}res+=count[0];printf("%d",res);return 0;}。
第三届蓝桥杯——蓝桥杯c语言本科组(带答案)
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把ABCDE所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!
3.
有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复......直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。
#include <cstdio>
int main()
{
long int X=10, Y=90;
for(int k=1; k<=120; k++)//半分钟一个单位
{
if(k%2==1) Y -= X;//因为X出生半分钟后就要吃Y,尔后没1分钟要吃Y,所以永远都是奇数个半分钟的时候吃Y,又因为此时X不会增长(题目为了减小讨论的复杂度),所以直接减X数量即可。
14 10 6 2
15 11 7 3
16 12 8 4
下面的代码实现的功能就是要把一个方阵顺时针旋转。
void rotate(int* x, int rank)
{
int* y = (int*)malloc(___________________); //填空
for(int i=0; i<rank * rank; i++)
{
GoNext(x,r,c);
return;
}
int rr = GetRowStoneNum(x,r);
int cc = GetColStoneNum(x,c);
if(cc>=3) //本列已满
蓝桥杯试题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四名盗窃嫌疑犯,其中只有一人是小偷。
蓝桥杯c试题及答案
蓝桥杯c试题及答案蓝桥杯是中国最具影响力的计算机科学大赛之一,旨在发掘和培养计算机科学和信息技术领域的优秀人才。
每年,数以万计的学生参加这个激烈的竞赛,争夺奖金和荣誉。
在这里,我将向大家介绍几道经典的蓝桥杯C试题及其答案,希望能对大家有所帮助。
试题一:编写一个C程序,求解两个整数的最大公约数。
```c#include <stdio.h>int gcd(int a, int b){if(b == 0)return a;elsereturn gcd(b, a%b);}int main(){int a, b;printf("请输入两个整数:");scanf("%d %d", &a, &b);printf("最大公约数为:%d", gcd(a, b));return 0;}```试题二:编写一个C程序,判断一个给定的整数是否为素数。
```c#include <stdio.h>#include <math.h>int isPrime(int n){int i;if(n <= 1)return 0;for(i=2; i<=sqrt(n); i++){if(n % i == 0)return 0;}return 1;}int main(){int n;printf("请输入一个整数:");scanf("%d", &n);if(isPrime(n))printf("%d是素数", n);elseprintf("%d不是素数", n);return 0;}```试题三:编写一个C程序,实现二分查找算法。
```c#include <stdio.h>int binarySearch(int arr[], int left, int right, int target){ if(left <= right){int mid = left + (right - left) / 2;if(arr[mid] == target)return mid;if(arr[mid] < target)return binarySearch(arr, mid+1, right, target);return binarySearch(arr, left, mid-1, target);}return -1;}int main(){int arr[] = {2, 4, 6, 8, 10, 12};int target = 6;int n = sizeof(arr)/sizeof(arr[0]);int result = binarySearch(arr, 0, n-1, target);if(result == -1)printf("未找到%d", target);elseprintf("找到%d,索引为%d", target, result);return 0;}```以上是三道经典的蓝桥杯C试题及其解答。
蓝桥杯小明跳格子c语言求复杂度分析
蓝桥杯小明跳格子c语言求复杂度分析蓝桥杯小明跳格子 c 语言求复杂度分析,由于时间问题我们没有给出程序的源代码。
希望大家能够按照题目要求完成本文,谢谢大家!蓝桥杯比赛日期:2017年11月13日开始。
答案:0.02秒解题思路:1.首先我们使用数组来存储棋盘上的每一个格子的坐标值;2.然后按照格子的排列顺序遍历数组,输入格子对应的值;3.然后使用异或运算符,把格子中两个不同的坐标值交换位置,得到相加之和,然后减去交换前的结果;4.最后将结果赋值给变量 a,并且输出 a 的值即可。
小明所在队伍先以10:0领先了,但是随着比赛进行,他发现自己这边越下越慢,而对方那边却越下越快,很显然对手已经超过了他们。
为此,小明决定采取新战术——“跳格子”。
他让其余四名选手站好位置,轮流走动,只留下小明一人负责计时。
第二局比赛开始,小明便迅速地跑向对面的空白处,拿起黑色棋子放回原位,如此反复。
当小明再次返回时,棋子又被移动至另外一块空白区域。
就这样,小明通过重复执行上述步骤,逐渐拉近与对手的距离。
最终,小明率先赢得了胜利。
可是,当小明准备收拾东西离场时,却惊讶地发现对手竟还未走完全部的格子。
难道说……看来小明需要做更多的工作才能确保万无一失啊!那么接下来该怎么办呢?正巧,小明想起曾听老师讲过,在数学里面有一种叫做“复杂度”的概念,它指的是某项任务的规模、复杂性及耗费的资源等因素综合考虑的情况下,产生的一个最优解。
根据这些信息,小明推测,对手肯定也遇到了类似的困境,从而导致了整体效率降低。
既然如此,何不借助复杂度理论来帮忙找寻破局之法呢?小明马上查阅了相关资料,发现复杂度的概念十分广泛,涵盖了许多知识点,包括计算机科学、统计学、几何学、物理学甚至心理学等诸多领域。
于是,小明决定尝试着用复杂度理论来解释眼前的状况。
第五届蓝桥杯C语言高职试题(填空)带答案
第一题标题:武功秘籍小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。
他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。
小明只想练习该书的第81页到第92页的武功,又不想带着整本书。
请问他至少要撕下多少张纸带走?这是个整数,请通过浏览器提交该数字,不要填写任何多余的内容。
第二题标题:等额本金小明从银行贷款3万元。
约定分24个月,以等额本金方式还款。
这种还款方式就是把贷款额度等分到24个月。
每个月除了要还固定的本金外,还要还贷款余额在一个月中产生的利息。
假设月利率是:0.005,即:千分之五。
那么,第一个月,小明要还本金1250, 还要还利息:30000 * 0.005,总计1400.00第二个月,本金仍然要还1250, 但利息为:(30000-1250) * 0.005 总计1393.75请问:小明在第15个月,应该还款多少(本金和利息的总和)?请把答案金额四舍五入后,保留两位小数。
注意:32.5,一定要写为:32.50通过浏览器提交答案,这是一个含有小数点和两位小数的浮点数字。
不要写多余内容(例如:多写了“元”或添加说明文字)第三题标题:猜字母把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。
如此下去,最后只剩下一个字母,请写出该字母。
答案是一个小写字母,请通过浏览器提交答案。
不要填写任何多余的内容。
第四题标题:大衍数列中国古代文献中,曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理。
它的前几项是:0、2、4、8、12、18、24、32、40、50 ...其规律是:对偶数项,是序号平方再除2,奇数项,是序号平方减1再除2。
以下的代码打印出了大衍数列的前100 项。
int main(){int i;for(i=1; i<100; i++){if(__________________) //填空printf("%d ", i*i/2);elseprintf("%d ", (i*i-1)/2);}printf("\n");}请填写划线部分缺失的代码。
2023年蓝桥杯语言高职真题附加答案
模拟c语言高职注意:本套模拟题重要模拟命题形式与考核范围。
真实竞赛题旳数量、难度也许与此套模拟题有差异。
阐明:本试卷包括两种题型: “代码填空”与“程序设计”。
填空题规定参赛选手在弄清给定代码工作原理旳基础上填写缺失旳部分, 使得程序逻辑对旳、完整。
所填写旳代码不多于一条语句(即不能出现分号)。
编程题规定选手设计旳程序对于给定旳输入能给出对旳旳输出成果。
注意:在评卷时使用旳输入数据与试卷中给出旳实例数据也许是不一样旳。
选手旳程序必须是通用旳, 不能只对试卷中给定旳数据有效。
1.代码填空(满2分)形如: “abccba”, “abcba”旳串称为回文串, 下列代码判断一种串与否为回文串。
请补充空白旳部分。
char buf[] = "abcde11edcba";int x = 1;for(int i=0; i<strlen(buf)/2; i++)if(__buf[i]!=buf[strlen(buf)-1-i]_________________){x = 0;break;}printf("%s\n", x ? "是":"否");2.代码填空(满分3分)下列代码把一种二进制旳串转换为整数。
请填写缺乏旳语句;char* p = "0";int n = 0;for(int i=0;i<strlen(p); i++){n = ___n+(p[i]-48)*pow(2,strlen(p)-1-i)_______________;}printf("%d\n", n);3.代码填空(满分3分)假设a,b,c是3个互不相等旳整数。
下列代码取出它们中居中旳数值, 记录在m中。
其中旳swap()函数可以互换两个变量旳值。
请完善代码。
if(a>b) swap(&a, &b);if(b>c) swap(&b, &c);__if(a>b) swap(&a,&b)____________________;int m = b;4.代码填空(满分6分)下面函数旳目旳是求出某个日期是该年度旳第几天。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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说:“C是小偷”;C说:“小偷肯定是D”;D说:“C在冤枉好人”。
现在已经知道这四人中有三人说的是真话,一人说的是假话。
请问到底谁是小偷?提示:设4个变量a,b,c,d,为0时表示不是小偷,为1时表示是小偷,用四重循环穷举a,b,c,d可能的取值的组合,对每一种组合判断其是否符合题目中给出的约束。
最后结论:C是小偷。
#include<stdio.h>int main(){int a,b,c,d;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--){if((a==0)+(c==1)+(d==1)+(d==0)==3&&a+b+c+d==1)/*4人的说法中有3个真的,且只有一个小偷*/printf("%d %d %d %d",a,d,c,d);}return 0;}4、有限五位数个位数为6且能被3整除的五位数有多少个?#include<stdio.h>int main(){long int i;int sum=0;for(i=1000;i<=9999;i++){if((i*10+6)%3==0){sum++;}}printf("%d",sum);return 0;}5、标题:错误票据某涉密单位下发了某种票据,并要在年终全部收回。
每张票据有唯一的ID号。
全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。
因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。
你的任务是通过编程,找出断号的ID和重号的ID。
假设断号不可能发生在最大和最小号。
要求程序首先输入一个整数N(N<100)表示后面数据行数。
接着读入N行数据。
每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000)每个整数代表一个ID号。
要求程序输出1行,含两个整数m n,用空格分隔。
其中,m表示断号ID,n表示重号ID例如:用户输入: 25 68 11 9 10 12 9则程序输出: 7 9再例如:用户输入: 6164178 108 109 180 155 141 159 104 182 179 118 137 184 115 124 125 129 168 196 172189 127 107 112 192 103 131 133 169 158128102 110 148 139 157 140 195 197185152 135 106 123 173 122 136 174 191 145 116 151 143 175 120 161 134 162 190 149138 142 146 199 126 165 156 153 193 144 166 170 121 171 132 101194 187 188 113 130 176 154 177 120 117 150 114 183 186 181 100 163 160167 147 198 111 119则程序输出: 105 120资源约定:峰值内存消耗 < 64MCPU消耗 < 1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中#include <xxx>,不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。
#include <stdio.h>int a[100001];int main(){int n,t;scanf("%d", &n);int min = 100001;int max = 0;int i;for(i = 0; i <= n; ){t = getchar();if(t >= '0' && t <= '9'){ /*注意是字符! */ungetc(t, stdin);/*ungetc是一个函数功能,把一个字符退回到输入流中用法:int ungetc(char c, FILE *stream);输入参数 c要写入的字符,stream 文件流指针输出参数字符c 操作成功,EOF 操作失败 */scanf("%d", &t);a[t]++; /*在读入时保存下id号的最大值与最小值,这样可以为后面判断那个id遗漏(即a[id]==0)哪个id重复(即a[id]==2)提供一个范围控制。
*/if(t < min){min = t;}if(t > max){max = t;}}else if(t == '\n'){i++;}}for(i = min; i < max + 1; i++){if(a[i] == 0){printf("%d ", i);}if(a[i] == 2)printf("%d\n", i);}}return 0;}6、标题: 马虎的算式小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
有一次,老师出的题目是:36 x 495 =他却给抄成了:396 x 45 =但结果却很戏剧性,他的答案竟然是对的!!因为 36 * 495 = 396 * 45 = 1782类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。
满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。
答案直接通过浏览器提交。
注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。
#include<stdio.h>int main(){int n,m,i=0;for(int a=1;a<10;a++){for(int b=1;b<10;b++){for(int c=1;c<10;c++){for(int d=1;d<10;d++){for(int e=1;e<10;e++){n=(a*10+b)*(c*100+d*10+e);m=(a*100+d*10+b)*(c*10+e);if(n==m&&a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d! =e)i++;}}}}printf("%d",i);return 0;}7、标题:切面条一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?答案是个整数,请通过浏览器提交答案。
不要填写任何多余的内容。
/*切面条*/#include<stdio.h>main(){int i,num=2;printf("n次条数\n");for(i=1;i<=10;i++){num=num*2-1;printf("%2d%8d\n",i,num);}getch();return 0;}8、标题:奇怪的分式上小学的时候,小明经常自己发明新算法。