2016蓝桥杯C语言算法题
蓝桥比赛练习C语言[5篇]
![蓝桥比赛练习C语言[5篇]](https://img.taocdn.com/s3/m/b28120ac6429647d27284b73f242336c1eb930e0.png)
蓝桥比赛练习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列的图形。
2016-蓝桥杯-省赛-C语言大学A组全部真题

第七届蓝桥杯大赛个人赛省赛真题(软件类)C/C++ 大学A组考生须知:●考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试题。
●考试时间为4小时。
时间截止后,提交答案无效。
●在考试强制结束前,选手可以主动结束考试(需要身份验证),结束考试后将无法继续提交或浏览答案。
●选手可浏览自己已经提交的答案。
被浏览的答案允许拷贝。
●对同一题目,选手可多次提交答案,以最后一次提交的答案为准。
●选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等与身份有关的信息或其它与竞赛题目无关的内容,否则成绩无效。
●选手必须通过浏览器方式提交自己的答案。
选手在其它位置的作答或其它方式提交的答案无效。
●试题包含三种类型:“结果填空”、“代码填空”与“程序设计”。
结果填空题:要求选手根据题目描述直接填写结果。
求解方式不限。
不要求源代码。
把结果填空的答案直接通过网页提交即可,不要书写多余的内容。
代码填空题:要求选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
把代码填空的答案(仅填空处的答案,不包括题面已存在的代码或符号)直接通过网页提交即可,不要书写多余的内容。
使用ANSI C/ANSI C++ 标准,不要依赖操作系统或编译器提供的特殊函数。
程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。
考生的程序只有能运行出正确结果才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
代码中允许使用STL类库。
注意: main函数结束必须返回0注意: 所有依赖的函数必须明确地在源文件中#include <xxx>,不能通过工程设置而省略常用头文件。
所有源码必须在同一文件中。
蓝桥杯 c 试题及答案

蓝桥杯 c 试题及答案蓝桥杯是中国著名的信息技术竞赛,被誉为“程序员的奥林匹克”。
每年举办的蓝桥杯分为初赛和复赛两个阶段,覆盖了大学生、高中生和中学生等多个年龄段。
本文将为大家介绍蓝桥杯 C 试题及答案,希望能对参赛者有所帮助。
一、试题概述蓝桥杯 C 试题是蓝桥杯竞赛中的一道编程题目,通常难度较大,需要对编程语言有一定的掌握和理解。
该题目主要涉及算法、数据结构、编程思想等方面的知识,要求选手提交一个能够运行的程序,并输出符合题目要求的结果。
二、题目要求蓝桥杯 C 试题通常以具体的问题场景为背景,要求选手使用编程语言解决实际的问题。
试题要求选手根据题目描述,编写相应的程序代码,并在规定的时间内提交答案。
三、解题思路解决蓝桥杯 C 试题首先需要仔细阅读题目要求和描述,理解问题的背景和具体需求。
在编写程序时,需要灵活运用所学的算法和数据结构知识,合理选择合适的数据类型和数据结构来解决问题。
解题思路可以从以下几个方面展开:1. 根据题目描述建立适当的数据模型;2. 分析题目需求,确定解题思路;3. 编写代码实现解题思路;4. 测试代码,确保程序运行正确。
四、参考答案由于蓝桥杯竞赛的试题内容每年都有所变化,因此无法提供具体的参考答案。
但是,在参加蓝桥杯之前,可以通过学习历年的蓝桥杯 C 试题,了解题型和解题方法,提高自己的编程能力。
在备战蓝桥杯时,可以参考以下几点建议:1. 多做练习题,熟悉各种题型;2. 学习常用的算法和数据结构,如排序、查找、树、图等;3. 加强对编程语言的掌握,熟悉常用的语法和函数库;4. 参加类似的编程比赛,提高解题速度和编码能力;5. 与他人讨论、交流,学习他人的解题思路和方法。
总之,蓝桥杯 C 试题及答案是参赛者备战蓝桥杯竞赛的重要参考资料。
希望本文的介绍能够对参赛者有所帮助,并祝愿大家在蓝桥杯竞赛中取得好成绩!。
2016蓝桥杯C语言算法题

return -1;
}
//判断是否有某个学生的学号或名字等于data,如果有,函数返回该学生在student数组中的序号,否则返回-
for(i=0;i<n;i++)
{
if(!strcmp(data,student[i].name)||!strcmp(data,student[i].num))
return i;
输入输出样例
样例输入
769
样例输出
7 6 9
*/
#include <stdio.h>
void getResult(int num)
{
//出口
if(num<10)
{
printf("%d ",num);
return ;
}
//递归
getResult(num/10);
printf("%d ",num%10);
}
main()
{
int n;
scanf("%d",&n);
getResult(n);
printf("\n");
return 0;
}
/*
算法训练 薪水计算
问题描述
编写一个程序,计算员工的周薪。薪水的计算是以小时为单位,如果在一周的时间内,员工工作的时间不超过40 个小时,那么他/她的总收入等于工作时间乘以每小时的薪水。如果员工工作的时间在40 到50 个小时之间,那么对于前40 个小时,仍按常规方法计算;而对于剩余的超额部分,每小时的薪水按1.5 倍计算。如果员工工作的时间超过了50 个小时,那么对于前40 个小时,仍按常规方法计算;对于40~50 个小时之间的部分,每小时的薪水按1.5 倍计算;而对于超出50 个小时的部分,每小时的薪水按2 倍计算。请编写一个程序,输入员工的工作时间和每小时的薪水,然后计算并显示他/她应该得到的周薪。
蓝桥c语言的试题及答案

蓝桥c语言的试题及答案1. 以下哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. intD. variable$答案:B2. 在C语言中,一个整型变量占用的字节数是多少?A. 1B. 2C. 4D. 8答案:C3. 下列哪个选项是C语言中正确的字符串字面量?A. "Hello, World!"B. 'Hello, World!'C. "Hello, World!"D. "Hello, World!"答案:A4. 在C语言中,下列哪个关键字用于定义函数?A. structB. intC. voidD. return答案:B5. 以下哪个选项是C语言中正确的数组声明?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5] = {1, 2, 3};D. int arr[] = {1, 2, 3, 4, 5, 6};答案:A6. 下列哪个选项是C语言中正确的指针声明?A. int *ptr;B. int *ptr = 0;C. int ptr = 0;D. int *ptr = 5;答案:A7. 在C语言中,下列哪个选项是正确的文件包含指令?A. #include <stdio.h>B. #include "stdio.h"C. #include <stdio.h>D. #include "stdio.h"答案:A8. 下列哪个选项是C语言中正确的条件语句?A. if (x > 0) { ... }B. if x > 0 { ... }C. if (x > 0) ...;D. if x > 0 ...;答案:A9. 在C语言中,下列哪个选项是正确的循环语句?A. for (int i = 0; i < 10; i++) { ... }B. for (int i = 0; i <= 10; i--) { ... }C. for (int i = 0; i < 10; i++) ...;D. for (int i = 0; i < 10; i--) { ... }答案:A10. 下列哪个选项是C语言中正确的函数定义?A. int main() { ... }B. int main() { ... }C. void main() { ... }D. int main(void) { ... }答案:D。
蓝桥杯算式问题c语言

蓝桥杯算式问题c语言
在蓝桥杯算式问题中,要求我们编写一个C语言程序,计算给定的算式,并输出结果。
题目描述:
输入格式:一行字符串,表示算式,长度不超过500。
输出格式:一个整数,表示算式的结果。
若算式有误,则输出error。
算式中可能出现的字符:
数字:0-9
运算符:+,-,*,/
括号:(,)
算式中的空格可以忽略。
算式的处理过程:
1、将中缀表达式转换为后缀表达式。
2、计算后缀表达式的值。
解题思路:
1、中缀表达式转后缀表达式:
先定义一个栈来存储运算符和左括号。
从左到右扫描中缀表达式,若遇到数字,直接输出;若遇到运算符,则将其与栈顶运算符比较,如果栈顶优先级高于等于当前运算符,则将栈顶运算符输出,直到栈顶运算符优先级小于当前运算符,或者栈顶为左括号,再将当前运算符压入栈中;若遇到左括号,则将其压入栈中;若遇到右括号,则将
栈中左括号之前的运算符全部输出,左括号弹出栈。
2、后缀表达式求值:
定义一个栈来存储数字。
从左到右扫描后缀表达式,若遇到数字,则直接压入栈中;若遇到运算符,则弹出栈顶两个元素进行计算,并将结果压入栈中;若遇到非法字符,则输出error。
最后栈中剩下的元素即为表达式的值。
蓝桥杯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语言中指针的概念。
2016第七届蓝桥杯大赛CC大学C组省赛真题详解

2016第七届蓝桥杯⼤赛CC⼤学C组省赛真题详解第七届蓝桥杯⼤赛个⼈赛省赛(软件类)C/C++ ⼤学C组⼀、试题 (2)1、报纸页数 (2)2、煤球数⽬ (2)3、平⽅怪圈 (2)4、打印⽅格 (2)5、快速排序 (4)6、凑算式 (5)7、寒假作业 (6)8、冰雹数 (6)9、卡⽚换位 (7)10、密码脱落 (9)⼆、我的作答 (10)1、2852 (10)2、171700 (10)3、145 (10)4、for(col=0; col5、swap(a,p,j) (10)6、32990530 (10)7、4(猜的) (10)8、代码 (10)9、 (10)10、代码 (10)⼀、试题1、报纸页数X星球⽇报和我们地球的城市早报是⼀样的,都是⼀些单独的纸张叠在⼀起⽽已。
每张纸印有4版。
⽐如,某张报纸包含的4页是:5,6,11,12,可以确定它应该是最上边的第2张报纸。
我们在太空中捡到了⼀张X星球的报纸,4个页码分别是:1125,1126,1727,1728请你计算这份报纸⼀共多少页(也就是最⼤页码,并不是⽤了⼏张纸哦)?请填写表⽰总页数的数字。
注意:你提交的应该是⼀个整数,不要填写任何多余的内容或说明性⽂字。
2、煤球数⽬有⼀堆煤球,堆成三⾓棱锥形。
具体:第⼀层放1个,第⼆层3个(排列成三⾓形),第三层6个(排列成三⾓形),第四层10个(排列成三⾓形),....如果⼀共有100层,共有多少个煤球?请填表⽰煤球总数⽬的数字。
注意:你提交的应该是⼀个整数,不要填写任何多余的内容或说明性⽂字。
3、平⽅怪圈如果把⼀个正整数的每⼀位都平⽅后再求和,得到⼀个新的正整数。
对新产⽣的正整数再做同样的处理。
如此⼀来,你会发现,不管开始取的是什么数字,最终如果不是落⼊1,就是落⼊同⼀个循环圈。
请写出这个循环圈中最⼤的那个数字。
请填写该最⼤数字。
注意:你提交的应该是⼀个整数,不要填写任何多余的内容或说明性⽂字。
4、打印⽅格⼩明想在控制台上输出m x n 个⽅格。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输出格式:输出一个整数。
输入输出样例
样例输入
1101
样例输出
13
*/
#include <stdio.h>
#include <math.h>
#include <string.h>
#define MaxSize 32
void print2Return10(char str[])
}
main()
{
int n;
scanf("%d",&n);
getResult(n);
printf("\n");
return 0;
}
/*
算法训练 薪水计算
问题描述
编写一个程序,计算员工的周薪。薪水的计算是以小时为单位,如果在一周的时间内,员工工作的时间不超过40 个小时,那么他/她的总收入等于工作时间乘以每小时的薪水。如果员工工作的时间在40 到50 个小时之间,那么对于前40 个小时,仍按常规方法计算;而对于剩余的超额部分,每小时的薪水按1.5 倍计算。如果员工工作的时间超过了50 个小时,那么对于前40 个小时,仍按常规方法计算;对于40~50 个小时之间的部分,每小时的薪水按1.5 倍计算;而对于超出50 个小时的部分,每小时的薪水按2 倍计算。请编写一个程序,输入员工的工作时间和每小时的薪水,然后计算并显示他/她应该得到的周薪。
gets(str);
print2Return10(str);
return 0;
}
/*
算法训练 数位分离
问题描述
编写一个程序,输入一个1000 以内的正整数,然后把这个整数的每一位数字都分离出来,并逐一地显示。
输入格式:输入只有一行,即一个1000以内的正整数。
输出格式:输出只有一行,即该整数的每一位数字,之间用空格隔开。
}
return -1;
}
void solve(tstudent student[], int n, int m)
{
char x[21], y[21];
int i,a,b;
for (i=0; i<m; i++)
{
//输入两个人的信息X、Y。通过调用findstudent函数判断这两个人能否成为舞伴
scanf("%s %s",x,y);
for(i=0;i<n;i++)
{
scanf("%s %s %c",student[i].name,student[i].num,&student[i].sex);
}
}
int findstudent(tstudent student[], int n, char* data)
{
int i;
if (data == NULL)
输入格式
第一行一个整数n(2<=n<=1000),表示学生人数。接下来的n行每行依次包含一名新生的姓名、学号、性别,分别用一个空格隔开。
之后的一行是一个整数m(1<=m<=1000),表示询问的数目。接着的m行每行包含两个信息(姓名或学号),保证两个信息不属于同一人,中间用一个空格隔开。
输出格式
对于每个询问输出一行,如果两人可以共舞,输出一个大写字母‘Y’,否则输出一个大写字母‘N’。
输入格式:输入只有一行,包括一个整数和一个实数,分别表示工作时间和每小时薪水。
输出格式:输出只有一个实数,表示周薪,保留小数点后2位。
输入输出样例
样例输入
40 50
样例输出
2000.00
*/
#include <stdio.h>
main()
{
int time;
float money,sum;
scanf("%d%f",&time,&money);
if(time<=40)
{
sum=time*money;
printf("%.2f\n",sum);
}
else
{
time-=40;
if(time<=10)
{
sum=time*money*1.5+40*money;
printf("%.2f\n",sum);
/*
算法训练 新生舞会
问题描述
新生舞会开始了。n名新生每人有三个属性:姓名、学号、性别。其中,姓名用长度不超过20的仅由大小写字母构成的字符串表示,学号用长度不超过10的仅由数字构成的字符串表示,性别用一个大写字符‘F’或‘M’表示。任意两人的姓名、学号均互不相同。换言之,每个人可被其姓名或学号唯一确定。给出m对两人的信息(姓名或学号),判断他们是否能共舞。两人能共舞的充要条件为两人性别相异。
#include <string.h>
#define MaxSize 1000+5
typedef struct
{
char name[21];
char num[21];
char sex;
}tstudent;
void readdata(tstudent student[], int n)
{
int i;
//输入N个学生的信息
if((a=findstudent(student,n,x))!=-1&&(b=findstudent(student,n,y))!=-1)
{
if(student[a].sex!=student.sex)
printf("Y\n");
else
printf("N\n");
}
else
{
printf("N\n");
sum = sum*i;
while(sum%10==0)
sum=sum/10;
if(sum/100>0)
sum=sum%100;
}
printf("%d",sum%10);
return 0;
}
/*
算法训练 进制转换
问题描述
编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并把它打印出来。
struct tstudent
{
char name[21];
char num[21];
char sex;
};
void readdata(tstudent student[], int n)
{
输入N个学生的信息
}
int findstudent(tstudent student[], int n, char* data)
if(!num)
return 0;
while(num)
{
i=num%10;
if(i||flag)
{
if(!flag)
{
number=i;
}
else
{
number=number*10+i;
}
flag=1;
}
num/=10;
}
return number;
}
main()
{
int n,m;
scanf("%d%d",&n,&m);
输入格式:输入只有一个整数n。
输出格式:输出只有一个整数,即n! 最右边的那个非0的数字。
输入输出样例
样例பைடு நூலகம்入
6
样例输出
2
*/
#include<stdio.h>
int main(void)
{
int n;
int i;
int sum=1;
scanf("%d",&n);
for(i=n;i>=1;i--)
{
{
scanf("%c",&ch);
printResult(str,ch);
}
return 0;
}
/*
算法训练 阶乘
问题描述
一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5! = 1*2*3*4*5 = 120,因此5!最右边的那个非0的数字是2。再如:7! = 5040,因此7!最右边的那个非0的数字是4。请编写一个程序,输入一个整数n(n<=100),然后输出n! 最右边的那个非0的数字是多少。
输入输出样例
样例输入
769
样例输出
7 6 9
*/
#include <stdio.h>
void getResult(int num)
{
//出口
if(num<10)
{
printf("%d ",num);
return ;
}
//递归
getResult(num/10);
printf("%d ",num%10);
输入格式:输入只有一行,包括两个整数,中间用空格隔开。
输出格式:输出只有一行,即相应的结果。
输入输出样例
样例输入
435 754
样例输出
199