【蓝桥杯】试题集-基础练习-完整版(附百分代码及部分解释)
创始人
2025-05-31 12:40:29
0

“蓝桥杯”练习系统 (lanqiao.cn) 

目录

1.A+B问题

2.数列排序

3.十六进制转八进制

4.十六进制转十进制

5.十进制转十六进制

6.特殊回文数

7.回文数

8.特殊的数字

9.杨辉三角形

10.查找整数

11.数列特征

12.字母图形

13.01字串

14.闰年判断

15.Fibonacci数列

16.圆的面积

17.序列求和

18.阶乘计算

19.高精度加法

20.Huffuman树

21.2n皇后问题

22.报时助手

23.回形取数

24.龟兔赛跑预测

25.芯片测试

26.FJ的字符串

27.Sine之舞

28.数的读法

29.完美的代价

30.矩形面积交

31.矩阵乘法

32.分解质因数

33.字符串对比

34.时间转换 


1.A+B问题

#include
using namespace std;
int main(){int A,B;cin>>A>>B;cout<

2.数列排序

给定一个长度为n的数列,将这个数列按从小到大的顺序排列。

输出一行,按从小到大的顺序输出排序后的数列。

  • 冒泡排序法:基本原理是两两比较待排序数据的大小 ,当两个数据的次序不满足顺序条件时即进行交换,反之,则保持不变,这样每次最小(或最大)的结点就像气泡一样浮到序列的最前位置。
#include
using namespace std;
int main(){int n;cin>>n;int a[n];for(int i=0; i>a[i];	}//COMPAREint temp=0;for(int i=0; i

3.十六进制转八进制

给定n个十六进制正整数,输出它们对应的八进制数。

  • 十六进制:0~9 A~F    0000~1111
  • 八进制:0~7  000~111

C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。 

strcpy(Arry_eight,Arrx.c_str());
#include 
using namespace std;
//二进制-八进制
void transform_8(string Arrx) {int n;n=Arrx.length();//检查是否需要补0 if(n%3==1) Arrx = "00"+Arrx;else if(n%3==2) Arrx = "0"+Arrx;//更新长度n=Arrx.length();char Arry_eight[n];//C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。 strcpy(Arry_eight,Arrx.c_str());int i,j;//八进制位数 i=n/3; //字符数组对应的八进制位数,数组从0开始计数 j=i-1; 	//数组前三均为0,则八进制此处为0,不在记录 if(Arry_eight[0]=='0'&&Arry_eight[1]=='0'&&Arry_eight[2]=='0') {j--;i--;}//八进制的个数为i char Arrx_eight[i];//3位一组 int x, y, z;x=n-1;y=n-2;z=n-3;for(int k= i; k>0; k--){if(Arry_eight[z]=='0'&&Arry_eight[y]=='0'&&Arry_eight[x]=='0') Arrx_eight[j]='0'; else if(Arry_eight[z]=='0'&&Arry_eight[y]=='0'&&Arry_eight[x]=='1') Arrx_eight[j]='1';  else if(Arry_eight[z]=='0'&&Arry_eight[y]=='1'&&Arry_eight[x]=='0') Arrx_eight[j]='2';  else if(Arry_eight[z]=='0'&&Arry_eight[y]=='1'&&Arry_eight[x]=='1') Arrx_eight[j]='3'; else if(Arry_eight[z]=='1'&&Arry_eight[y]=='0'&&Arry_eight[x]=='0') Arrx_eight[j]='4';  else if(Arry_eight[z]=='1'&&Arry_eight[y]=='0'&&Arry_eight[x]=='1') Arrx_eight[j]='5';else if(Arry_eight[z]=='1'&&Arry_eight[y]=='1'&&Arry_eight[x]=='0') Arrx_eight[j]='6';  else if(Arry_eight[z]=='1'&&Arry_eight[y]=='1'&&Arry_eight[x]=='1') Arrx_eight[j]='7'; j--;x-=3;y-=3;z-=3;} for(int p=0; p>n; string aa[n];//输入字符串 for(int i=0; i>aa[i];} //将每个字符串转成字符数组进行定位for(int i=0; i

4.十六进制转十进制

从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

  • 不超过八位十六进制,如果用来存储答案的是int类型的话,输入样例FFFFFFFF,答案是错误的,因为FFFFFFFF对应的十进制数是4294967295大于了int的范围,所以以答案所需要使用的数据类型是长整数类型。
#include
using namespace std;
//转换为二进制 
void transform_2(char num[], int n){string Arry[n];string Arrx;for(int i=0; i>s;char c[s.length()];strcpy(c,s.c_str());transform_2(c,s.length());return 0;
}

5.十进制转十六进制

十六进制数是在程序设计时经常要使用到的一种整数的表示方式。0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
给出一个非负整数,将它表示成十六进制的形式。

#include 
using namespace std;
int main()
{int a;cin>>a;int yu=a%16; //取余数 int shang=a/16;  //取商 char result[200];int count=0;while(shang!=0) //商大于等于0,也就是这个数比16大,17是‘11’(16进制){switch(yu){case 0: result[count]='0';break;case 1: result[count]='1';break;case 2: result[count]='2';break;case 3: result[count]='3';break;case 4: result[count]='4';break;case 5: result[count]='5';break;case 6: result[count]='6';break;case 7: result[count]='7';break;case 8: result[count]='8';break;case 9: result[count]='9';break;case 10: result[count]='A';break;case 11: result[count]='B';break;case 12: result[count]='C';break;case 13: result[count]='D';break;case 14: result[count]='E';break;case 15: result[count]='F';break;}count++;yu=shang%16;//余数shang=shang/16;}if(shang==0) {switch(yu){case 0: result[count]='0';break;case 1: result[count]='1';break;case 2: result[count]='2';break;case 3: result[count]='3';break;case 4: result[count]='4';break;case 5: result[count]='5';break;case 6: result[count]='6';break;case 7: result[count]='7';break;case 8: result[count]='8';break;case 9: result[count]='9';break;case 10: result[count]='A';break;case 11: result[count]='B';break;case 12: result[count]='C';break;case 13: result[count]='D';break;case 14: result[count]='E';break;case 15: result[count]='F';break;}}for(int i=count;i>=0;i--){cout<

6.特殊回文数

123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

#include 
using namespace std;
int main()
{int n;cin>>n;//5位for(int a=1; a<=9;a++){for(int b=0; b<=9; b++){for(int c=0; c<=9; c++){if(a+b+c+b+a==n){cout<

7.回文数

1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

#include 
using namespace std;
int main()
{   for(int a=1; a<=9;a++){for(int b=0; b<=9; b++){if(a*1000+b*100+b*10+a<=9999){cout<

8.特殊的数字

 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。

#include 
using namespace std;
int main()
{   for(int a=1; a<=9;a++){for(int b=0; b<=9; b++){for(int c=0; c<=9; c++){if(a*100+b*10+c==a*a*a+b*b*b+c*c*c){cout<

9.杨辉三角形

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

下面给出了杨辉三角形的前4行:  

   1 

  1 1 

 1 2 1 

1 3 3 1

给出n,输出它的前n行。

#include 
using namespace std;
int main()
{   int n;cin>>n;int lst[n][n+2];memset(lst, 0 ,sizeof lst); //memset的作用一般就是用来初始化数组例如用来将a数组全部归零lst[0][1]=1;for(int i=1; i

10.查找整数

 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

#include 
using namespace std;
int main()
{   int n;cin>>n;int num[n];for(int i=0; i>num[i];}int a;cin>>a;for(int i=0; i

11.数列特征

给出n个数,找出这n个数的最大值,最小值,和。

sort函数的使用!

#include 
using namespace std;
int main()
{   int n;cin>>n;int num[n];for(int i=0; i>num[i];}sort(num, num+n, greater());cout<

12.字母图形

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

#include 
using namespace std;
int main()
{   int n,m;cin>>n>>m;string str1="ABCDEFGHIJKLMNOPQRSTUVWXYZ";for(int i=0; ii-m; j--) {if(j<0) break;res+=str1[j];}//第二部分for(int k=1; k

13.01字串

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

可能有所复杂,实际就是转二进制再补0!

#include 
using namespace std;
void transform_to_2(int x){int yushu=x%2; //余数int shang=x/2; //商char result[32];int count=0;while(shang!=0){switch(yushu){case 0: result[count]='0'; break;case 1: result[count]='1'; break;}count++;yushu=shang%2;shang=shang/2;} if(shang==0){switch(yushu){case 0: result[count]='0'; break;case 1: result[count]='1'; break;}} int n=count;if(n==0)  cout<<"0000";if(n==1)  cout<<"000";else if(n==2)  cout<<"00";else if(n==3)  cout<<"0";for(int i=count; i>=0; i--){cout<

14.闰年判断

闰年口诀:四年一闰·,百年不闰,四百年又闰!

#include 
using namespace std;int main()
{   int y;cin>>y;if((y%400==0)||(y%4==0&&y%100!=0)){cout<<"yes";}else{cout<<"no";}return 0;}

15.Fibonacci数列

Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。

当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

分别求余,相加再求余!

#include 
using namespace std;int main()
{   long long n;cin>>n;long long a[n];a[0]=1;a[1]=1;for(int i=2; i

16.圆的面积

给定圆的半径r,求圆的面积。

PI的表示方式!可以用计算器辅助!

#include 
using namespace std;
//const double PI=3.14159265358979323846;  //要取更精确的值,否则数据大时计算结果有误
int main()
{   int r;cin>>r;double PI=atan(1.0)*4;double s=PI*r*r;cout << fixed << setprecision(7);cout<

17.序列求和

求1+2+3+...+n的值。

  • (首项+末项)*项数/2
#include 
using namespace std;
int main()
{   long long n;cin>>n;long long sum=0;sum = (1+n)*n/2;cout<

18.阶乘计算

C++蓝桥杯 基础练习之阶乘计算

19.高精度加法

C++蓝桥杯 基础练习之高精度加法

补充:

  • int x=(a[alen-1-i])-'0';
  • a[alen-1-i]表示从数组a的最后一个元素开始,向前数第i个元素。
  • (a[alen-1-i])-'0'表示将数组a中的字符型数字转换成整型数字。这是因为在计算机中,字符型数字的存储是按照ASCII码来存储的,'0'的ASCII码是48,因此将字符型数字减去'0'的ASCII码,就可以得到对应的整型数字。

20.Huffuman树

 C++蓝桥杯 基础练习之Huffuman树

21.2n皇后问题

C++蓝桥杯 基础练习之2n皇后

22.报时助手

C++蓝桥杯 基础练习之报时助手

23.回形取数

C++蓝桥杯 基础练习之回形取数

24.龟兔赛跑预测

C++蓝桥杯 基础练习之龟兔赛跑预测

25.芯片测试

C++蓝桥杯 基础练习之芯片的测试

26.FJ的字符串

C++蓝桥杯 基础练习之FJ字符串

27.Sine之舞

C++蓝桥杯 基础练习之Sine之舞

28.数的读法

C++蓝桥杯 基础练习之Sine之舞

29.完美的代价

C++蓝桥杯 基础练习之完美代价

30.矩形面积交

C++蓝桥杯 基础练习之矩形面积交

31.矩阵乘法

C++蓝桥杯 基础练习之矩阵相乘

32.分解质因数

C++蓝桥杯 基础练习之分解质因数

33.字符串对比

C++蓝桥杯 基础练习之字符串对比

34.时间转换 

C++蓝桥杯 基础练习之时间转换 

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
JAVA多线程知识整理 Java多线程基础 线程的创建和启动 继承Thread类来创建并启动 自定义Thread类的子类&#...
【洛谷 P1090】[NOIP... [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G ...
国民技术LPUART介绍 低功耗通用异步接收器(LPUART) 简介 低功耗通用异步收发器...
城乡供水一体化平台-助力乡村振... 城乡供水一体化管理系统建设方案 城乡供水一体化管理系统是运用云计算、大数据等信息化手段࿰...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
中国版ChatGPT在哪些方面... 目录 一、中国巨大的市场需求 二、中国企业加速创新 三、中国的人工智能发展 四、企业愿景的推进 五、...
报名开启 | 共赴一场 Flu... 2023 年 1 月 25 日,Flutter Forward 大会在肯尼亚首都内罗毕...
汇编00-MASM 和 Vis... Qt源码解析 索引 汇编逆向--- MASM 和 Visual Studio入门 前提知识ÿ...
【简陋Web应用3】实现人脸比... 文章目录🍉 前情提要🌷 效果演示🥝 实现过程1. u...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
windows安装JDK步骤 一、 下载JDK安装包 下载地址:https://www.oracle.com/jav...
分治法实现合并排序(归并排序)... 🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨...
在linux上安装配置node... 目录前言1,关于nodejs2,配置环境变量3,总结 前言...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
Linux内核进程管理并发同步... 并发同步并发 是指在某一时间段内能够处理多个任务的能力,而 并行 是指同一时间能够处理...
opencv学习-HOG LO... 目录1. HOG(Histogram of Oriented Gradients,方向梯度直方图)1...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
【Unity 手写PBR】Bu... 写在前面 前期积累: GAMES101作业7提高-实现微表面模型你需要了解的知识 【技...