蓝桥杯试题答案(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列的图形。
第十一届蓝桥杯真题及答案
第十一届蓝桥杯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)?【答案提交】这是一道结果填空题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
蓝桥杯c-c++省赛试题及答案解析
2016蓝桥杯c-c++B组省赛试题及解析第一题煤球数目有一堆煤球,堆成三角棱锥形。
具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:171700#include<stdio.h>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<stdio.h>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(如果显示有问题,可以参见【图1.jpg】)这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
蓝桥杯 试题 辽工大 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。
第八届蓝桥杯a组试题及答案
第八届蓝桥杯a组试题及答案第八届蓝桥杯A组试题及答案一、选择题(每题5分,共50分)1. 下列哪个选项不是C++的特性?A. 多态性B. 封装性C. 继承性D. 全局变量答案:D2. 在HTML中,用于定义最重要的标题的标签是:A. <h1>B. <h2>C. <h3>D. <h4>答案:A3. SQL语句中用于创建数据库的命令是:A. CREATE TABLEB. CREATE DATABASEC. DROP DATABASED. ALTER DATABASE答案:B4. 在JavaScript中,用于声明变量的关键字是:A. varB. letC. constD. All of the above答案:D5. 下列哪个选项是Python的内置数据类型?A. ListB. TupleC. DictionaryD. All of the above答案:D6. 在Java中,用于捕获异常的关键字是:A. tryB. catchC. finallyD. throw答案:B7. 在CSS中,用于设置文本颜色的属性是:A. colorB. font-colorC. text-colorD. none of the above答案:A8. 下列哪个选项不是Linux操作系统的发行版?A. UbuntuB. CentOSC. WindowsD. Fedora答案:C9. 在Python中,用于执行列表推导的语法是:A. [x for x in iterable if condition]B. {x for x in iterable if condition}C. (x for x in iterable if condition)D. All of the above答案:A10. 在HTML5中,用于定义文档元数据的标签是:A. <meta>B. <header>C. <footer>D. <section>答案:A二、填空题(每题5分,共30分)1. 在C语言中,用于定义一个结构体的关键字是________。
蓝桥杯第六届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语言本科组(带答案)
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把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四名盗窃嫌疑犯,其中只有一人是小偷。
第七届蓝桥杯程序设计大赛题目及答案
第七届省赛1. 网友年龄某君新认识一网友。
当问及年龄时,他的网友说:“我的年龄是个2 位数,我比儿子大27 岁, 如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄”请你计算:网友的年龄一共有多少种可能情况?提示:30 岁就是其中一种可能哦.请填写表示可能情况的种数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
7x-y=32. 生日蜡烛某君从某年开始每年都举办一次生日party ,并且每次都要吹熄与年龄相同根数的蜡烛现在算起来,他一共吹熄了236 根蜡烛。
请问,他从多少岁开始过生日party 的?请填写他开始过生日party 的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
26 #include<iostream> using namespace std;int main(){int i,j;int sum=0; for(i=1;i<=100;i++){ // 年龄sum=0; for(j=i;j<=100;j++){ // 蜡烛数sum=sum+j;if(sum==236){ cout<<i<<endl;break;}}}}3. 方格填数如下的10 个格子填入0~9 的数字。
要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻) 一共有多少种可能的填数方案?请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
// 用dfs 求#include<iostream> #include<cstring> #include<cmath> using namespace std;const int maxn=4;int mp[maxn][maxn];int flag[10];int ans=0;int init() {memset(mp,-10, sizeof mp); memset(flag,0, sizeof flag);}int fx[4]= {0,-1,-1,-1},fy[4]= {-1,-1,0,1};int check(int i,int j) {for(int f=0; f<4; f++) {if(abs(mp[i][j]-mp[i+fx[f]][j+fy[f]])!=1||i+fx[f]<1||j+fy[f]>4||j+fy[f]<1 ) continue;elsereturn 0;}return 1;}void dfs(int i,int j) {if(i==3&&j==4) {ans++;return ;}for(int num=0; num<=9; num++) {if(!flag[num]) { mp[i][j]=num; flag[num]=1; if(check(i,j)) if(j==4) dfs(i+1,1);elsedfs(i,j+1); flag[num]=0;}}}int main() {init();dfs(1,2);cout<<ans;}// 暴力求解#include <iostream>using namespace std;int ans=0;void swap(int *a,int *b){int *c;c=a;a=b;b=c;}int f(int a[])// 判断这种排列组合是否符合题意{if(a[0]-a[4]==-1||a[0]-a[4]==1) return 0;if(a[3]-a[4]==-1||a[3]-a[4]==1) return 0;if(a[5]-a[4]==-1||a[5]-a[4]==1) return 0;if(a[7]-a[4]==-1||a[7]-a[4]==1)return 0;if(a[8]-a[4]==-1||a[8]-a[4]==1)return 0;if(a[9]-a[4]==-1||a[9]-a[4]==1)return 0;if(a[1]-a[4]==-1||a[1]-a[4]==1)return 0;if(a[1]-a[5]==-1||a[1]-a[5]==1)return 0;if(a[1]-a[6]==-1||a[1]-a[6]==1)return 0;if(a[0]-a[5]==-1||a[0]-a[5]==1)return 0;if(a[2]-a[5]==-1||a[2]-a[5]==1)return 0;if(a[8]-a[5]==-1||a[8]-a[5]==1)return 0;if(a[9]-a[5]==-1||a[9]-a[5]==1)return 0;if(a[6]-a[5]==-1||a[6]-a[5]==1)return 0;if(a[6]-a[9]==-1||a[6]-a[9]==1)return 0;if(a[6]-a[2]==-1||a[6]-a[2]==1)return 0;if(a[3]-a[0]==-1||a[3]-a[0]==1)return 0;if(a[3]-a[7]==-1||a[3]-a[7]==1)return 0;if(a[8]-a[7]==-1||a[8]-a[7]==1)return 0;if(a[8]-a[3]==-1||a[8]-a[3]==1)return 0;if(a[9]-a[8]==-1||a[9]-a[8]==1)return 0;if(a[1]-a[0]==-1||a[1]-a[0]==1)return 0;if(a[1]-a[2]==-1||a[1]-a[2]==1)return 0;}void perm(int a[],int m,int len)//列举出0-9 所有的组合进行判断{if(m==len-1){if(f(a)) ans++;return ;}for(int i=m;i<len;i++){swap(a[m],a[i]); perm(a,m+1,len); swap(a[m],a[i]);} } int main() {int a[10] = {0,1,2,3,4,5,6,7,8,9}; perm(a,0,10);cout<<ans<<endl; return 0;}4. 快速排序排序在各种场合经常被用到。
蓝桥杯试题和答案
/*很久以前,T王国空前繁荣。
为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。
为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。
同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。
J是T国重要大臣,他巡查于各大城市之间,体察民情。
所以,从一个城市马不停蹄地到另一个城市成了J最常做的事情。
他有一个钱袋,用于存放往来城市间的路费。
聪明的J发现,如果不在某个城市停下来修整,在连续行进过程中,他所花的路费与他已走过的距离有关,在走第x千米到第x+1千米这一千米中(x是整数),他花费的路费是x+10这么多。
也就是说走1千米花费11,走2千米要花费23。
J大臣想知道:他从某一个城市出发,中间不休息,到达另一个城市,所有可能花费的路费中最多是多少呢?输入格式:输入的第一行包含一个整数n,表示包括首都在内的T王国的城市数城市从1开始依次编号,1号城市为首都。
接下来n-1行,描述T国的高速路(T国的高速路一定是n-1条)每行三个整数Pi, Qi, Di,表示城市Pi和城市Qi之间有一条高速路,长度为Di 千米。
输出格式:输出一个整数,表示大臣J最多花费的路费是多少。
样例输入:51 2 21 3 12 4 52 5 4样例输出:135样例说明:大臣J从城市4到城市5要花费135的路费。
*/#include<stdio.h>#include<string.h>int a[1000][1010];int main(){int i,j,k,n,x,y,z,max,sum;scanf("%d",&n);for(i=0;i<=n;i++)for(j=0;j<=n;j++)a[i][j]=999999;for(i=1;i<n;i++){scanf("%d%d%d",&x,&y,&z);a[x][y]=z;a[y][x]=z;}max=sum=0;for(k=1;k<=n;k++)for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(i!=j){a[i][j]=a[i][k]+a[k][j]<a[i][j]?a[i][k]+a[k][j]:a[i][j];}for(i=0;i<=n;i++)for(j=0;j<=n;j++)if(a[i][j]<999999)max=a[i][j]>max?a[i][j]:max;for(i=1;i<=max;i++)sum+=(i+10);printf("%d\n",sum);return0;}。
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分)下面函数旳目旳是求出某个日期是该年度旳第几天。
蓝桥杯ACM决赛经典试题及其详解
/*入门训练A+B问题问题描述输入A、B,输出A+B。
说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标。
输入格式输入的第一行包括两个整数,由空格分隔,分别表示A、B。
说明:“输入格式”是描述在测试你的程序时,所给的输入一定满足的格式。
做题时你应该假设所给的输入是一定满足输入格式的要求的,所以你不需要对输入的格式进行检查。
多余的格式检查可能会适得其反,使用你的程序错误。
在测试的时候,系统会自动将输入数据输入到你的程序中,你不能给任何提示。
比如,你在输入的时候提示“请输入A、B”之类的话是不需要的,这些多余的输出会使得你的程序被判定为错误。
输出格式输出一行,包括一个整数,表示A+B的值。
说明:“输出格式”是要求你的程序在输出结果的时候必须满足的格式。
在输出时,你的程序必须满足这个格式的要求,不能少任何内容,也不能多任何内容。
如果你的内容和输出格式要求的不一样,你的程序会被判断为错误,包括你输出了提示信息、中间调试信息、计时或者统计的信息等。
样例输入12 45说明:“样例输入”给出了一组满足“输入格式”要求的输入的例子。
这里给出的输入只是可能用来测试你的程序的一个输入,在测试的时候,还会有更多的输入用来测试你的程序。
样例输出57说明:“样例输出”给出了一组满足“输出格式”要求的输出的例子。
样例输出中的结果是和样例输入中的是对应的,因此,你可以使用样例的输入输出简单的检查你的程序。
要特别指出的是,能够通过样例输入输出的程序并不一定是正确的程序,在测试的时候,会用很多组数据进行测试,而不局限于样例数据。
有可能一个程序通过了样例数据,但测试的时候仍只能得0分,可能因为这个程序只在一些类似样例的特例中正确,而不具有通用性,再测试更多数据时会出现错误。
比如,对于本题,如果你写一个程序不管输入是什么都输入57,则样例数据是对的,但是测试其他数据,哪怕输入是1和2,这个程序也输出57,则对于其他数据这个程序都不正确。
蓝桥杯—单词分析(C语言解法)
蓝桥杯—单词分析(C语⾔解法)题⽬描述⼩蓝正在学习⼀门神奇的语⾔,这门语⾔中的单词都是由⼩写英⽂字母组成,有些单词很长,远远超过正常英⽂单词的长度。
⼩蓝学了很长时间也记不住⼀些单词,他准备不再完全记忆这些单词,⽽是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助⼩蓝,给了⼀个单词后,帮助他找到出现最多的字母和这个字母出现的次数。
输⼊描述输⼊⼀⾏包含⼀个单词,单词只由⼩写英⽂字母组成。
对于所有的评测⽤例,输⼊的单词长度不超过 1000。
输出描述输出两⾏,第⼀⾏包含⼀个英⽂字母,表⽰单词中出现得最多的字母是哪个。
如果有多个字母出现的次数相等,输出字典序最⼩的那个。
第⼆⾏包含⼀个整数,表⽰出现得最多的那个字母在单词中出现的次数。
输⼊输出⽰例输⼊lianqiao输出a2输⼊longlonglongistoolong输出o6思路与注意将字母的数量存储在对应的Askii码所在下标中,⽤max以及ch记录当前数量最⼤的字母数量及字母若数量相同,取Ask i i较⼩的代码#include<stdio.h>#include<string.h>int main(){int i,max=0;char ch;int a[200]={0};char s[1000];scanf("%s",s);for(i=0;i<strlen(s);i++){a[s[i]]++;if(max<a[s[i]]){max=a[s[i]];ch=s[i];}if(max==a[s[i]]){if(ch>s[i])ch=s[i];}}printf("%c\n%d",ch,max);return 0;}。
蓝桥杯阶乘计算c语言
蓝桥杯阶乘计算c语言
阶乘计算是程序设计中常见的问题之一,而蓝桥杯竞赛中也常常会涉及到阶乘计算的题目。
在c语言中,可以通过循环、递归等方式来实现阶乘计算。
循环实现阶乘计算:
int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
递归实现阶乘计算:
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n-1);
}
}
需要注意的是,在计算阶乘的过程中,可能会出现整型溢出的问题。
因此,在实现阶乘计算时,应该考虑到数据类型的范围,避免发
生溢出的情况。
在蓝桥杯竞赛中,阶乘计算往往是一道基础题,但是对于初学者来说,也是一道不容易掌握的题目。
因此,在学习c语言编程时,需要多加练习,不断提高自己的编程能力。
蓝桥杯阶乘计算c语言
蓝桥杯阶乘计算c语言阶乘是指一个数的阶乘是此数与所有小于它的正整数的积。
对于正整数n,其阶乘记作n!,可以用递归或循环来计算。
下面是一个使用C语言计算阶乘的示例。
```c#include <stdio.h>//递归计算阶乘long long factorial_recursive(int n)if (n == 0)return 1;} elsereturn n * factorial_recursive(n-1);}//循环计算阶乘long long factorial_iterative(int n)long long result = 1;for(int i = 1; i <= n; i++)result *= i;}return result;int maiint n;printf("请输入一个正整数:");scanf("%d", &n);if (n < 0)printf("输入无效,请输入一个正整数。
\n");return 0;}//递归计算阶乘long long result_recursive = factorial_recursive(n);printf("%d 的阶乘(递归)是 %lld\n", n, result_recursive); //循环计算阶乘long long result_iterative = factorial_iterative(n);printf("%d 的阶乘(循环)是 %lld\n", n, result_iterative); return 0;```在上述代码中,我们首先定义了两个函数,一个是`factorial_recursive`用于递归计算阶乘,另一个是`factorial_iterative`用于循环计算阶乘。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)b+=i;for(n=0,i=1;i<=b/2;i++)if(b%i==0)n+=i;if(n==a&&a!=b&&a<b)printf("%d-%d\n",a,b);}return0;}2、世纪末的星期:曾有邪教称1999年12月31日是世界末日。
当然该谣言已经不攻自破。
还有人称今后的某个世纪末的12月31日䊵如果是星期一则会....有趣的是任何一个世纪末的年份的12月31日都不可能是星期一!!于是“谣言制造商”又修改为星期日......1999年的12月31日是星期五,请问,未来哪一个离我们最近的一个世纪末年即xx99年的12月31日正好是星期天,即星期日请回答该年份,只写这个4位整数,不要写12月31等多余信息#include<stdio.h>int 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;}if(days%7==0&&i%100==99){printf("%d",i);break;}i++;}return0;}3、马虎的算式:小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
有一次蕌老师出的题目是36x495=?他却给抄成了396x45=?但结果却很戏剧性蕌他的答案竟然是对的因为36*495=396*45=17820类似这样的巧合情况可能还有很多,比如䊵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);return0;}一、啤酒和饮料啤酒每罐2.3元,饮料每罐1.9元。
小明买了若干啤酒和饮料,一共花了82.3元。
我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。
注意:答案是一个整数。
请通过浏览器提交答案。
不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。
#include<stdio.h>int main(){int i,j;for(i=1;i<36;i++){for(j=1;j<44;j++){if((i*2.3+j*1.9==82.3)&&(i<j))printf("%d%d\n",i,j);}}return0;}二、高斯日记大数学家高斯有个好习惯:无论如何都要记日记。
他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。
这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。
在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。
高斯获得博士学位的那天日记上标着:8113请你算出高斯获得博士学位的年月日。
提交答案的格式是:1799-07-16,例如:1980-03-21请严格按照格式,通过浏览器提交答案。
注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。
#include<stdio.h>int main(){int year=1777,month=4,day=30;int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31};for(int i=1;i<8113;i++){if(2==month&&year%4==0&&year%100!=0||year%400==0)a[2]=29;elsea[2]=28;day=day%a[month]+1;if(day==1){month=month%12+1;if(month==1)year++;}}printf("%d-%d-%d",year,month,day);return0;}三、排它平方数小明正看着203879这个数字发呆。
原来,203879*203879=41566646641这有什么神奇呢?仔细观察,203879是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。
具有这样特点的6位数还有一个,请你找出它!再归纳一下筛选要求:1.6位正整数2.每个数位上的数字不同3.其平方数的每个数位不含原数字的任何组成数位答案是一个6位的正整数。
请通过浏览器提交答案。
注意:只提交另一6位数,题中已经给出的这个不要提交。
注意:不要书写其它的内容(比如:说明性的文字)。
#include<stdio.h>#include<string.h>int judge(int n){int num=n;int vis[10];memset(vis,0,sizeof(vis));/*#include<string.h>常用于数组的初始化,将它的所有元素初始化为0memset(f数组名,0要赋予的值,sizeof(f)数组元素个数)*/ while(num){int tmp=num%10;num/=10;if(vis[tmp])return0;vis[tmp]=1;}long long n1=(long long)n*n;while(n1){int tmp=n1%10;n1/=10;if(vis[tmp])return0;}return1;}int main(){int i;for(i=123456;i<=987654;i++){if(judge(i)){printf("%d\n",i);}}return0;}五、换分币用一元人民币兑换成1分、2分和5分硬币,共有多少种不同的兑换方法。
#include<stdio.h>int main(){int a,b,c,i=0;for(a=1;a<=100;a++){for(b=0;b<=50;b++){for(c=1;c<=20;c++){if(a*1+b*2+c*5==100)i++;}}}printf("%d",i);getch();return0;}(待看)标题:三部排序一般的排序有许多经典算法,如快速排序、希尔排序等。
但实际应用时,经常会或多或少有一些特殊的要求。
我们没必要套用那些经典算法,可以根据实际情况建立好的解法。
比如,对一个整型数组中的数字进行分类排序:使得负数都靠左端,正数都靠右端,0在中部。
注意问题的特点是:负数区域和正数区域内并不要求有序。
可以利用这个特点通过1次线性扫描就结束战斗!!以下的程序实现了该目标。
其中x指向待排序的整型数组,len是数组的长度。
#include<stdio.h>void sort3p(int*x,int len){int p=0;int left=0;int right=len-1;while(p<=right){if(x[p]<0){int t=x[left];x[left]=x[p];x[p]=t;left++;p++;}else if(x[p]>0){int t=x[right];x[right]=x[p];x[p]=t;right--;}elsep++;/*填空*/}}int main(int argc,char*argv[]){int a[]={25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0};sort3p(a,14);for(int i=0;i<14;i++)printf("%d",a[i]);printf("\n");return0;}七、古堡算式福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE*?=EDCBA他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”华生:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把ABCDE所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!#include<stdio.h>int main(){int i;for(i=10000;i<100000;i++){int a=i/10000;int b=i%10000/1000;int c=i%10000%1000/100;int d=i%10000%1000%100/10;int e=i%10;if(a==b||a==c||a==d||a==e||b==c||b==d||b==e||c==d||c==e||d==e){continue;}int y=e*10000+d*1000+c*100+b*10+a;if(y%i==0){printf("%d*%d=%d",i,y/i,y);}}}。