2011蓝桥杯决赛题附答案

合集下载

蓝桥杯试题标准答案(练习)

蓝桥杯试题标准答案(练习)

1、亲密数:假设有a、b两个数,若 a 的所有因子之和等于b,b 的所有因子之和等于a ,并且 a 不等于b ,则称 a 和 b 是一对亲密数。

如284 和 220 就是一对亲密数。

#include<stdio.h>int main(){int a,b,i,n;for(a=1;a<=10000;a++){for(b=0,i=1;i<=a/2;i++)if(a%i==0)1b+=i;for(n=0,i=1;i<=b/2;i++)if(b%i==0)n+=i;1if(n==a&&a!=b&&a<b)printf("%d-%d\n",a,b);}return 0;}2、世纪末的星期:曾有邪教称 1999 年 12 月 31 日是世界末日。

当然该谣言已经不攻自破。

还有人称今后的某个世纪末的12 月 31 日如果是星期一则会....有趣的是任何一个世纪末的年份的12 月 31 日都不可能是星期一!!于是“谣言制造商”又修改为星期日 ......1999 年的 12 月 31 日是星期五,请问,未来哪一个离我们最近的一个世纪末年即xx99 年的12 月 31 日正好是星期天,即星期日请回答该年份,只写这个4 位整数,不要写 12 月 31 等多余信息#include<stdio.h>2int main(){long days = 5; /*1999 年的最后一天为周5,把下一年加上 5天对 7 取余为 0 的,则是周日*/int i = 2000;for(;;) /*无循环终止条件,可以利用break 语句终止循环*/{if(i%4==0&&i%100!=0||i%400==0){days = days%7+366;else{days = days%7+365;3}if(days%7==0&&i%100==99) {printf("%d",i);break;}i++;}return 0;}3、马虎的算式:小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。

2011年蓝桥软件大赛样题

2011年蓝桥软件大赛样题

注意本试题是2011年蓝桥杯软件大赛官方网站上下载获得(样题,并非往届试题)样题l (编程题)下列乘法算式中:每个汉字代表1个数字(1~9)。

相同的汉字代表相同的数字,不同的汉字代表不同的数字。

赛软件* 比赛= 软件比拼试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。

【参考结果】465 * 14 = 6510l (编程题)花朵数一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数。

例如:当N=3时,153就满足条件,因为1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水仙花数(其中,“^”表示乘方,5^3表示5的3次方,也就是立方)。

当N=4时,1634满足条件,因为1^4 + 6^4 + 3^4 + 4^4 = 1634。

当N=5时,92727满足条件。

实际上,对N的每个取值,可能有多个数字满足条件。

程序的任务是:求N=21时,所有满足条件的花朵数。

注意:这个整数有21位,它的各个位数字的21次方之和正好等于这个数本身。

如果满足条件的数字不只有一个,请从小到大输出所有符合条件的数字,每个数字占一行。

因为这个数字很大,请注意解法时间上的可行性。

要求程序在3分钟内运行完毕。

【程序运行参考结果】128468643043731391252449177399146038697307l (编程题)信用卡号验证当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。

该校验的过程:1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。

2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。

3、将奇数位总和加上偶数位总和,结果应该可以被10整除。

例如,卡号是:5432123456788881则奇数、偶数位(用红色标出)分布:5432123456788881奇数位和=35偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。

蓝桥杯python题库及答案

蓝桥杯python题库及答案

蓝桥杯python题库及答案蓝桥杯python题库及答案一、选择题第一题设s=“Hello Lan Qiao”,执行print(s[4:11])输出的结果为( )。

选择题严禁使用程序验证A、lo Lan QiB、lo Lan QC、o Lan QiD、o Lan Q第二题循环语句for i in range(8, -4, -2):执行了几次循环( )。

选择题严禁使用程序验证A、4B、5C、6D、7第三题导入random模块后,执行print(random.randrange(10,100,2))语句,输出的结果可能是( )。

选择题严禁使用程序验证A、1B、24C、63D、100第四题执行以下程序,输出的结果是( )。

选择题严禁使用程序验证height = {“小蓝”:80, “小青”:100, “小圃”:70}height[“小青”]=70print(sum(height.values()))A、220B、210C、250D、70第五题导入turtle模块后,执行turtle.circle(80,steps=6)语句,所绘制的图形以下说法正确的是( )。

选择题严禁使用程序验证A、绘制出一个半径为80像素的圆B、绘制出六个半径为80像素的圆C、绘制出一个半径为80像素的圆和一个六边形D、绘制出一个半径为80像素的圆内接正六边形二、编程题第一题(注:input()输入函数的括号中不允许添加任何信息)编程实现:给定一个正整数N,计算N除以7的商。

输入描述:输入一个正整数N输出描述:输出N除以7的商(商为整数)样例输入:8样例输出:1num = int(input())print(num % 7)第二题(注:input()输入函数的括号中不允许添加任何信息)编程实现:给定一个正整数N,计算出1到N之间所有奇数的和。

输入描述:输入一个正整数N输出描述:输出1到N之间(包含1和N)所有奇数的和样例输入:5样例输出:9N = int(input())Sum = 0for i in range(1, N+1,2):Sum += iprint(Sum)第三题(注:input()输入函数的括号中不允许添加任何信息)提示信息:“水仙花数”是指一个三位正整数,其各位数字立方的和等于该数本身。

2011年蓝桥杯(第2届)预赛高职C语言真题解析

2011年蓝桥杯(第2届)预赛高职C语言真题解析
int n = 0;
int i,j;
sprintf(sa,"%8d",a);
sprintf(sb,"%8d",b);
for(i=0; i<8; i++)
{
for(j=1; j<=8-i; j++)
{
char t =________;
sa[i+j] = 0;
if(strstr(sb, sa+i))
{
if(j>n)_________;
下面的代码对给定的两个正整数求它的最小公倍数。请填写缺少的代码,使程序尽量高效地运行。
int f(int a, int b)
{
int i;
for(i=a; ; ______________ ) {
if(i%b==0) return i;
}
}
参考答案:
i+=a或者i = i + a;
日期间隔计算
人类历史上出现了很多种历法。现行的公历即格里历由儒略历改革而来。它是目前较为精确和规则简明的一种历法,约3300年误差一日。因为闰年问题以及每个月的长度不等,仍然使得某些计算较为麻烦。比如:求两个日期间差多少天。
若当前字符为数字,直接保存;
若当前字符为空格,直接保存,之后修改flag=0。
(2)源程序。
#include <stdio.h>
#include <string.h>
int main()
{
char src[201],dest[201],ch;
int flag=0; // flag=0,1,2分别表示前一字符为空格,字母,数字

蓝桥杯c组试题及答案

蓝桥杯c组试题及答案

蓝桥杯c组试题及答案一、选择题(每题5分,共20分)1. 下列关于C语言的描述,错误的是:A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言支持函数式编程答案:B2. 在C语言中,用于定义一个结构体的关键字是:A. structB. unionC. enumD. typedef答案:A3. 下列关于指针的描述,正确的是:A. 指针可以存储变量的地址B. 指针可以存储变量的值C. 指针不能存储数组的地址D. 指针不能存储函数的地址答案:A4. 在C语言中,用于定义一个函数的关键字是:A. functionB. defC. voidD. int答案:D二、填空题(每题5分,共20分)1. 在C语言中,表示逻辑与的运算符是______。

答案:&&2. 用于声明一个整型变量的关键字是______。

答案:int3. 在C语言中,数组的索引是从______开始的。

答案:04. C语言中,用于结束一个程序的语句是______。

答案:return三、编程题(每题30分,共60分)1. 编写一个C语言程序,实现计算并输出100以内所有偶数的和。

```c#include <stdio.h>int main() {int sum = 0;for (int i = 2; i <= 100; i += 2) {sum += i;}printf("Sum of even numbers from 1 to 100 is: %d\n", sum); return 0;}```2. 编写一个C语言程序,实现一个简单的计算器,可以计算两个整数的加、减、乘、除。

```c#include <stdio.h>int main() {int a, b;char op;float result;printf("Enter first number: ");scanf("%d", &a);printf("Enter operator (+, -, *, /): ");scanf(" %c", &op);printf("Enter second number: ");scanf("%d", &b);switch (op) {case '+':result = a + b;break;case '-':result = a - b;break;case '*':result = a * b;break;case '/':if (b != 0)result = (float)a / b;else {printf("Division by zero error!\n"); return 1;}break;default:printf("Invalid operator!\n");return 1;}printf("Result: %.2f\n", result);return 0;}```。

2011年蓝桥杯(第2届)预赛本科C语言真题解析

2011年蓝桥杯(第2届)预赛本科C语言真题解析

2011 年蓝桥杯(第 2 届)预赛本科组真题解析神秘的三位数有这样一个 3 位数,组成它的 3 个数字阶乘之和正好等于它本身。

即:abc = a! + b! + c!下面的程序用于搜索这样的 3 位数。

请补全缺失的代码。

int JC[] = {1,1,2,6,24,120,720,5040,40320,362880};int i;for(i=100; i<1000; i++){int sum = 0;int x = i;while(__________){sum += JC[x%10];x /= 10;}if(i==sum) printf("%d\n", i);}参考答案:x != 0歌赛新规则歌手大赛的评分规则一般是去掉一个最高分,去掉一个最低分,剩下的分数求平均。

当评委较少的时候,如果我们只允许去掉一个分数,该如何设计规则呢?有人提出:应该去掉与其余的分数平均值相差最远的那个分数。

即“最离群”的分数。

以下的程序用于实现这个功能。

其中 x 存放所有评分, n 表示数组中元素的个数。

函数返回最“离群”的那个分数值。

请补全缺失的代码。

double score(double x[], int n){int i,j;double dif = -1;double bad;for(i=0; i<n; i++){double sum = 0;for(j=0; j<n; j++){if(________) sum += x[j];}double t = x[i]- sum / (n -1);if(t<0) t = -t;if(t>dif){dif = t;bad = x[i];printf("%d, %f\n", i, x[i]);}}return bad;}参考答案:j!=i反转串我们把“ cba”称为“ abc”的反转串。

下面的代码可以把buf 中的字符反转。

2011蓝桥杯决赛题附答案

2011蓝桥杯决赛题附答案

2011年暑假蓝桥杯决赛题附答案1.四方定理数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示。

我们可以通过计算机验证其在有限范围的正确性。

对于大数,简单的循环嵌套是不适宜的。

下面的代码给出了一种分解方案。

请仔细阅读,填写空缺的代码(下划线部分)。

注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

直接写在题面中不能得分。

int f(int n, int a[], int idx){if(______________) return 1; // 填空1if(idx==4) return 0;for(int i=(int)sqrt(n); i>=1; i--){a[idx] = i;if(_______________________) return 1; // 填空2}return 0;}int main(int argc, char* argv[]){for(;;){int number;printf("输入整数(1~10亿):");scanf("%d",&number);int a[] = {0,0,0,0};int r = f(number, a, 0);printf("%d: %d %d %d %d\n", r, a[0], a[1], a[2], a[3]);}return 0;}2.加密在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。

解密的方法就是再执行一次同样的操作。

加密过程中n位二进制数会循环使用。

并且其长度也可能不是8的整数倍。

下面的代码演示了如何实现该功能。

请仔细阅读,填写空缺的代码(下划线部分)。

注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

直接写在题面中不能得分。

!!讲解版--2011l蓝桥杯c语言高职真题附加答案

!!讲解版--2011l蓝桥杯c语言高职真题附加答案

2011 模拟c语言高职注意:本套模拟题主要模拟命题形式与考核范围。

真实竞赛题的数量、难度可能与此套模拟题有差异。

说明:本试卷包含两种题型:“代码填空”与“程序设计”。

填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。

所填写的代码不多于一条语句(即不能出现分号)。

编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。

注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。

选手的程序必须是通用的,不能只对试卷中给定的数据有效。

1.代码填空(满2分)形如:“abccba”,“abcba”的串称为回文串,下列代码判断一个串是否为回文串。

请补充空白的部分。

char buf[] = "abcde11edcba";int x = 1; //x=1是回文串for(int i=0; i<strlen(buf)/2; i++)if(__buf[i]!=buf[(strlen(buf)-1)-i]_________________) // strlen(buf)-1是字符串中最后一个字符(不算’\0’)的序号{x = 0;//x=0不是回文串break;}printf("%s\n", x ? "是":"否");//x=1是回文串,x=0不是回文串2.代码填空(满分3分)下列代码把一个二进制的串转换为整数。

请填写缺少的语句;char* p = "1010110001100";int n = 0;for(int i=0;i<strlen(p); i++) //按权展开多项式求和{n = ___n+(p[i]-48)*pow(2,strlen(p)-1-i)_______________;// n = (n<<1) + (*(p+i)-48);}printf("%d\n", n);3.代码填空(满分3分)假设a,b,c是3个互不相等的整数。

2011蓝桥杯c语言试题及答案

2011蓝桥杯c语言试题及答案

2011蓝桥杯c语言试题及答案2011蓝桥杯C语言试题及答案一、选择题1. 下列哪个选项是C语言中的关键字?A. voidB. mainC. printfD. scanf答案:A2. 在C语言中,哪个函数用于将字符串从标准输入读取到一个字符数组中?A. gets()B. scanf()C. printf()D. fgets()答案:D3. 下列哪个选项是正确的C语言数组声明?A. int array[10];B. int array[];C. int array[10]={0};D. int array[10]={};答案:A4. 在C语言中,哪个运算符用于计算两个整数的差值?A. +C. *D. /答案:B5. 在C语言中,哪个关键字用于定义一个函数?A. functionB. defineC. defD. int答案:D二、填空题1. C语言中,用于声明一个整型变量的关键字是________。

答案:int2. 在C语言中,用于计算两个浮点数乘积的运算符是________。

答案:*3. C语言中,用于定义一个函数的关键字是________。

答案:int4. C语言中,用于将一个字符串复制到另一个字符串的函数是________。

答案:strcpy5. 在C语言中,用于声明一个字符型变量的关键字是________。

答案:char三、编程题1. 编写一个C语言程序,计算并输出100以内所有奇数的和。

#include <stdio.h>int main() {int sum = 0;for (int i = 1; i < 100; i += 2) {sum += i;}printf("The sum of odd numbers less than 100 is: %d\n", sum);return 0;}```2. 编写一个C语言程序,输入一个整数,输出其对应的ASCII字符。

第11届蓝桥杯国赛真题

第11届蓝桥杯国赛真题

1以上程序可以实现:A 点击绿旗:移动70步-右转15°-重复执行以上动作B 点击绿旗:移动70步-右转15°-移到鼠标指针-重复执行以上动作C 点击绿旗:移动70步-右转15°-移到鼠标指针D 无法执行2.如能小女孩角色有4个造型,运行以上程序第几个造不会出现在舞台上()?A 1B 2C 3D 43.运行程序后出现几只小猫?A 10B 1C 2D 44.A 13B 10C 7D 115.运行以上程序画出以上图形,程序模块中a,b两处填什么?A 0,3B 3,1C 8,7D 5,2编程题1白天太阳升起,夜晚月亮升起,让我们来模拟昼夜的交替!具体要求:1)当绿旗被点击后,舞台出现太阳和天空背景,太阳从舞台左侧升起之后,从右侧落下至消失;2)当太阳在右挑落下消失后,舞台背景变成夜晚;3)之后月亮从舞台左则升起之后,从右侧落下至消失;4)当月亮在右阅泽失后,赛台变成自天如此循环;5)点绿旗,程序可更新开始。

评判标准;10分:满足要求1); 10分;满足要求2);10分:满足要求3): 10分:满足要求4); 10分:满足要求5)编程题2小瓢虫找妈妈具休要求:1)小瓢虫出现在舞台左侧,瓢虫妈妈出现在舞台的右侧,路径连接小瓢虫和瓢虫妈妈,计时器显示在舞台左上角,初始值为0;2)点击每旗开始计时,小弧虫能够沿看路径运动,当碰到瓢虫妈妈时,小弧虫说:“我找到妈妈了”并停止运动,计时结束;3)按下空格键,小虫回到始位置,计时器为0;4)再次点击旗,小瓢虫依然能沿看路径到达瓢虫妈妈的位置时说:“我找到妈妈了”并停止运动,计时结束评判标准;10分:满足要求1); 10分;满足要求2);10分:满足要求3): 10分:满足要求4); 10分:满足要求5)编程题3我们熟悉的青蛙王子有回来了,这次王子中了女巫的新法术,变成青蛙后被困在神秘空间,我们控制青蛙躲避女巫的扫把解除魔法。

编程实现:女巫向青蛙王子发射拖把,通过按键控制王子进行躲避!具体要求:(1)点击小绿旗,出现角色背景。

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

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

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), 表示蚂蚁的总数。

第11届蓝桥杯青少赛Scratch组试题(高级组)

第11届蓝桥杯青少赛Scratch组试题(高级组)

_________________ ___________________上表由裁判填写,请参赛选手及阅卷裁判签名确认上述成绩准确无误,选手_________、裁判_________ 注意事项:1.赛场内应保持安静,参赛选手间严禁互相交谈,违者将被取消比赛资格;2.比赛过程中,笔记本计算机不得开启WLAN或蓝牙等各种无线通讯功能,违者将被取消比赛资格;3.比赛过程中,应将准考证及身份证件放置桌子左上角,以备监考人员随时核对、检查;4.参赛选手的手机在检录后必须保持关闭状态直至比赛结束,违者将被取消比赛资格;5.比赛过程中,笔记本电脑须调为静音;6.请在做题之前认真阅读题目,编程题目设置有步骤分,即只完成部分功能也可以得到相应的分数;7.比赛答卷时间为90分钟;8.比赛结束后,请自行整理所有自带设备及配件,并妥善带出赛场,尤其不要遗漏电源、连线或其他零部件;9.比赛结束时裁判现场判卷结束后,本赛卷一律交给判卷裁判,比赛选手不得自行带走,否则取消比赛成绩。

一、单选题(每题20分)第一题(难度系数1)小猫迷路了,它必须沿着地面的标记才能走出迷宫。

下面哪段程序能帮助它呢?A BC D如上图所示,“气球”角色有三种造型,运行如下程序,哪种颜色气球不会出现?A BC D 都有可能会出现小巫师挥舞着手里的魔棒,当他念了下面哪段程序咒语后能让自己从舞台上消失呢?A BC D第四题(难度系数4)角色小猫在运行上图程序5秒后,舞台上能看到几只小猫?A 1B 2C 3D 4你制作了一款天气预报软件,能够根据天气情况,提示如何安排衣着。

按下空格键,天气角色会随机显示“雪花”或“太阳”的造型。

同时,衣着角色会根据天气角色的造型,变换成不同的服装。

比如当天气角色是“雪花”造型时,衣着角色就是“帽子”造型;当天气角色是“太阳”造型时,衣着角色就是“短袖”造型。

角色及其造型如下图所示。

天气角色的程序如下所示。

衣着角色的程序中,有一组是不正确的,请将其挑选出来。

2011蓝桥杯高职java试题及部分参考答案

2011蓝桥杯高职java试题及部分参考答案

2011年选拔赛java 高职考生须知:考试时间为4小时。

本试卷包含两种题型:“代码填空”与“程序设计”。

总计100分。

其中代码填空:3+3+4+6+7+9+10 = 42 分程序设计:14+17+27 = 58分填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。

所填写的代码不超过一条语句(即不能出现分号)。

把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。

考生的程序只有能运行出正确结果的时候才有机会得分。

注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。

选手的程序必须是通用的,不能只对试卷中给定的数据有效。

对每个题目,要求考生把所有类写在一个文件中。

调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

请不要使用package语句。

另外,源程序中只能出现JDK1.5中允许的语法或调用。

不能使用1.6或更高版本。

代码填空(满分3分)计算蔬菜总价为了丰富群众菜篮子,平抑菜价,相关部分组织了蔬菜的调运。

今某箱中有多个品种的蔬菜。

蔬菜的单价(元/公斤)存放在price数组中,蔬菜的重量(公斤)存放在weight数组中。

下面的代码计算该箱蔬菜的总价,试完善之。

把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

public static double getTotal(double[] price, double[] weight){double x = 0;for(int i=0; i<price.length; i++){____________________;}return x;}代码填空(满分3分)计算行程低碳生活,有氧运动。

骑自行车出行是个好主意。

小明为自己的自行车装了个计数器,可以计算出轮子转动的圈数。

蓝桥杯试题及答案

蓝桥杯试题及答案

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

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

### 蓝桥杯程序设计竞赛试题及答案#### 题目一:求最大公约数题目描述:给定两个正整数 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;}```#### 题目三:二分查找题目描述:在一个已排序的数组中,使用二分查找算法找出一个特定元素的位置。

蓝桥杯ACM决赛经典试题及其详解

蓝桥杯ACM决赛经典试题及其详解

/*入门训练A+B问题问题描述输入A、B,输出A+B。

说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标。

输入格式输入的第一行包括两个整数,由空格分隔,分别表示A、B。

说明:“输入格式”是描述在测试你的程序时,所给的输入一定满足的格式。

做题时你应该假设所给的输入是一定满足输入格式的要求的,所以你不需要对输入的格式进行检查。

多余的格式检查可能会适得其反,使用你的程序错误。

在测试的时候,系统会自动将输入数据输入到你的程序中,你不能给任何提示。

比如,你在输入的时候提示“请输入A、B”之类的话是不需要的,这些多余的输出会使得你的程序被判定为错误。

输出格式输出一行,包括一个整数,表示A+B的值。

说明:“输出格式”是要求你的程序在输出结果的时候必须满足的格式。

在输出时,你的程序必须满足这个格式的要求,不能少任何内容,也不能多任何内容。

如果你的内容和输出格式要求的不一样,你的程序会被判断为错误,包括你输出了提示信息、中间调试信息、计时或者统计的信息等。

样例输入12 45说明:“样例输入”给出了一组满足“输入格式”要求的输入的例子。

这里给出的输入只是可能用来测试你的程序的一个输入,在测试的时候,还会有更多的输入用来测试你的程序。

样例输出57说明:“样例输出”给出了一组满足“输出格式”要求的输出的例子。

样例输出中的结果是和样例输入中的是对应的,因此,你可以使用样例的输入输出简单的检查你的程序。

要特别指出的是,能够通过样例输入输出的程序并不一定是正确的程序,在测试的时候,会用很多组数据进行测试,而不局限于样例数据。

有可能一个程序通过了样例数据,但测试的时候仍只能得0分,可能因为这个程序只在一些类似样例的特例中正确,而不具有通用性,再测试更多数据时会出现错误。

比如,对于本题,如果你写一个程序不管输入是什么都输入57,则样例数据是对的,但是测试其他数据,哪怕输入是1和2,这个程序也输出57,则对于其他数据这个程序都不正确。

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

2011年暑假蓝桥杯决赛题附答案1.四方定理数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示。

我们可以通过计算机验证其在有限范围的正确性。

对于大数,简单的循环嵌套是不适宜的。

下面的代码给出了一种分解方案。

请仔细阅读,填写空缺的代码(下划线部分)。

注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

直接写在题面中不能得分。

int f(int n, int a[], int idx){if(______________) return 1; // 填空1if(idx==4) return 0;for(int i=(int)sqrt(n); i>=1; i--){a[idx] = i;if(_______________________) return 1; // 填空2}return 0;}int main(int argc, char* argv[]){for(;;){int number;printf("输入整数(1~10亿):");scanf("%d",&number);int a[] = {0,0,0,0};int r = f(number, a, 0);printf("%d: %d %d %d %d\n", r, a[0], a[1], a[2], a[3]);}return 0;}2.加密在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。

解密的方法就是再执行一次同样的操作。

加密过程中n位二进制数会循环使用。

并且其长度也可能不是8的整数倍。

下面的代码演示了如何实现该功能。

请仔细阅读,填写空缺的代码(下划线部分)。

注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

直接写在题面中不能得分。

void f(char* buf, unsigned char* uckey, int n){int i;for(i=0; i<n; i++)buf[i] = buf[i] ^ uckey[i];}int main(int argc, char* argv[]){char p[] = "abcd中国人123"; // 待加密串char* key = "11001100010001110"; //以串的形式表达的密匙,运算时要转换为按位存储的形式。

int np = strlen(p);int nk = strlen(key);unsigned char* uckey = (unsigned char*)malloc(np);// 密匙串需要按位的形式循环拼入uckey中int i;for(i=0; i<np*8; i++){if(key[i%nk]=='1')____________________________________________; // 填空1 else____________________________________________; // 填空2 }f(p, uckey, strlen(p));f(p, uckey, strlen(p));printf("%s\n", p);free(uckey);return 0;}3.公倍数为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。

但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。

事实上,它是1至6的每个数字的倍数。

即1,2,3,4,5,6都是可以除尽60。

我们希望寻找到能除尽1至n的的每个数字的最小整数。

不要小看这个数字,它可能十分大,比如n=100, 则该数为:69720375229712477164533808935312303556800请编写程序,实现对用户输入的n (n<100)求出1~n的最小公倍数。

例如:用户输入:6程序输出:60用户输入:10程序输出:2520要求考生把所有函数写在一个文件中。

调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

对于编程题目,要求选手给出的解答完全符合ANSI C标准,不能使用c++特性;不能使用诸如绘图、中断调用等硬件相关或操作系统相关的API。

4.地铁换乘为解决交通难题,某城市修建了若干条交错的地铁线路,线路名及其所属站名如stations.txt所示。

线1苹果园....四惠东线2西直门车公庄....建国门线4....其中第一行数据为地铁线名,接下来是该线的站名。

当遇到空行时,本线路站名结束。

下一行开始又是一条新线....直到数据结束。

如果多条线拥有同一个站名,表明:这些线间可以在该站换车。

为引导旅客合理利用线路资源,解决交通瓶颈问题,该城市制定了票价策略:1. 每条线路可以单独购票,票价不等。

2. 允许购买某些两条可换乘的线路的联票。

联票价格低于分别购票。

单线票价和联合票价如price.txt 所示。

线1 180.....线13 114线1,线2 350线1,线10 390.....每行数据表示一种票价线名与票价间用空格分开。

如果是联票,线名间用逗号分开。

联票只能包含两条可换乘的线路。

现在的问题是:根据这些已知的数据,计算从A站到B站最小花费和可行的换乘方案。

比如,对于本题目给出的示例数据如果用户输入:五棵松,奥体中心程序应该输出:-(线1,线10)-线8 = 565如果用户输入:五棵松,霍营程序应该输出:-线1-(线4,线13) = 440可以看出,用户输入的数据是:起始站,终到站,用逗号分开。

程序输出了购票方案,在括号中的表示联票,短横线(-)用来分开乘车次序。

等号后输出的是该方案的花费数值。

请编程解决上述问题。

注意:1. 我们测试您的程序时,所用数据与题目中的示例数据不同,但格式完全一样。

2. 当多个方案有相同的最小花费,输出任意一个方案即可。

要求考生把所有函数写在一个文件中。

调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

对于编程题目,要求选手给出的解答完全符合ANSI C标准,不能使用c++特性;不能使用诸如绘图、中断调用等硬件相关或操作系统相关的API。

文件price.txt内容如下:线1 180线2 250线4 160线5 270线8 175线10 226线13 114线1,线2 350线1,线10 390线1,线5 410线1,线4 330线10,线13 310线2,线5 390线4,线10 370线4,线13 260文件station.txt内容如下:线1苹果园古城路八角游乐园八宝山玉泉路五棵松万寿路公主坟军事博物馆木樨地南礼士路复兴门西单天安门西天安门东王府井东单建国门永安里大望路四惠四惠东线2西直门车公庄阜成门复兴门长椿街宣武门和平门前门崇文门北京站建国门朝阳门东四十条东直门雍和宫安定门鼓楼大街积水潭线4公益西桥角门西马家堡北京南站陶然亭菜市口宣武门西单灵境胡同西四平安里新街口西直门动物园国家图书馆魏公村人民大学海淀黄庄北京大学东门圆明园西苑北宫门安河桥北线5天通苑北天通苑天通苑南立水桥立水桥南北苑路北大屯路东惠新西街北口惠新西街南口和平西桥和平里北街雍和宫北新桥张自忠路东四灯市口东单崇文门磁器口天坛东门蒲黄榆刘家窑宋家庄线8森林公园南门奥林匹克公园奥体中心北土城线10巴沟苏州街海淀黄庄知春里知春路牡丹园健德门北土城安贞门惠新西街南口芍药居太阳宫三元桥亮马桥农业展览馆团结湖呼家楼金台夕照国贸双井劲松线13西直门大钟寺知春路五道口上地西二旗龙泽回龙观霍营立水桥北苑望京西芍药居光熙门柳芳东直门5.连通问题in.bmp 文件如下:t1.bmp文件如下:BMP是常见的图像存储格式。

如果用来存黑白图像(颜色深度=1),则其信息比较容易读取。

与之相关的数据:(以下偏移均是从文件头开始)偏移:10字节, 长度4字节:图像数据真正开始的位置。

偏移:18字节, 长度4字节:位图的宽度,单位是像素。

偏移:22字节, 长度4字节:位图的高度,单位是像素。

从图像数据开始处,每个像素用1个二进制位表示。

从图片的底行开始,一行一行向上存储。

Windows规定图像文件中一个扫描行所占的字节数必须是4字节的倍数,不足的位均以0 填充。

例如,图片宽度为45像素,实际上每行会占用8个字节。

可以通过Windows自带的画图工具生成和编辑二进制图像。

需要在“属性”中选择“黑白”,指定为二值图像。

可能需要通过查看| 缩放| 自定义... 把图像变大比例一些,更易于操作。

图像的左下角为图像数据的开始位置。

白色对应1,黑色对应0我们可以定义:两个点距离如果小于2个像素,则认为这两个点连通。

也就是说:以一个点为中心的九宫格中,围绕它的8个点与它都是连通的。

如:t1.bmp 所示,左下角的点组成一个连通的群体;而右上角的点都是孤立的。

程序的目标是:根据给定的黑白位图,分析出所有独立连通的群体,输出每个连通群体的面积。

所谓面积,就是它含有的像素的个数。

输入数据固定存在in.bmp中。

如示例的in.bmp,程序应该输出:128152133该输出表示:共有4个连通群体。

输出的连通体面积间的顺序可以随意。

请编程解决上述问题。

我们测试程序的时候,会使用不同的in.bmp文件。

要求考生把所有函数写在一个文件中。

调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

对于编程题目,要求选手给出的解答完全符合ANSI C标准,不能使用c++特性;不能使用诸如绘图、中断调用等硬件相关或操作系统相关的API。

答案:。

相关文档
最新文档