蓝桥杯2015第六届C语言真题汇总
- 格式:doc
- 大小:587.50 KB
- 文档页数:20
蓝桥杯试题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程序设计竞赛试题试题一素数问题走进世博园某信息通信馆,参观者将获得前所未有的尖端互动体验,一场充满创想和喜悦的信息通信互动体验秀将以全新形式呈现,从观众踏入展馆的第一步起,就将与手持终端密不可分,人类未来梦想的惊喜从参观者的掌上展开。
在等候区的梦想花园中,参观者便开始了他们奇妙的体验之旅,等待中的游客可利用手机等终端参加互动小游戏,与梦想剧场内的虚拟人物Kr Kong进行猜数比赛。
当屏幕出现一个整数x时,若你能比Kr Kong更快的发出最接近它的素数答案,你将会获得一个意想不到的礼物。
例如:当屏幕出现22时,你的回答应该是23;当屏幕出现8时,你的回答应是7;若x本身是素数,则回答x;若接近x的素数有两个时,则回答大于它的素数。
标准输入第一行:N 要竞猜的整数个数接下来有N行,每行只有一个正整数x标准输出输出有N行,每行是对应x的最接近它的素数。
约束条件1<=N<=5 1<=x<=1000样例输入382325样例输出72323#include<stdio.h>#include<math.h>void main(){int prime(int m);int N,i,a[5];int compare1,compare2;while(N<1||N>5){scanf("%d",&N);if(N<1||N>5)printf("输入有误请重新输入:\n"); }for(i=0;i<N;i++){scanf("%d",&a[i]);}printf("\n");for(i=0;i<N;i++){if(prime(a[i]))printf("%d\n",a[i]);else{compare1=a[i];compare2=a[i];while(1){compare1=compare1+1;if(prime(compare1))break;}while(1){compare2=compare2-1;if(prime(compare2))break;}if(compare1-a[i]<a[i]-compare2)printf("%d\n",compare1);else if(compare1-a[i]>a[i]-compare2)printf("%d\n",compare2);else if(compare1-a[i]==a[i]-compare2)printf("%d\n",compare1);elseprintf("error!\n");}}printf("\n");}int prime(int m){int i,n;if(m==1)return 0;n=sqrt(m);for(i=2;i<=n;i++)if(m%i==0){return 0;}return 1;}试题二救灾投放物质问题灾区已经非常困难,灾民需要帐篷、衣物、食品和血浆。
2015蓝桥杯c语言试题及答案2015蓝桥杯C语言试题及答案1. 以下哪个选项是C语言中合法的标识符?A. 2variableB. variable2C. intD. _int答案:B,D2. C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A3. 以下哪个选项不是C语言中的控制语句?A. ifB. whileC. switchD. case答案:D4. 在C语言中,以下哪个函数用于计算字符串的长度?A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A5. 下列关于C语言中数组的描述,错误的是:A. 数组可以存储相同类型的多个元素B. 数组的大小在编译时确定C. 数组的索引从0开始D. 数组的索引可以是负数答案:D6. C语言中,以下哪个选项表示逻辑与运算?A. &&B. ||C. !D. ^答案:A7. 在C语言中,以下哪个函数用于将一个字符串复制到另一个字符串?A. strcat()B. strcpy()C. strcmp()D. strlen()答案:B8. C语言中,以下哪个关键字用于定义一个函数?A. intB. voidC. functionD. return答案:B9. 在C语言中,以下哪个选项表示全局变量?A. staticB. externC. autoD. register答案:B10. 在C语言中,以下哪个选项用于定义一个指针?A. int *p;B. int p[];C. int p[10];D. int p=10;答案:A11. 在C语言中,以下哪个选项表示无符号整型?A. intB. unsigned intC. longD. float答案:B12. 在C语言中,以下哪个函数用于将一个浮点数转换为字符串?A. sprintf()B. sscanf()C. strcat()D. strcmp()答案:A13. 在C语言中,以下哪个选项表示一个函数的返回类型为无返回值?A. intB. voidC. charD. float答案:B14. 在C语言中,以下哪个选项表示一个函数的返回类型为字符型?A. intB. voidC. charD. float答案:C15. 在C语言中,以下哪个关键字用于定义一个宏?A. defineB. macroC. constantD. include答案:A。
题目:2015年蓝桥杯javac组第二题内容要点:1. 题目描述:给定一个字符串,要求在字符串中找出最长的连续不重复子串,并返回它的长度。
2. 输入:一个字符串,长度不超过xxx。
3. 输出:一个整数,表示最长的连续不重复子串的长度。
4. 例子:输入 "abcabcbb",输出 3;输入 "bbbbb",输出 1;输入"pwwkew",输出 3。
5. 解题思路:采用滑动窗口的方法,遍历字符串的过程中,维护一个窗口,通过移动窗口的起始位置和结束位置来寻找最长的连续不重复子串。
6. 算法步骤:6.1 初始化最长长度maxLength为0,起始位置start为0,字符索引字典charIndexDict为空。
6.2 遍历字符串,对于每个字符:6.2.1 如果字符在字典中存在且索引大于等于start,则将start移动到当前字符索引的下一个位置。
6.2.2 计算最长长度maxLength和当前窗口长度的较大值。
6.2.3 将当前字符的索引存入字典中。
7. 代码实现:```javapublic class Solution {public int lengthOfLongestSubstring(String s) {int maxLength = 0;int start = 0;Map<Character, Integer> charIndexMap = new HashMap<>();for (int end = 0; end < s.length(); end++) {char c = s.charAt(end);if (charIndexMap.cont本人nsKey(c) charIndexMap.get(c) >= start) {start = charIndexMap.get(c) + 1;}maxLength = Math.max(maxLength, end - start + 1); charIndexMap.put(c, end);}return maxLength;}}```文章结构:1. 概述:介绍2015年蓝桥杯javac组第二题的题目描述。
常用算法题目1.算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。
如:给定A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。
public class AllPermutation{public static void main(String[] args){//使用递归完成全排列char[] source=new char[]{'A','B','C'};char[] result=new char[source.length];allPermutation(0,source,result);}/**** @param index当前考虑的数的下标(从0开始)* @param source* @param result*/public static void allPermutation(int index,char[] source,char[] result){//当源数据中只有一个字符时,将该字符加入结果数组,并输出if(source.length==1){result[index]=source[0];show(result);return ;}for(int i=0;i<result.length-index;i++){result[index]=source[i];char[] newSource=getNewSource(source,source[i]);allPermutation(index+1, newSource,result);}}public static void show(char[] result){System.out.println(result);}/*** 生成去掉指定字符的新源数据数组* @param source 原来的源数据数组* @param c 指定去掉的字符* @return*/public static char[] getNewSource(char[] source,char c){ char[] newSource=new char[source.length-1];for(int i=0,j=0;i<source.length;i++){if(source[i]!=c){newSource[j]=source[i];j++;}}return newSource;}}2.串的简单处理串的处理在实际的开发工作中,对字符串的处理是最常见的编程任务。
2014年蓝桥杯c语言试题及答案发布时间:2015-04-091. 标题: 马虎的算式小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
有一次,老师出的题目是:36 x 495 = ?他却给抄成了:396 x 45 = ?但结果却很戏剧性,他的答案竟然是对的!!因为 36 * 495 = 396 * 45 = 17820类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。
满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。
答案直接通过浏览器提交。
注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。
答案:1422. 标题: 振兴中华小明参加了学校的趣味运动会,其中的一个项目是:跳格子。
地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg) 从我做起振我做起振兴做起振兴中起振兴中华比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。
一直要跳到“华”字结束。
要求跳过的路线刚好构成“从我做起振兴中华”这句话。
请你帮助小明算一算他一共有多少种可能的跳跃路线呢?答案是一个整数,请通过浏览器直接提交该数字。
答案:353. 题目标题: 猜年龄美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。
他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。
于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。
我年龄的4次方是个6位数。
这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。
”请你推算一下,他当时到底有多年轻。
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四名盗窃嫌疑犯,其中只有一人是小偷。
蓝桥杯刷题--第六届蓝桥杯题头:本内容所有题⾯都来⾃博客:https:///ryo_218/article/details/79704030在此感谢!1,奖券数⽬有些⼈很迷信数字,⽐如带“4”的数字,认为和“死”谐⾳,就觉得不吉利。
虽然这些说法纯属⽆稽之谈,但有时还要迎合⼤众的需求。
某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算⼀下,如果任何两张奖券不重号,最多可发出奖券多少张。
思路:5重循环,搞定。
#include <iostream>#include <cstdio>using namespace std;int main(){int ans = 0;for(int a = 1; a <= 9; ++a)for(int b = 0; b <= 9; ++b)for(int c = 0; c <= 9; ++c)for(int d = 0; d <= 9; ++d)for(int e = 0; e <= 9; ++e){if(a != 4 && b != 4 && c != 4 && d != 4 && e != 4){ans++;}}printf("%d\n", ans);}View Code2、星系炸弹在X星系的⼴袤空间中漂浮着许多X星⼈造“炸弹”,⽤来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
⽐如:阿尔法炸弹2015年1⽉1⽇放置,定时为15天,则它在2015年1⽉16⽇爆炸。
有⼀个贝塔炸弹,2014年11⽉9⽇放置,定时为1000天,请你计算它爆炸的准确⽇期。
请填写该⽇期,格式为 yyyy-mm-dd 即4位年份2位⽉份2位⽇期。
⽐如:2015-02-19请严格按照格式书写。
不能出现其它⽂字或符号。
2015年全国大学生英语竞赛初赛C级真题Part I Listening (30 marks)1。
What does the conversation imply?A. Great minds think alike。
B. You are what you wear。
C。
A contented mind is a perpetual feast.D。
Actions speak louder than words.2。
How does the man identify a disease gene?A. He uses a special instrument.B。
He analyses the gene carefully。
C. He bases his finding on his previous research.D. He sends the results of his analysis to biologists for confirmation。
3. Why is the man planning to fly to Singapore?A. The weather there is quite nice for a holiday。
B. He wants to watch a basketball match to be held there。
C. NBA tickets there are much cheaper than those in New York。
D。
Air tickets from the USA to Singapore are cheap now。
4。
What is the ma’s opinion of seeing movies in a theatre?A. He doesn't like the big screen in the theatre。
1、奖券数目有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。
某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“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、三羊献瑞观察下面的加法算式:祥瑞生辉+ 三羊献瑞-------------------三羊生瑞气(如果有对齐问题,可以参看【图1.jpg】)其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
4、格子中输出StringInGrid函数会在一个指定大小的格子中打印指定的字符串。
要求字符串在水平、垂直两个方向上都居中。
如果字符串太长,就截断。
如果不能恰好居中,可以稍稍偏左或者偏上一点。
下面的程序实现这个逻辑,请填写划线部分缺少的代码。
#include <stdio.h>#include <string.h>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<width-2;i++) printf("-");printf("+\n");for(k=1; k<(height-1)/2;k++){printf("|");for(i=0;i<width-2;i++) printf(" ");printf("|\n");}printf("|");printf("%*s%s%*s",___________________ __________________________); //填空printf("|\n");for(k=(height-1)/2+1; k<height-1; k++){printf("|");for(i=0;i<width-2;i++) printf(" ");printf("|\n");}printf("+");for(i=0;i<width-2;i++) printf("-");printf("+\n");}int main(){StringInGrid(20,6,"abcd1234");return 0;}对于题目中数据,应该输出:+------------------+| || abcd1234 || || |+------------------+(如果出现对齐问题,参看【图1.jpg】)注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。
5、九数组分数1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?下面的程序实现了该功能,请填写划线部分缺失的代码。
#include <stdio.h>void test(int x[]){int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];int b = x[4]*10000 + x[5]*1000 + x[6]*100+ x[7]*10 + x[8];if(a*3==b) printf("%d / %d\n", a, b);}void f(int x[], int k){int i,t;if(k>=9){test(x);return;}for(i=k; i<9; i++){{t=x[k]; x[k]=x[i]; x[i]=t;}f(x,k+1);___________________________________ __________ // 填空处}}int main(){int x[] = {1,2,3,4,5,6,7,8,9};f(x,0);return 0;}注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。
6、加法变乘法我们都知道:1+2+3+ ... + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015比如:1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
注意:需要你提交的是一个整数,不要填写任何多余的内容。
7、牌型种数小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?请填写该整数,不要填写任何多余的内容或说明文字。
8、移动距离X星球居民小区的楼房全是一样的,并且按矩阵样式排列。
其楼房的编号为1,2,3...当排满一行时,从下一行相邻的楼往反方向排号。
比如:当小区排号宽度为6时,开始情形如下:1 2 3 4 5 612 11 10 9 8 713 14 15 .....我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)输入为3个整数w m n,空格分开,都在1到10000范围内w为排号宽度,m,n为待计算的楼号。
要求输出一个整数,表示m n 两楼间最短移动距离。
例如:用户输入:6 8 2则,程序应该输出:4再例如:用户输入:4 7 20则,程序应该输出:5资源约定:峰值内存消耗< 256MCPU消耗< 1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中#include <xxx>,不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。
9、垒骰子赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体。
经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥!我们先来规范一下骰子:1 的对面是4,2 的对面是5,3 的对面是6。
假设有m 组互斥现象,每组中的那两个数字的面紧贴在一起,骰子就不能稳定的垒起来。
atm想计算一下有多少种不同的可能的垒骰子方式。
两种垒骰子方式相同,当且仅当这两种方式中对应高度的骰子的对应数字的朝向都相同。
由于方案数可能过多,请输出模10^9 + 7 的结果。
不要小看了atm 的骰子数量哦~「输入格式」第一行两个整数n mn表示骰子数目接下来m 行,每行两个整数 a b ,表示 a 和 b 数字不能紧贴在一起。
「输出格式」一行一个数,表示答案模10^9 + 7 的结果。
「样例输入」2 11 2「样例输出」544「数据范围」对于30% 的数据:n <= 5对于60% 的数据:n <= 100对于100% 的数据:0 < n <= 10^9, m <= 36 资源约定:峰值内存消耗< 256MCPU消耗< 2000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中#include <xxx>,不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。