文章目录
蓝桥 BASIC-10 十进制转十六进制
除16取余,可以体现栈的操作
问题描述:
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有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。
给出一个非负整数,将它表示成十六进制的形式。
输入格式:
输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出格式:
输出这个整数的16进制表示
#include<iostream>
using namespace std;
int main()
{
char a[100];
int i,k,j=0;
cin>>i;
if(i==0)
cout<<'0';
for(;i>0;i/=16)
{
k=i%16;
a[j]=k;
if(k<10)
a[j]=k+48;
j++;
}
j--;
for(;j>=0;j--)
{
switch(a[j]){
case 10:
a[j]='A';
break;
case 11:
a[j]='B';
break;
case 12:
a[j]='C';
break;
case 13:
a[j]='D';
break;
case 14:
a[j]='E';
break;
case 15:
a[j]='F';
break;
default:
break;
}
cout<<a[j];
}
return 0;
}
蓝桥 BASIC-13 数列排序
采用冒泡排序
问题描述:
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式:
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式:
输出一行,按从小到大的顺序输出排序后的数列。
#include<iostream>
using namespace std;
int main()
{
int str[200];
int i=0,n,temp;
cin>>n;
for(i=0;i<n;i++)
cin>>str[i];
for(int j=n;j>0;j--)
{
for(i=0;i<j-1;i++)
{
if(str[i]>str[i+1])
{
temp=str[i+1];
str[i+1]=str[i];
str[i]=temp;
}
}
}
for(i=0;i<n;i++)
cout<<str[i]<<' ';
return 0;
}
蓝桥 BASIC-4 数列特征
问题描述:
给出n个数,找出这n个数的最大值,最小值,和。输入格式:
第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。
输出格式:
输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。
数据规模与约定:
1 <= n <= 10000。
#include<iostream>
using namespace std;
int main()
{
int a[10000];
int max,min,sum=0;
max=-32768;
min=32767;
for(int n;cin>>n;)
{
for(int i=0;i<n;i++)//存数
cin>>a[i];
for(int j=0;j<n;j++)//遍历求最大值
{
if(max<a[j])
max=a[j];
}
for(int k=0;k<n;k++)//遍历求最小值
{
if(min>a[k])
min=a[k];
}
for(int l=0;l<n;l++)//遍历求和
sum+=a[l];
cout<<max<<endl<<min<<endl<<sum<<endl;
}
}
蓝桥 BASIC-11 十六进制转十进制
注意数组的初始化,str>>int强制类型转换为ASCII码,以及类型的取值范围
问题描述:
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
char str[8];
int length=0;
long long int sum=0,f=0;
int a[8]={0,0,0,0,0,0,0,0};
cin>>str;
while(str[length]!='\0')
length++;
for(int i=0;i<length;i++)
{
switch(str[i]){
case 'A':
a[i]=10;
break;
case 'B':
a[i]=11;
break;
case 'C':
a[i]=12;
break;
case 'D':
a[i]=13;
break;
case 'E':
a[i]=14;
break;
case 'F':
a[i]=15;
break;
default:
a[i]=str[i]-48;
break;
}
}
for(int i=0;i<length;i++)
{
f=a[i]*pow(16,(length-i-1));
sum+=f;
}
cout<<sum<<endl;
return 0;
}
蓝桥 BASIC-7 特殊的数字:一个三位数a(百位)b(十位)c(个位)满足i=a3+b3+c3
利用#include<math.h>中的pow(x,y)表示乘方
问题描述:
153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int i,a,b,c;
for(i=100;i<1000;i++)
{
a=i/100;
b=(i%100)/10;
c=(i%100)%10;
if(i==pow(a,3)+pow(b,3)+pow(c,3))
cout<<i<<endl;
}
return 0;
}