进制转换
十进制到2,8,16进制的转换#include<stdio.h>
void Decimal_conversion (int x, int y)
{
if(x>0)
{
Decimal_conversion(x/y,y);
if(x%y<10)
printf("%d",x%y);
else
{
switch(x%y)
{
case 10:
printf("A");
case 11:
printf("B");
case 12:
printf("C");
case 13:
printf("D");
case 14:
printf("E");
case 15:
printf("F");
}
}
}
}
int main()
{
int x, y;
scanf("%d%d",&x, &y);
Decimal_conversion(x,y);
return 0;
}
小伙子,进制转换是个常见的问题,我来解释一下。
首先,我们先来看看十进制到二进制的转换吧。
#include <stdio.h>
void DecimalToBinary(int decimal) {
if (decimal == 0) { // 如果十进制数为0,则直接输出0
printf("0");
return;
}
int binary; // 创建一个数组来存放二进制位
int currentIndex = 0; // 记录当前二进制位的索引
while (decimal > 0) {
binary = decimal % 2; // 取余数作为当前位的值
decimal /= 2; // 更新十进制数为除以2的结果
}
// 倒序输出数组中的元素,即得到二进制数
for (int i = currentIndex - 1; i >= 0; i--) {
printf("%d", binary);
}
}
int main() {
int decimal;
printf("请输入一个十进制数:");
scanf("%d", &decimal);
printf("转换成二进制为:");
DecimalToBinary(decimal);
printf("\n");
return 0;
}
好了,现在我们来看看十进制到八进制的转换。
#include <stdio.h>
void DecimalToOctal(int decimal) {
if (decimal == 0) { // 如果十进制数为0,则直接输出0
printf("0");
return;
}
int octal; // 创建一个数组来存放八进制位
int currentIndex = 0; // 记录当前八进制位的索引
while (decimal > 0) {
octal = decimal % 8; // 取余数作为当前位的值
decimal /= 8; // 更新十进制数为除以8的结果
}
// 倒序输出数组中的元素,即得到八进制数
for (int i = currentIndex - 1; i >= 0; i--) {
printf("%d", octal);
}
}
int main() {
int decimal;
printf("请输入一个十进制数:");
scanf("%d", &decimal);
printf("转换成八进制为:");
DecimalToOctal(decimal);
printf("\n");
return 0;
}
最后,我们再来看看十进制到十六进制的转换。
#include <stdio.h>
void DecimalToHexadecimal(int decimal) {
if (decimal == 0) { // 如果十进制数为0,则直接输出0
printf("0");
return;
}
char hexadecimal; // 创建一个数组来存放十六进制位
int currentIndex = 0; // 记录当前十六进制位的索引
while (decimal > 0) {
int remainder = decimal % 16; // 取余数作为当前位的值
if (remainder < 10) {
hexadecimal = remainder + '0'; // 如果余数小于10,转换为对应的字符
} else {
hexadecimal = remainder - 10 + 'A'; // 如果余数大于等于10,转换为对应的字符
}
decimal /= 16; // 更新十进制数为除以16的结果
}
// 倒序输出数组中的元素,即得到十六进制数
for (int i = currentIndex - 1; i >= 0; i--) {
printf("%c", hexadecimal);
}
}
int main() {
int decimal;
printf("请输入一个十进制数:");
scanf("%d", &decimal);
printf("转换成十六进制为:");
DecimalToHexadecimal(decimal);
printf("\n");
return 0;
}
希望这些代码能帮助到你,有问题随时问哦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-4-17 13:23
小伙子,进制转换是个常见的问题,我来解释一下。
首先,我们先来看看十进制到二进制的转换吧。
你咋知道对方的年龄和性别
称呼错了多尴尬 wp231957 发表于 2024-04-17 15:24
你咋知道对方的年龄和性别
称呼错了多尴尬
非常抱歉,我没有办法知道对方的具体年龄和性别。作为一个计算机程序,我只是根据您提供的问题和信息进行回答。如果我犯了错误,请您谅解,并告诉我正确的信息,我会尽力改正。有任何其他问题,请随时告诉我。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 jackz007 于 2024-4-17 15:40 编辑
#include <stdio.h>
#include <string.h>
const char c[] = {"0123456789abcdef" , \
"0123456789ABCDEF"} ;
/* 十进制整型数 d 转换为 x 进制字符串 s,x : 2 ~ 16 */
char * dec2x(char s[] , int d , int x)
{
int i , k , n ;
strcpy(s , "-1") ;
if(x >= 2 && x <= 16) {
for(n = 0 , k = d ; k ; k /= x , n ++) ;
for(i = 0 , k = d , s = '\0' ; k ; k /= x , i ++) s = c ;
}
return s ;
}
/* x 进制字符串 s 转换为十进制整型数,x : 2 ~ 16 */
int x2dec(char s[] , int x)
{
int d , k , n ;
d = -1 ;
if(x >= 2 && x <= 16) {
for(d = n = 0 ; s ; n ++) {
for(k = 0 ; c != s && c != s ; k ++) ;
if(c == s || c == s) {
d = d * x + k ;
} else {
d = -1 ;
break ;
}
}
}
return d ;
}
int main(void)
{
char s ;
int d = 8193 ;
printf("十进制:%d\n" , d) ;
printf("二进制:%s\n" , dec2x(s , d , 2)) ; // 以二进制显示十进制数 8193
printf("八进制:%s\n" , dec2x(s , d , 8)) ; // 以八进制显示十进制数 8193
printf("十六进制:%s\n" , dec2x(s , d , 16)) ; // 以十六进制显示十进制数 8193
printf("十进制:%d\n" , x2dec(s , 2)) ; // 把二进制字符串转换回十进制数显示
printf("十进制:%d\n" , x2dec(s , 8)) ; // 把八进制字符串转换回十进制数显示
printf("十进制:%d\n" , x2dec(s , 16)) ; // 把十六进制字符串转换回十进制数显示
} 按你的方法,case没有break{:10_256:}
页:
[1]