greeen海 发表于 2024-4-17 13:22:36

进制转换

十进制到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;
}



FishC 发表于 2024-4-17 13:23:04

小伙子,进制转换是个常见的问题,我来解释一下。

首先,我们先来看看十进制到二进制的转换吧。

#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 小助理,如未能正确解答您的问题,请继续追问。

wp231957 发表于 2024-4-17 15:24:45

FishC 发表于 2024-4-17 13:23
小伙子,进制转换是个常见的问题,我来解释一下。

首先,我们先来看看十进制到二进制的转换吧。


你咋知道对方的年龄和性别
称呼错了多尴尬

FishC 发表于 2024-4-17 15:24:52

wp231957 发表于 2024-04-17 15:24
你咋知道对方的年龄和性别
称呼错了多尴尬

非常抱歉,我没有办法知道对方的具体年龄和性别。作为一个计算机程序,我只是根据您提供的问题和信息进行回答。如果我犯了错误,请您谅解,并告诉我正确的信息,我会尽力改正。有任何其他问题,请随时告诉我。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-4-17 15:34:49

本帖最后由 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))                                             ; // 把十六进制字符串转换回十进制数显示
}
页: [1]
查看完整版本: 进制转换