C语言-十进制转十六进制
十进制转十六进制:难点在与如何将超过9的数值转换成字母存储在字符数组中,解决方法是,事先准备一个十六进制每位值的数组dir,之后将待求数对16取余,每次所得的数作为dir的下标,此时dir下标所指向得值就是一次对16取余所求的值,之后将值赋值到指定位置即可。要注意的是dir数组的值从0开始。
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
void main() {
char dir[17] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' }; //预先准备十六进制数值表
char y[50]; //存储结果数组
int a ,f;
int index = 0;//存储结果数组的下标
int temp; //存储十六进制数值表的下标
scanf_s("%d", &a);
f = a;
bool b = true;
while (b) {
temp = a % 16;
y[index++] = dir[temp]; // 对16取余,每次所得的数作为dir的下标,此时dir下标所指向得值就是一次对16取余所求的值,将值赋给y数组
a /= 16; //更新a的值
if (a == 0) {
b = false; //为0时退出
}
}
for (int i = index - 1; i >= 0; i--) {
printf("%c", y[i]);
}
printf("\n");
printf("校正信息 %d 的正确十六进制数值是: %x", f, f);
}
祝每天开心
评论已关闭