比如说给出一个十进制数字,如何将他转为以字母为形式的二十六进制呢?
这里提供两个思路方法
方法一:以字母为单位结合光标前移操作
#include <stdio.h>
#include <math.h>
int main() {
//创建26进制数组,把二十六个字母储存在一个诉诸中
char n[27];
int i;
for (i = 1; i < 27; i++) {
n[i] = 'A' + i - 1;
}//这里是利用ASCII码把字母全部储存
//输入十进制数字
int x;
scanf("%d", &x);
//定义储存字母的数组,也就是说转进制后的字母会以数组的方式储存
char m[1000];
int j = -1;
//开始转进制 得到逆向的字符串
while (x != 0) {
j++;
int ret;
ret = x % 26;//得到了除以26的余数
m[j] = n[ret];把这个余数和一开始储存的数组做一个转换
x /= 26;
printf("'\b'");//把光标前移一位
}
return 0;
}
复制代码
方法二:先得到逆序的二十六进制数,再通过倒序实现
#include <stdio.h>
#include <math.h>
int main() {
//创建26进制数组
char n[27];
int i;
for (i = 1; i < 27; i++) {
n[i] = 'A' + i - 1;
}
//输入
int x;
scanf("%d", &x);
//定义储存26进制字母的数组
char m[1000];
int j = -1;
//开始转进制 得到逆向的字符串
while (x != 0) {
j++;
int ret;
ret = x % 26;
m[j] = n[ret];
x /= 26;
}
j = j + 1;
//把逆向的字符串正向输出
while (j--) {
printf("%c", m[j]);
}
return 0;
}
复制代码
一个操作是把光标前移,一个是将错就错得到逆序的字符串,再多一步逆序。
输入 1 输出 A
输入36 输出AJ
输入 66666 输出CTPB