IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 准备蓝桥杯-从0开始 -> 正文阅读

[C++知识库]准备蓝桥杯-从0开始

前言

??2021年这么快就到来了,仿佛2019年刚刚过去;
??仔细想了一下自己这两年都干了点什么啊,也就参加创新创业大赛了吧,什么大创、三创、青创、挑战杯、互联网+都参加了个遍;但是仔细想想哈,纯技术类的比赛还真的是么有怎么参加,就报名了这个蓝桥杯想着边复习边准备这个比赛;
??咱就是说,一看这些题好像啥都不会,还是写个博客记录一下吧


基础篇

1、数组 排序

#include<iostream>
using namespace std;
int main()
{
	short int maxSize;
	int temp;
	cin >>maxSize;
	int group[maxSize];
	for(int i = 0;i<maxSize;i++)
	{
		cin >> group[i];
		for(int j=i;j>0;j--)
		{
			if(group[j]< group[j-1])
			{
				temp = group[j-1];
				group[j-1]=group[j];
				group[j]=temp;
			}
			else
			{
				break;
			}
		}
	}
	for(int i=0;i<maxSize;i++)
		cout<<group[i]<<" ";
}

2、16进制转换8进制

#include<iostream>
#include<string.h>
#include <cmath>
#include<stdio.h>
using namespace std;
int main()
{
	int n;
	scanf("%d", &n); 
	string hex[n];//存放16进制数据 
	string bin[n];//存放2进制数据 
	for(int i=0;i<n;i++)
		scanf("%s",&hex[i]);//输入数据 

		
	for(int i = 0;i<n;i++)//控制行 
	{
		bin[i]="";
		for(int j=0;j<hex[i].length();j++)//控制列 
		{
			switch(hex[i][j])
            {
                case '0' : bin[i] += "0000";break;
				case '1' : bin[i] += "0001";break;
				case '2' : bin[i] += "0010";break;
				case '3' : bin[i] += "0011";break;
				case '4' : bin[i] += "0100";break;
				case '5' : bin[i] += "0101";break;
				case '6' : bin[i] += "0110";break;
				case '7' : bin[i] += "0111";break;
				case '8' : bin[i] += "1000";break;
				case '9' : bin[i] += "1001";break;
				case 'A' : bin[i] += "1010"; break;
                case 'B' : bin[i] += "1011"; break;
                case 'C' : bin[i] += "1100"; break;
                case 'D' : bin[i] += "1101"; break;
                case 'E' : bin[i] += "1110"; break;
                case 'F' : bin[i] += "1111"; break;
                default:
                	break;
            }
		}
		
		if(bin[i].length()%3 == 1) 
			bin[i] = "00" + bin[i];
		else if(bin[i].length()%3 == 2)
			bin[i] = "0" + bin[i];
		 
		for(int j=0;j<bin[i].length()-3;j+=3)
		{
			int end = 4*(bin[i][j]-'0')+ 2*(bin[i][j+1]-'0')+bin[i][j+2]; 
			if(end)
				cout<<end;
		}
		cout<<endl;
	}
	return 0;
}

3、十六进制转换十进制

任何进制转十进制基本上都很简单
例如十六进制的123
12 3 16 = 1 × 1 6 2 + 2 × 1 6 2 + 3 = 16 ( 1 × 1 6 1 + 2 ) + 3 = 16 ( 16 ( 1 ) + 2 ) + 3 123_{16}=1×16^2+2×16^2+3 \\ =16(1×16^1+2)+3\\ =16(16(1)+2)+3 12316?=1×162+2×162+3=16(1×161+2)+3=16(16(1)+2)+3

错在这个unsigned int上面,如果不带这个unsigned,FFFF就会被转换成-1

/*这里想要用printf输出string类型的数据,需要在指针后面加上.c_str()才可以
* 自己把自己缠住的地方:
* 		读进一个数,例如输入796,那么7会读入下标为0的位置,所以转换的时候也是先转换这个7的;
* 犯的错:输入FFFF会输出-1
* 原因:没有看见题目中无符号,错在这个unsigned int上面,如果不带这个unsigned,FFFF就会被转换成-1
*/
#include<stdio.h>
#include<iostream>
#include<string>
#include<math.h>
using namespace std;

unsigned int fun(string str){
	unsigned int sum=0;
	for(int i = 0;str[i]!='\0';i++)
	{
		if(str[i] >= '0'&&str[i]<='9')
			sum = sum*16+str[i]-'0';
		else
			sum=sum*16+10+str[i]-'A';
	}
	return sum;
}

int main()
{
	string hex;
	cin>>hex;
	cout<<fun(hex);
	return 0;
}

4、十进制转换十六进制

当前的数不断的对16进行求余就行,求余完了再除以16并赋值,直到这个数是0

#include<iostream>
using namespace std;
int main()
{
	unsigned int dec;
	cin>>dec;
	
	string hex;
	if(dec == 0)
		cout<<0;
	while(dec>0)
	{
		switch(dec%16)
		{
			case 0:hex+='0';break;
			case 1:hex+='1';break;
			case 2:hex+='2';break;
			case 3:hex+='3';break;
			case 4:hex+='4';break;
			case 5:hex+='5';break;
			case 6:hex+='6';break;
			case 7:hex+='7';break;
			case 8:hex+='8';break;
			case 9:hex+='9';break;
			case 10:hex+='A';break;
			case 11:hex+='B';break;
			case 12:hex+='C';break;
			case 13:hex+='D';break;
			case 14:hex+='E';break;
			case 15:hex+='F';break;
		}
		dec/=16;
	}
	string s(hex.rbegin(),hex.rend());
	cout<<s;
	return 0;
} 
/*逆序输出的原因:例如65534对16求余,先得到的是14,也就是E;后面都是F,所以要先输出最后添加的字符*/

5、特殊回文数

/*本来还准备把六位的和五位放到同一个循环里,后来一想那样的话就不能从大到小输出了*/
/*然后写完这个版本的代码之后还想着搞一个排序算法,后来一想这就已经是排好序的了*/
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
	unsigned int num;
	scanf("%d",&num);
	
	int x,y,z;
	for(x=1;x<=9;x++)
		for(y=0;y<=9;y++)	
			for(z=0;z<=9;z++)
				if(num ==(2*x+2*y+z))
					cout<<x<<y<<z<<y<<x<<endl;
	for(x=1;x<=9;x++)
		for(y=0;y<=9;y++)	
			for(z=0;z<=9;z++)
				if(num == (2*x+2*y+2*z))
					cout<<x<<y<<z<<z<<y<<x<<endl;
	return 0;
}

6、回文数

#include<iostream>
using namespace std;
int main()
{
	int x,y;
	for(x=1;x<=9;x++)
		for(y=0;y<=9;y++)
			cout<<x<<y<<y<<x<<endl;
	return 0;
}

7、 特殊的数字

#include<iostream>
using namespace std;
int main()
{
	int x,y,z;
	for(x=1;x<=9;x++)
		for(y=0;y<=9;y++)
			for(z=0;z<=9;z++)
				if((x*x*x)+(y*y*y)+(z*z*z) == x*100+y*10+z)
					cout<<x<<y<<z<<endl;
	return 0;
} 

8、杨辉三角形

#include<iostream>
using namespace std;
/*
杨辉三角形
 1
 1 1
 1 2 1
 1 3 3 1
 1 4 6 4 1
*/
int main()
{
	int yanghui[34][34] = {{1}};
	int num;//这是要输出的行数 
	cin >> num;
	
	for(int row=0;row<num;row++)
	{
		yanghui[row][0] = 1;
		yanghui[row][row]=1;
		for(int column=2;column<=row;column++)
		/*
			for循环在执行完初始化表达式之后,
			会执行循环变量判定表达式
			这里初始化为2,是为了这个循环里面的语句在第1.2遍循环不被执行
			所以下面为了对下标为1的元素进行赋值,要相应的减一 
		*/ 
			yanghui[row][column-1] = yanghui[row-1][column-2] + yanghui[row-1][column-1]; 
	}

	for(int row=0;row<num;row++)
	{
		for(int column=0;column<=row;column++)
			cout << yanghui[row][column] << ' ';
		cout << endl;
	}

	return 0;
} 

9、查找整数

/*
 * author:stf
 * time: 2022年1月3日19:46:40 
*/
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
	int num;
	int k;
	cin >> num;
	int array[num];
	for(int i = 0;i < num;i++)
		cin >> array[i];

	cin >> k;
	for(int i = 0;i<num;i++){
		if(k == array[i]){
			printf("%d\n",i+1);
			break;
		}
		if(i==(num-1))
			printf("-1");
	}
	return 0;
 }

10、 数列特征

/*
 * author:stf
 * time: 2022年1月3日20:16:59 
*/
#include<iostream>
using namespace std;
int main(){
	int num;
	cin >> num;
	int array[num];
	for(int i = 0;i < num;i++){
		cin >> array[i];
	}
	int min=array[0];
	int max=array[0];
	int result=0;
	for(int i = 0;i < num;i++){
		if(min>array[i])
			min = array[i];
		if(max<array[i])
			max = array[i];
		result += array[i]; 
	}
	printf("%d\n",max);
	printf("%d\n",min);
	printf("%d\n",result);
	return 0;
}

参考文章

第三题.十六进制转十进制 进制转换 字符处理 判断
第四题:1.十进制转十六进制 ??2.c++ string 实现逆序
第五题:自己写的能过,但是我看了这个文章,觉得做法也不错 基础-特殊回文数

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:14:05  更:2022-01-04 13:15:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:40:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码