请问大家有没有之前的蓝桥杯题?最好有C本科群的答案~ ~ ~发到我邮箱:447472614@qq.com。
这套模拟题主要是模拟命题的形式和考核的范围。真题竞赛题的数量和难度可能和这套模拟题不一样。
描述:
本文包含“代码填空”和“编程”两类题型。
填空题要求参赛选手在理解给定代码工作原理的基础上,补齐缺失的部分,使程序逻辑正确完整。在代码中填入不超过一个语句(即不能出现分号)。
编程题要求玩家设计的程序能够对给定的输入给出正确的输出结果。注意:阅卷中使用的输入数据可能与试卷中给出的示例数据不同。玩家的程序必须是通用的,不仅仅是对试卷中给出的数据有效。
代码填空(满分2分)
形状像“abccba”和“abcba”的字符串称为回文。下面的代码判断一个字符串是否是回文。请填空。
char buf[]= " abcde 11 edcba ";
int x = 1;
for(int I = 0;我& ltstrlen(buf)/2;i++)
如果(___________________)
{
x = 0;
打破;
}
printf("%s\n ",x?“是”:“否”);
用代码填空(共3项)
下面的代码将二进制字符串转换为整数。请填写缺失的语句;
char * p = " 1010110001100 ";
int n = 0;
for(int I = 0;我& ltstrlen(p);i++)
{
n = _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
}
printf("%d\n ",n);
用代码填空(共3项)
假设a,b,c是三个互不相等的整数。下面的代码取出其中的中间值,记录在m中,swap()函数可以交换两个变量的值。请完善代码。
如果(a & gtb)掉期交易。一,& ampb);
如果(b & gt掉期交易。b & amp;c);
______________________;
int m = b;
用代码填空(满分6分)
以下函数的目的是找出日期是一年中的哪一天。努力完善它。
如果传入:年=1980,月=1,日=1。
则返回1。
如果传入:年=1980,月=2,日=1。
然后回到32
int getDayOfYear(int年,int月,int日)
{
int days _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _;
int flag =(year % 4 = = 0 & amp;& amp年份%100!=0) ||年%400 == 0?1 : 0;
int sum = day
for(int I = 0;我& lt月份;i++){
sum+= days[flag][I];
}
返回总和;
}
用代码填空(共7个)
计算三个A和两个B能形成多少种排列(如AAABB,AABBA)的问题是组合数学的研究领域。但在某些情况下,也可以利用计算机运算速度快的优势,通过巧妙的推理来解决问题。下面的程序计算了M A和N B可以组合成多少种不同的排列。请完善它。
int f(int m,int n)
{
if(m==0 || n==0)返回1;
返回_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _;
}
用代码填空(从10中)
(a+b)的n次幂展开式中的各项系数都很有规律。对于n=2,3,4,分别为:1 2 1,1 3 1,1 4 6 4 1。这些系数构成了著名的杨辉三角形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
下面的程序给出了计算第m层第n个系数的计算方法,并尝试改进(m和n都是从0开始计数)。
int f(int m,int n)
{
if(m==0)返回1;
if(n==0 || n==m)返回1;
返回_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _;
}
编程(满分15)
从键盘输入一个整数(1~20)。
然后是1,2,3的数...n * n以顺时针螺旋的形式填入矩阵。例如:
输入数字2,程序输出:
1 2
4 3
输入数字3,程序输出:
1 2 3
8 9 4
7 6 5
输入数字4,程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
编程(满分9分)
从键盘上输入日期,格式为yyyy-M-d m-d。
需要计算日期从1949 65438+10月1有多少天。
例如:
用户输入:1949-10-2。
程序输出:1
用户输入:1949-11-1。
程序输出:31
编程(12)
当你输入信用卡号时,你是否担心输入错误造成的损失?其实你不用这么担心,因为不是所有随机的信用卡号都是合法的,而且必须经过Luhn算法验证。
验证过程:
1,从卡号最后一位开始,加奇数(1,3,5等。)反过来。
2.从卡号的最后一位开始,偶数乘以2(如果乘积是两位数,则减9),然后求和。
3.奇数和与偶数和相加,结果应该能被10整除。
比如卡号54321234567888881。
然后奇数和偶数的分布(红色标注):543212345678881。
奇数和=35
偶数乘以2(有的减9)得1 6 2 6 1 5 7 7,和为35。
最后35+35=70能被10整除,验证视为通过。
请写一个程序,从键盘输入卡号,然后判断验证是否通过。通过显示“成功”,否则显示“失败”。
比如用户输入:356827027232780。
程序输出:成功
编程(满分20分)
任何一个五位数,比如34256,都可以被打乱重新排列得到一个最大数:65432和一个最小数23456。求这两个数的差,得到:41976。对这个数字再次重复上述过程(如果少于5位数,则在前面加0)。如此往复,数字会落入一个圆圈(称为数字黑洞)。
比如刚才的数字会落入【82962,75933,63954,61974】的圈子。
请写一个程序,找出所有可能的5位数的循环,并输出,每个循环占用1行。如果所有五位数字都相同,则循环为[0],可以忽略。循环的输出格式如下所示:
[82962, 75933, 63954, 61974]
数字的顺序可以忽略。