提示:2019年试题B
一、题目描述
小明用字母 A 对应数字 1, B 对应 2,以此类推,用 Z 对应 26。对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27, AB 对应 28, AZ 对应 52, LQ 对应 329。
请问 2019 对应的字符串是什么?
#include
using namespace std;
int main(){ char ch[26]; char ans[10]; for(int i=0;i<26;i++){ ch[i]=‘A’+i; } int num=2019; int index=0; while(num){ int mod=num%26; num=num/26; if(mod==0){ mod=26; } ans[index++]=ch[mod-1]; } for(int i=index-1;i>=0;i–){ cout<<ans[i]; } return 0; } 题目相当于将2019转化为二十六进制。
1.自己编写转换函数
十进制转化为二十六进制采用的方法是÷26取余逆排序 法,具体的做法是:用26除十进制整数,即可得到一个商和余数;再用26除商,又会得到一个商和余数,如此进行。直到商为0,然后把所有余数按逆序排列。
#include <iostream>
using namespace std;
int main(){
char ch[26];
char ans[10];
for(int i=0;i<26;i++){
ch[i]='A'+i;
}
int num=2019;
int index=0;
while(num){
int mod=num%26;
num=num/26;
if(mod==0){
mod=26;
}
ans[index++]=ch[mod-1];
}
for(int i=index-1;i>=0;i--){
cout<<ans[i];
}
return 0;
}
运行结果为BYQ。
三、进制转换总结
十进制转换为n进制的案例程序具体如下。
char Hex[16]={'0','1','2',...,'A','B',...,'E','F'};
cin>>num;
cin>>jz;
do{
result[i++]=num%jz;
num=num/jz;
}while(num!=0);
for(i--;i>=0;i__){
cout<<Hex[result[i]];
}
|