重刷蓝桥杯官网基础题(一)

基础练习 数列排序

#include<bits/stdc++.h>
using namespace std;

const int N=201;
int f[N];
int n;

int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
		cin>>f[i];
	sort(f,f+n);
	for(int i=0;i<n;i++)
		cout<<f[i]<<' ';
	return 0;
}

基础练习 十六进制转八进制

#include<bits/stdc++.h>
using namespace std;

//const int N=201;
//int a[N];
int n;

//思路:先把十六进制转换为二进制,再转换为八进制
//十六进制的一位对应二进制的四位,直接转换成字符串
//二进制转换成八进制时,三位转换成八进制一位,所以提前在前面补足0
//然后把八进制的字符串从第一个不为‘0 ’处开始输出就可以了
void f(string shiliu) 
{
	string er="",ba="";
	int len=shiliu.size();
	for(int i=0;i<len;i++)
	{
		switch(shiliu[i])
		{
			case '0': er+= "0000"; break;
			case '1': er+= "0001"; break;
			case '2': er+= "0010"; break;
			case '3': er+= "0011"; break;
			case '4': er+= "0100"; break;
			case '5': er+= "0101"; break;
			case '6': er+= "0110"; break;
			case '7': er+= "0111"; break;
			case '8': er+= "1000"; break;
			case '9': er+= "1001"; break;
			case 'A': er+= "1010"; break;
			case 'B': er+= "1011"; break;
			case 'C': er+= "1100"; break;
			case 'D': er+= "1101"; break;
			case 'E': er+= "1110"; break;
			case 'F': er+= "1111"; break;
			default: break;	
		}
	}
	int k=er.size()%3;
	if(k==0);
	if(k==1) er="00"+er;
	if(k==2) er="0"+er;
	k=er.size();
	for(int i=0;i<k;i+=3)
	{
		int a=(er[i]-'0')*4+(er[i+1]-'0')*2+(er[i+2]-'0');
		ba+=(a+'0');
	}
	k=ba.size();
	int p=0;
	while(ba[p]=='0') p++;
	for(int i=p;i<k;i++) cout<<ba[i];
	cout<<endl;
}

int main()
{
	cin>>n;
	string s;
	while(n--)
	{
		cin>>s;
		f(s);
	}
	return 0;
}
posted @ 2021-11-12 19:08  longwind7  阅读(57)  评论(0编辑  收藏  举报