第三届蓝桥杯预赛真题
第三届全国软件大赛决赛C本科真题与答案详析
第三届“蓝桥杯”全国软件专业人才设计与创业大赛全国总决赛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”中即可。
第三届蓝桥杯(高职java预赛题及参考答案)
1、造成高房价的原因有许多,比如土地出让价格。
既然地价高,土地的面积必须仔细计算。
遗憾的是,有些地块的形状不规则,比如是如图【1.jpg】中所示的五边形。
一般需要把它划分为多个三角形来计算。
已知三边求三角形的面积需要用海伦定理,参见【2.jpg】各条边长数据如下:AB = 52.1BC = 57.2CD = 43.5DE = 51.9EA = 33.4EB = 68.2EC = 71.9根据这些数据求五边形地块的面积。
四舍五入到小数后两位。
只写结果,不要源代码!1.jpg2.jpgpublic class Onea {public static void main(String args[]){double s_ABE = (52.1 + 68.2 + 33.4) / 2;double s_BEC = (68.2 + 57.2 + 71.9) / 2;double s_EDC = (71.9 + 51.9 + 43.5) / 2;// sqrt()是Math中的静态方法可以用类名直接调用double A_ABE = Math.sqrt(s_ABE * (s_ABE - 52.1) * (s_ABE - 33.4) * (s_ABE - 68.2));double A_BEC = Math.sqrt(s_BEC * (s_BEC - 68.2) * (s_BEC - 57.2) * (s_BEC - 71.9));double A_EDC = Math.sqrt(s_EDC * (s_EDC - 71.9) * (s_EDC - 43.5) * (s_EDC - 51.9));System.out.println(A_ABE + A_BEC + A_EDC);}}// 输出的结果是3789.8640994485186public class One {public static void main(String[] args) {double AB = 52.1, BC = 57.2, CD = 43.5, DE = 51.9, EA = 33.4, EB = 68.2, EC = 71.9;System.out.println(mainji(AB,EB,EA) + mainji(EB,BC,EC) +mainji(EC,CD,DE));}static double mainji(double a,double b,double c){double s = (a + b + c)/2;return Math.sqrt(s * (s - a) * (s - b) * (s - c));}}输出结果:3789.86409944851862、今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。
蓝桥杯试题
你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是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、
在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了...
第三届蓝桥桥杯预赛真题及详细答案
第三届蓝桥桥杯预赛真题及详细答案一、微生物增殖假设有两种微生物X 和Y X 出生后每隔 3 分钟分裂一次(数目加倍)Y 出生后每隔 2 分钟分裂一次,(数目加倍)。
一个新出生的X,半分钟之后吃掉 1 个Y,并且,从此开始,每隔 1 分钟吃 1 个Y。
现在已知有新出生的X=10, Y=89,求60 分钟后Y 的数目。
如果X=10,Y=90 呢?本题的要求就是写出这两种初始条件下,60 分钟后Y 的数目。
题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只Y 就是最终导致Y 种群灭绝的最后一根稻草!请忍住悲伤,把答案写在“解答.txt”中,不要写在这里!答案:0 和94371840 (此题比较简单就不写程序了,以下均有程序)二、古堡算式福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE * ? = EDCBA 他对华生说:“ABCDE 应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把ABCDE 所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!参考答案:21978 参考程序:#include<stdio.h>void main(){ int k,t1,t;for(k=10234;k<50000;k++){ bool flag[10]={0}; t=k; t1=0;while(t){ if(flag[t%10]) break ; flag[t%10] =true ; t1 = t1*10 + t%10 ; t /= 10 ; } if( t==0 && t1%k==0){ printf("%d * %d = %d\n",k,t1/k,t1); } }}三、比酒量有一群海盗(不多于20 人),在船上比拼酒量。
蓝桥杯辽宁省a组c语言试题及答案
蓝桥杯辽宁省a组c语言试题及答案蓝桥杯辽宁省A组C语言试题及答案1. 题目一:字符串反转编写一个C语言程序,实现将输入的字符串反转输出。
```c#include <stdio.h>#include <string.h>int main() {char str[100];scanf("%s", str);int len = strlen(str);for (int i = len - 1; i >= 0; i--) {printf("%c", str[i]);}return 0;}```2. 题目二:计算阶乘编写一个C语言程序,计算并输出一个正整数的阶乘。
```c#include <stdio.h>long long factorial(int n) {if (n == 0)return 1;return n * factorial(n - 1);}int main() {int num;scanf("%d", &num);printf("%lld", factorial(num));return 0;}```3. 题目三:寻找最大值编写一个C语言程序,输入三个整数,输出其中的最大值。
```c#include <stdio.h>int main() {int a, b, c;scanf("%d %d %d", &a, &b, &c);int max = a;if (b > max) max = b;if (c > max) max = c;printf("%d", max);return 0;}```4. 题目四:判断闰年编写一个C语言程序,判断输入的年份是否为闰年。
```c#include <stdio.h>int main() {int year;scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) printf("Leap Year");elseprintf("Not a Leap Year");return 0;}```5. 题目五:数组排序编写一个C语言程序,对输入的五个整数进行排序并输出。
蓝桥杯训练试题及答案
蓝桥杯训练试题及答案1. 单项选择题请从以下选项中选择最符合题意的答案。
(1) 以下哪个选项是Python语言的解释器?A. JavaB. Node.jsC. PythonD. Ruby答案:C(2) 在HTML中,用于定义最重要的标题的标签是什么?A. <h1>B. <h6>C. <p>D. <div>答案:A2. 多项选择题请从以下选项中选择所有符合题意的答案。
(1) 以下哪些是数据结构中的基本概念?A. 栈B. 队列C. 树D. 循环答案:A, B, C(2) 在JavaScript中,哪些关键字用于声明变量?A. varB. letC. constD. function答案:A, B, C3. 判断题请判断以下陈述是否正确。
(1) 在C语言中,数组的索引从1开始。
答案:错误(2) 在数据库中,主键用于唯一标识表中的每条记录。
答案:正确4. 填空题请根据题目要求填写适当的内容。
(1) 在Python中,用于定义函数的关键字是____。
答案:def(2) 在HTML中,用于插入图片的标签是____。
答案:<img>5. 简答题请简要回答以下问题。
(1) 什么是算法的时间复杂度?答案:算法的时间复杂度是指算法执行时间随输入规模增长的变化趋势,通常用大O表示法来描述。
(2) 请简述面向对象编程的三大特性。
答案:面向对象编程的三大特性包括封装性、继承性和多态性。
6. 编程题请编写一个函数,实现将输入的字符串反转。
(1) 编程语言:Python答案:```pythondef reverse_string(s):return s[::-1]```(2) 编程语言:JavaScript答案:```javascriptfunction reverseString(s) {return s.split('').reverse().join('');}```。
广州松田职业学院第三届“蓝桥杯”软件大赛校内选拔赛试卷
2012年蓝桥杯全国软件设计大赛-C语言校内选拔赛说明:本试卷包含三种题型:“代码填空”,“程序设计”。
填空题要求学生在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不多于一条语句(即不能出现分号),程序运行结果题目要求学生根据程序的功能,写出程序运行的结果。
编程题要求学生设计的程序对于给定的输入能给出正确的输出结果。
注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
编写的程序必须是通用的,不能只对试卷中给定的数据有效。
1.代码填空(满4分,每空2分)下面invert函数的功能是将一个字符串str的内容颠倒过来。
请填空。
#include <string.h>void main(){ int i,j;char str[100],k;gets(str);for(i=0,j= ; i<j; i++,j--){ k=str[i]; ; str[j]=k;}}2.代码填空(满2分)以下程序用于判断a,b,c能否构成三角形,若能输出YES,若不能输出NO。
当a,b,c输入三角形三条边长时,确定a,b,c能构成三角形的条件是需要同时满足三条件:任何两条边相加都大于另一条边。
请填空。
void main(){ float a,b,c;scanf(“%f%f%f”,&a,&b,&c);if(__ __)printf(“YES\n”);/*a,b,c能构成三角形*/else printf(“NO\n”);/*a,b,c不能构成三角形*/}3.代码填空(满4分,每空2分)有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?请填空。
main(){int day,x1,x2;day=0; x1=1020;while( ) {x2= ;x1=x2;day++;}printf(“day=%d\n”,day);}4.代码填空(满3分,每空1.5分)下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环,请填空。
【最新精选】蓝桥杯预赛题目与答案
蓝桥杯预赛题目1第一题标题:啤酒和饮料啤酒每罐2.3元,饮料每罐1.9元。
小明买了若干啤酒和饮料,一共花了82.3元。
我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。
注意:答案是一个整数。
请通过浏览器提交答案。
不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。
#include <stdio.h>void main() { int pj,yl; //啤酒与饮料double sum=82.3; for(pj=0; pj<=20; pj++) { yl=(int)((sum-pj*2.3)/1.9); if(pj*2.3+yl*1.9==sum) { printf("pj=%d,yl=%d\n",pj,yl); //pj=11 yl=30 } } }第二题标题:切面条一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?答案是个整数,请通过浏览器提交答案。
不要填写任何多余的内容。
#include <stdio.h> void main(){ int qie(int n); int g(int n); int sum=0; //面条总数int n=10; sum=qie(n); printf("%d\n",sum); }int qie(int n) //折叠n次以后,切一刀后的面条数{ int g(int n); if(n==1) { return 3; } else { return g(n-1)+ qie(n-1); //g(n)是有所有面条都有折痕一边的面条数} }int g(int n) { if(n==1) { return 2; } else { return g(n-1)*2; } }-----1025第三题标题:李白打酒话说大诗人李白,一生好饮。
第三届蓝桥杯预赛真题趣味算式C++
第三届蓝桥杯预赛真题趣味算式java本科第九题C++实现匪警请拨110,即使手机欠费也可拨通!为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!某批警察叔叔正在进行智力训练:1 2 3 4 5 6 7 8 9 = 110;请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。
之间没有填入符号的数字组合成一个数,例如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是另一个可能的答案。
请你利用计算机的优势,帮助警察叔叔快速找到所有答案。
每个答案占一行。
形如:12+34+56+7-8+9123+4+5+67-89......已知的两个答案可以输出,但不计分。
各个答案的前后顺序不重要。
注意:请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
请不要使用package语句。
源程序中只能出现JDK1.5中允许的语法或调用。
不能使用1.6或更高版本。
#include<iostream>char b[10];int x=0;using namespace std;void fun(int j){int y=j;y++;if(y==10){int s[9]={1,2,3,4,5,6,7,8,9};int z=0;for(int o=2;o<10;o++){if(b[o]=='*'){z++;if(z>1){s[o-3]=s[o-3]*10;z--;}s[o-2]=s[o-2]*10;if(b[o-1]=='-'){s[o-1]=0-s[o-1];}}if(b[o]=='+'){s[o-1]=s[o-1];z=0;}if(b[o]=='-'){s[o-1]=0-s[o-1];z=0;}}int sum2=0;for(int o=0;o<9;o++){sum2+=s[o];}//cout<<sum2<<"\t";if(sum2==110){x++;for(int o=0;o<9;o++){cout<<s[o]<<"\t";}cout<<x<<endl;}}if(y<10){b[y]='*';fun(y);b[y]='+';fun(y);b[y]='-';fun(y);}}int main(){int sum=1,j=1;fun(j);return 0;}。
蓝桥杯c语言试题及答案预赛
蓝桥杯c语言试题及答案预赛蓝桥杯C语言试题及答案预赛1. 题目一:计算阶乘要求:编写一个程序,计算并输出任意正整数的阶乘。
答案:```c#include <stdio.h>long long factorial(int n) {if (n == 0) return 1;long long result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}int main() {int number;printf("请输入一个正整数:");scanf("%d", &number);printf("%d的阶乘是:%lld\n", number, factorial(number));return 0;}```2. 题目二:寻找最大值要求:给定一个整数数组,找出数组中的最大值。
答案:```c#include <stdio.h>int findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}int main() {int arr[] = {3, 5, 2, 7, 1};int size = sizeof(arr) / sizeof(arr[0]);printf("数组中的最大值是:%d\n", findMax(arr, size)); return 0;}```3. 题目三:字符串反转要求:编写一个程序,实现字符串的反转。
答案:```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("反转后的字符串是:%s\n", str);return 0;}```4. 题目四:斐波那契数列要求:编写一个程序,输出斐波那契数列的前N项。
第三届 蓝桥杯 预赛题目(部分)1
1、结果填空求三个三角形面积。
2、结果填空两人共卖150个鸡蛋,两人赚了一样的钱,交换价格卖,一个卖32元另一个24.5元,求两人卖的鸡蛋数。
3、结果填空ABCDE*?=ECDBA (顺序不记得了每个字母和?代表一个数字,暴力求出ABCDE各自代表的数
4、结果填空13张牌、、、、、
5、代码填空干支纪年
6、代码填空身份证校验
7、代码填空矩阵顺时针旋转90度。
8、程序设计
手机尾号得分,
ABCD,DCBA连号5分;
AAAB,ABBB,3分,AAAA 6分;
ABAB,AABB 2分,AAAA 4分;
6,8,9出现一次一分。
得分为所有符合条件加分项的和。
输入n(小于100)个尾号,输出对应得分
9、程序设计
输入罗马数字输出十进制数。
I V X L C D M 对应1 5 10 50 100 500 1000
III 3 XXX 30 CC 200,出现几次就是其倍数,仅对于IXCM有效
IV 4 左小右大,右减左。
……
……
……
CMXCIX 999
10、程序设计
A B C
D E
空格相邻字母可移动、
表示成字符串ABCDE*
输入若干字符串,可移动得到输出1,不可得到输出0。
2023年蓝桥杯初赛真题模拟(U10组别)
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝பைடு நூலகம்杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
蓝桥杯模拟试题
第三届“蓝桥杯”c、c++组初赛试题
第三届“蓝桥杯”全国软件专业人才设计与创业大赛是工业和信息化部人才交流中心、教育部高等学校计算机科学与技术教学指导委员会联合举办的全国性软件专业人才设计与创业大赛。
初赛:大赛分为JAVA软件开发、C/C++语言程序设计两个项目。
2011 c/c++组初赛试题考试时间2小时1、两个乒乓球队进行比赛,各出三人。
甲队为a,b,c三人,乙队为x,y,z三人。
已抽签决定比赛名单。
有人向队员打听比赛的名单。
a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单2、输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。
如输入:56439,输出:5位数5,6,4,3,99,3,4,6,53、任何一个自然数m的立方均可写成m个连续奇数之和。
例如:1^3=12^3=3+53^3=7+9+114^3=13+15+17+19编程实现:输入一自然数n,求组成n^3的n个连续奇数。
4、由键盘输入一个自然数N(1≤N≤9),要求程序在屏幕上输出如下图形。
N=1时:N=3时:N=4时:111111111111112221122222112321123332112221123432111111123332112222211111111注:应保证N在图形中只出现一次,且在中心。
5、验证18位证件号:输入18位证件号,将奇位数的值相加的和求的平均数X,偶位数先与3相乘得到的个位数的和的平均数y。
如果(X+Y)是10的倍数,则证件号正确,否则则错误。
请编写程序验证证件号是否正确。
(12分)列入输入:431023198919230939输出:正确分析:奇位数:3 0 3 9 9 9 3 9 9偶位数:3 0 2 1 8 1 2 1 4X:(3+0+3+9+9+9+3+9+9)/9 = 6Y: 3*3 = 9 0*3 = 0 2*3 = 6 1*3 = 3 8*3 = 24 1*3 = 3 2*3 = 6 1*3 = 3 4*3 = 12 (9+0+6+3+4+3+6+3+2)/9 = 4X+Y = 6+4 = 10。
第三届蓝桥杯选拔赛答案
第三届“蓝桥杯”选拔赛试题高职组1、土地测量#include "stdafx.h"#include"math.h"float fun( float a, float b, float c ){ints,A=0;s=(a+b+c )/2;A=sqrt( s * (s-a) * (s-b) * (s-c) );return A;}void main(){floata,b,c;float sum=0;a=fun(52.1, 68.2, 33.4);b=fun(43.5, 51.9, 71.9);c=fun(57.2, 68.2, 71.9);sum=a+b+c;printf("%.2f\n",sum);}#include"stdafx.h"void main(){float x;for(x=1; x<=150; x++){if( 24.5/ (150-x) * x == ( 32/x * (150-x) ) ){printf("第一个人卖了:%.0f个鸡蛋,第二个人卖了:%.0f个鸡蛋\n",x,150-x);break;}}}#include"stdafx.h"void main(){int A,B,C,D,E,F;for(A=0;A<=9;A++){for(B=0;B<=9;B++){for(C=0;C<=9;C++){for(D=0;D<=9;D++){for(E=0;E<=9;E++){for(F=0;F<=9;F++){if((A*10000+B*1000+C*100+D*10+E)*F==(A+B*10+C*100+D*1000+E*10000) ){printf("%d,%d,%d,%d,%d\n",A,B,C,D,E);}}}}}}}}4、巧排扑克牌5、干支纪年void f(int year){char* x[] = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};char* y[] = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};int n = year - 1984;while(n<0) n += 60;printf("%s%s\n", x[ n%10 ], y[2 * (n / 10) + (n % 10) % (n / 10)]);}int main(intargc, char* argv[]){f(1911);f(1970);f(2012);return 0;}charverifyCode(char* s){static int weight[] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};static char map[] = {'1','0','X','9','8','7','6','5','4','3','2'};int sum = 0;for(int i=0; i<17; i++){sum += ( s[i] ) * weight[i]; // 填空}return map[ sum%11 ]; // 填空}#include "stdafx.h"#include"stdlib.h"void rotate(int* x, int rank){//int j;int* y = (int*)malloc( rank*rank*sizeof(int) ); // 填空for(int i=0; i<rank * rank; i++){y[ 12+i/4 + 4*(i%4)] = x[i]; // 填空}for(i=0; i<rank*rank; i++){x[i] = y[i];}free(y);}int main(intargc, char* argv[]){int x[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};int rank = 4;rotate(&x[0][0], rank);for(int i=0; i<rank; i++){for(int j=0; j<rank; j++){printf("%4d", x[i][j]);}printf("\n");}return 0;}#include "stdafx.h"#define N 100int fun(int n){int sum;intq,b,s,g;sum=0; //评分初始化q=n/1000; //求千位b=n/100%10; //求百位s=n/10%10; //求十位g=n%10; //求个位//如果出现连号,不管升序还是降序,都加5分if( (q+1==b && b+1==s && s+1==g) || (q-1==b && b-1==s && s-1==g) ) {sum+=5;}//个十百千位都相等,直接加6分if( q==b && b==s && s==g )sum+=6;//前三个数字相同,或后三个数字相同,都加3分else if( (q==b && b==s) || (b==s && s==g) )sum+=3;//个十百千位都相等,直接加2分if( (q==b) && (b==s) && (s==g) )sum+=2;//符合ABAB或者AABB模式的加1分else if( (q==s && b==g) || (q==b && s==g) )sum+=1;//千位含6 8 9 加一分if( q==6 || q==8 || q==9 )sum+=1;//百位含6 8 9 加一分if( b==6 || b==8 || b==9 )sum+=1;//十位含6 8 9 加一分if( s==6 || s==8 || s==9 )sum+=1;//个位含6 8 9 加一分if( g==6 || g==8 || g==9 )sum+=1;return sum;}void main(){inti,j,n;int a[N];scanf("%d",&n); //手机尾号for(i=0;i<n;i++){scanf("%d",&a[i]);}printf("\n");for(i=0;i<n;i++){printf("%d",fun(a[i])); //调用函数printf("\n");}}9、罗马数字#include "stdafx.h"#include "string.h"#define N 100int fun(char *s){int i=0;int sum=0;while(s[i]!='\0'){if(s[i]=='I') //等于I时,I的值为1{if(s[i+1]=='V') //右边为'V'时{sum+=5-1;i+=2;}else if(s[i+1]=='X') //右边为'X'时{sum+=10-1;i+=2;}else if(s[i+1]=='L') //右边为'L'时{sum+=50-1;i+=2;}else if(s[i+1]=='C') //右边为'C'时{sum+=100-1;i+=2;}else if(s[i+1]=='D') //右边为'D'时{sum+=500-1;i+=2;}else if(s[i+1]=='M') //右边为'M'时{sum+=1000-1;i+=2;}else{sum+=1; //出现一次I加1i++;}continue;}else if(s[i]=='V') //等于V时,V的值为5 {if(s[i+1]=='X') //右边为'X'时{sum+=10-5;i+=2;}else if(s[i+1]=='L') //右边为'L'时{sum+=50-5;i+=2;}else if(s[i+1]=='C') //右边为'C'时{sum+=100-5;i+=2;}else if(s[i+1]=='D') //右边为'D'时{sum+=500-5;i+=2;}else if(s[i+1]=='M') //右边为'M'时{sum+=1000-5;i+=2;}else{sum+=5; //出现一次V加5i++;}continue;}else if(s[i]=='X') //等于X时,X的值为10 {if(s[i+1]=='L') //右边为'L'时{sum+=50-10;i+=2;}else if(s[i+1]=='C') //右边为'C'时{sum+=100-10;i+=2;}else if(s[i+1]=='D') //右边为'D'时{sum+=500-10;i+=2;}else if(s[i+1]=='M') //右边为'M'时{sum+=1000-10;i+=2;}else{sum+=10; //出现一次X加10i++;}continue;}else if(s[i]=='L') //等于L时,L的值为50 {if(s[i+1]=='C') //右边为'C'时{sum+=100-50;i+=2;}else if(s[i+1]=='D') //右边为'D'时{sum+=500-50;i+=2;}else if(s[i+1]=='M') //右边为'M'时{sum+=1000-50;i+=2;}else{sum+=50; //出现一次L加50i++;}continue;}else if (s[i]=='C') //等于C时,C的值为100 {if(s[i+1]=='D') //右边为'D'时{sum+=500-100;i+=2;}else if(s[i+1]=='M') //右边为'M'时{sum+=1000-100;i+=2;}else{sum+=100; //出现一次C加100i++;}continue;}else if (s[i]=='D') //等于D时,D的值为500{if(s[i+1]=='M') //右边为'M'时{sum+=1000-500;i+=2;}else{sum+=500; //出现一次D加500i++;}continue;}else if (s[i]=='M') //等于M时,M的值为1000 {{sum+=1000; //出现一次M加1000 i++;}continue;}}return sum;}void main(){char a[N];intn,i;int k[N];scanf("%d",&n);for(i=0;i<n;i++) {scanf("%s",a);k[i]=fun(a);}for(i=0;i<n; i++){printf("%d\n",k[i]); }}。
蓝桥杯试题及答案
蓝桥杯试题及答案蓝桥杯是面向全国高校计算机专业学生的程序设计竞赛,由工业和信息化部人才交流中心主办,旨在提高学生的编程能力、算法设计能力以及团队合作能力。
以下是一份蓝桥杯试题及答案的示例,供参考。
### 蓝桥杯程序设计竞赛试题及答案#### 题目一:求最大公约数题目描述:给定两个正整数 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;}```#### 题目三:二分查找题目描述:在一个已排序的数组中,使用二分查找算法找出一个特定元素的位置。
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分)下面函数旳目旳是求出某个日期是该年度旳第几天。
第三届蓝桥杯全国选拔赛答案解析
第一题:微生物增殖#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数量即可。
if(k%4==0)Y *= 2;//每2分钟翻倍if(k%6==0)X *= 2;//每3分钟翻倍,X和Y的翻倍是相互独立的,不需要另作讨论。
}printf("%d", Y);return 0;}第二题:古堡算式#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数量即可。
if(k%4==0)Y *= 2;//每2分钟翻倍if(k%6==0)X *= 2;//每3分钟翻倍,X和Y的翻倍是相互独立的,不需要另作讨论。
}printf("%d", Y);return 0;}第三题:比酒量#include <cstdio>#define MAX 20int n, m; //n个海盗,m轮后全体倒下,船长喝了t瓶酒double drink[MAX], t; //记录船长每轮喝的酒量void dfs(int x, int y)if(y <= 0){double sum = 0.0;for(int i = 1; i <= m; i++)sum += drink[i];double dif = sum - t;if(dif < 0.0) dif = -dif;if(dif < 0.000001){for(int i = m; i > 0; i--)printf("%d ", (int)(1.0 / drink[i]));printf("\n");}return;}if(x <= 0) return;drink[y] = 1.0 / x;for(int i = 1; i < x; i++)dfs(x - i, y - 1);}int main(){m = 4; //喝了四轮t = 1.0; //船长喝了一瓶酒for(n = 20; n >= 1; n--)dfs(n, m);return 0;}第四题:奇怪的比赛#include <cstdio>#define MAX 20int n, m; //n个海盗,m轮后全体倒下,船长喝了t瓶酒double drink[MAX], t; //记录船长每轮喝的酒量void dfs(int x, int y){if(y <= 0){double sum = 0.0;for(int i = 1; i <= m; i++)sum += drink[i];double dif = sum - t;if(dif < 0.0) dif = -dif;if(dif < 0.000001){for(int i = m; i > 0; i--)printf("%d ", (int)(1.0 / drink[i]));printf("\n");}return;}if(x <= 0) return;drink[y] = 1.0 / x;for(int i = 1; i < x; i++)dfs(x - i, y - 1);}int main(){m = 4; //喝了四轮t = 1.0; //船长喝了一瓶酒for(n = 20; n >= 1; n--)dfs(n, m);return 0;}第五题:转方阵sizeof(int)*rank*rankrank*(i%rank) + rank-i/rank-1第六题:大数乘法n3/base+n2/base+n4%baser[2]/base第七题:放棋子NumRow!=3 || NumCol!=3f(x,r,c+1)x[r][c]==1第八题:密码发生器#include <cstdio>#include <cstring>#define MAX 1005long num[6];char tmp[MAX];int main(){int t;scanf("%d", &t);while(t){memset(num, 0, sizeof num);fgets(tmp, MAX, stdin);if(tmp[0] == '\n' || strlen(tmp) == 0) continue;for(int i = 0; tmp[i] != 0 && tmp[i] != '\n'; i++){num[i%6] += tmp[i];}for(int j = 0; j < 6; j++){int t = num[j] % 9;printf("%d", t ? t : 9);}putchar('\n');--t;}return 0;}第八题:密码发生器#include <cstdio>#include <cstring>#define MAX 1005long num[6];char tmp[MAX];int main(){int t;scanf("%d", &t);while(t){memset(num, 0, sizeof num);fgets(tmp, MAX, stdin);if(tmp[0] == '\n' || strlen(tmp) == 0) continue;for(int i = 0; tmp[i] != 0 && tmp[i] != '\n'; i++){num[i%6] += tmp[i];}for(int j = 0; j < 6; j++){int t = num[j] % 9;printf("%d", t ? t : 9);}putchar('\n');--t;}return 0;}第九题:夺冠概率#include <cstdio>#include <stdlib.h>#include <time.h>#define COUNT 100000const int g = 0;double P[4][4] = {{0, 0.1, 0.3, 0.5}, {0.9, 0, 0.7, 0.4},{0.7, 0.3, 0, 0.2},{0.5, 0.6, 0.8, 0}};int main(){srand((unsigned)time(NULL));double sum = 0.0;for(int k = 1; k <= COUNT; k++){int x = g, y = g, z = g;while(x == g) x = rand() % 4;//while(y==g || y==x) y=rand()%4; //此处的生成y的方法和下面的方法有轻微差异for(int ii = 0; ii < 4 && (ii == g || ii == x); )++ii; //约有0.001的浮动,推荐用下面这个方法y = ii;for(int i = 0; i < 4 && (i == g || i == x || i == y); )++i;z = i;double r = 1 - (P[x][g] + P[g][x] * (P[y][z] * P[y][g] + P[z][y] * P[z][g]));sum += r;}printf("%lf\n", sum / COUNT);return 0;}第十题:#include <stdio.h>#include <string.h>int a[10001];int b[4] = {1, 3, 7, 8};int main(){int i, n, j;memset(a, 0, sizeof a); //初始化判定数组为0a[0] = 1; //说明对方取完了最后一堆,那么自己胜利for(i = 1; i <= 10000; i++)for(j = 0; j < 4; j++)if(i - b[j] >= 0){if(a[i-b[j]] == 0) //有取法能致使对方输,那么自己就要赢{a[i] = 1;break;}}scanf("%d", &n);while(n--){scanf("%d", &i);printf("%d\n", a[i]);}return 0;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
专科预赛1.土地测量造成高房价的原因有许多,比如土地出让价格。
既然地价高,土地的面积必须仔细计算。
遗憾的是,有些地块的形状不规则,比如是如图【1.jpg】中所示的五边形。
一般需要把它划分为多个三角形来计算。
已知三边求三角形的面积需要用海伦定理,参见【2.jpg】各条边长数据如下:AB = 52.1BC = 57.2CD = 43.5DE = 51.9EA = 33.4EB = 68.2EC = 71.9根据这些数据求五边形地块的面积。
四舍五入到小数后两位。
只写结果,不要源代码!答案写在“解答.txt”中,不要写在这里!【1.jpg】【2.jpg】2.猜生日今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。
休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”“把我出生的年月日连起来拼成一个8位数(月、日不足两位前补0)正好可以被今天的年、月、日整除!”他想了想,又补充到:“再给个提示,我是6月出生的。
”根据这些信息,请你帮小明算一下,他叔叔的出生年月日。
答案写在“解答.txt”中,不要写在这里!格式是年月日连成的8位数。
例如,如果是1948年6月12日,就写:194806123.放麦子你一定听说过这个故事。
国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第1个棋盘格放1粒麦子,在第2个棋盘格放2粒麦子,在第3个棋盘格放4粒麦子,在第4个棋盘格放8粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有64格)。
国王以为他只是想要一袋麦子而已,哈哈大笑。
当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都铺满麦子也不够用!请你借助计算机准确地计算,到底需要多少粒麦子。
答案写在“解答.txt”中,不要写在这里!4.比酒量有一群海盗(不多于20人),在船上比拼酒量。
过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。
再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。
当第4瓶酒平分喝下后,大家都倒下了。
等船长醒来,发现海盗船搁浅了。
他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。
如果有多个可能的答案,请列出所有答案,每个答案占一行。
格式是:人数,人数,...例如,有一种可能是:20,5,4,2,0答案写在“解答.txt”中,不要写在这里!5.第一个数字以下的静态方法实现了:把串s中第一个出现的数字的值返回。
如果找不到数字,返回-1例如:s = "abc24us43" 则返回2s = "82445adb5" 则返回8s = "ab" 则返回-1public static int getFirstNum(String s){if(s==null || s.length()==0) return -1;char c = s.charAt(0);if(c>='0' && c<='9') return _____________; //填空return getFirstNum(______________); //填空}请分析代码逻辑,并推测划线处的代码。
答案写在“解答.txt”文件中注意:只写划线处应该填的内容,划线前后的内容不要抄写。
6.扑克牌移动下面代码模拟了一套扑克牌(初始排序A~K,共13张)的操作过程。
操作过程是:手里拿着这套扑克牌,从前面拿一张放在后面,再从前面拿一张放桌子上,再从前面拿一张放在后面,....如此循环操作,直到剩下最后一张牌也放在桌子上。
下面代码的目的就是为了求出最后桌上的牌的顺序。
初始的排列如果是A,2,3...K,则最后桌上的顺序为:[2, 4, 6, 8, 10, Q, A, 5, 9, K, 7, 3, J]import java.util.*;public class A23{public static List moveCard(List src){if(src==null) return null;List dst = new Vector();for(;;){if(__________________) break; // 填空src.add(src.remove(0));dst.add(__________________); // 填空}return dst;}public static void main(String[] args){List a = new Vector();a.addAll(Arrays.asList("A","2","3","4","5","6","7","8","9","10","J","Q","K"));System.out.println(moveCard(a));}}请分析代码逻辑,并推测划线处的代码。
答案写在“解答.txt”文件中注意:只写划线处应该填的内容,划线前后的内容不要抄写。
7.括号问题下面的代码用于判断一个串中的括号是否匹配所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉例如:..(..[..]..).. 是允许的..(...[...)....].... 是禁止的对于main 方法中的测试用例,应该输出:falsetruefalsefalseimport java.util.*;public class A22{public static boolean isGoodBracket(String s){Stack<Character> a = new Stack<Character>();for(int i=0; i<s.length(); i++){char c = s.charAt(i);if(c=='(') a.push(')');if(c=='[') a.push(']');if(c=='{') a.push('}');if(c==')' || c==']' || c=='}'){if(____________________) return false; // 填空if(a.pop() != c) return false;}}if(___________________) return false; // 填空return true;}public static void main(String[] args){System.out.println( isGoodBracket("...(..[.)..].{.(..).}..."));System.out.println( isGoodBracket("...(..[...].(.).){.(..).}..."));System.out.println( isGoodBracket(".....[...].(.).){.(..).}..."));System.out.println( isGoodBracket("...(..[...].(.).){.(..)...."));}}请分析代码逻辑,并推测划线处的代码。
答案写在“解答.txt”文件中注意:只写划线处应该填的内容,划线前后的内容不要抄写。
8.手机尾号30年的改革开放,给中国带来了翻天覆地的变化。
2011全年中国手机产量约为11.72亿部。
手机已经成为百姓的基本日用品!给手机选个好听又好记的号码可能是许多人的心愿。
但号源有限,只能辅以有偿选号的方法了。
这个程序的目的就是:根据给定的手机尾号(4位),按照一定的规则来打分。
其规则如下:1. 如果出现连号,不管升序还是降序,都加5分。
例如:5678,4321都满足加分标准。
2. 前三个数字相同,或后三个数字相同,都加3分。
例如:4888,6665,7777都满足加分的标准。
注意:7777因为满足这条标准两次,所以这条规则给它加了6分。
3. 符合AABB或者ABAB模式的加1分。
例如:2255,3939,7777都符合这个模式,所以都被加分。
注意:7777因为满足这条标准两次,所以这条标准给它加了2分。
4. 含有:6,8,9中任何一个数字,每出现一次加1分。
例如4326,6875,9918都符合加分标准。
其中,6875被加2分;9918被加3分。
尾号最终得分就是每条标准的加分总和!要求程序从标准输入接收数据,在标准输出上输出结果。
输入格式为:第一行是一个整数n(<100),表示下边有多少输入行,接下来是n行4位一组的数据,就是等待计算加分的手机尾号。
输出格式为:n行整数。
例如,输入:1430450211234565437777888878787788668824242244991867898866则输出:561233511385注意:请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
请不要使用package语句。
源程序中只能出现JDK1.5中允许的语法或调用。
不能使用1.6或更高版本。
9.密码发生器在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了...这个程序的任务就是把一串拼音字母转换为6位数字(密码)。
我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximing)作为输入,程序输出6位数字。
变换的过程如下:第一步. 把字符串6个一组折叠起来,比如wangximing则变为:wangximing第二步. 把所有垂直在同一个位置的字符的ascii码值相加,得出6个数字,如上面的例子,则得出:228 202 220 206 120 105第三步. 再把每个数字“缩位”处理:就是把每个位的数字相加,得出的数字如果不是一位数字,就再缩位,直到变成一位数字为止。