欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

练习 C 语言编程这一项就够了 - 第八课,系统转换(05 通道)

最编程 2024-04-16 07:41:44
...

1.十进制(0~2147483647)转任意进制(2进制~16进制)。

#include <stdio.h>

void main() {
    int num, radix, i = 0;
    char res[32] = {0}, table[] = "0123456789ABCDEF";
    printf("请输入一个十进制整数:");
    scanf("%d", &num);
    printf("请输入要转换为几进制:");
    scanf("%d", &radix);
    if (num == 0) {
        res[0] = '0';
        i = 1;
    }
    while (num > 0) {
        res[i++] = table[num % radix];
        num /= radix;
    }
    printf("转换结果:");
    while (--i >= 0) {
        printf("%c", res[i]);
    }
}

2.任意进制(2进制~16进制)转十进制(0~2147483647)。

#include <stdio.h>
#include <string.h>

void main() {
    int res = 0, radix, i, k = 1;
    char num[32], table[] = "0123456789ABCDEF";
    printf("请输入待转换的字符串:");
    scanf("%s", &num);
    printf("待转换字符串为几进制:");
    scanf("%d", &radix);
    for (i = strlen(num) - 1; i >= 0; i--) {
        res += (strchr(table, num[i]) - table) * k;
        k *= radix;
    }
    printf("转换结果:%d", res);
}

3.输入一个二进制字符串,将其转换为对应的十进制。

#include <stdio.h>

void main() {
    char s[10];
    int i, n;
    gets(s);
    for (n = i = 0; s[i] != '\0'; i++) {
        n = n * 2 + s[i] - '0';
    }
    printf("%d", n);
}

4.输入一个八进制字符串,将其转换为对应的十进制。

#include <stdio.h>

void main() {
    char s[10];
    int i, n;
    gets(s);
    for (n = i = 0; s[i] != '\0'; i++) {
        n = n * 8 + s[i] - '0';
    }
    printf("%d", n);
}

5.输入一个十六进制字符串,将其转换为对应的十进制。

#include <stdio.h>

void main() {
    char s[10];
    int i, n;
    gets(s);
    for (n = i = 0; s[i] != '\0'; i++) {
        if (s[i] >= '0' && s[i] <= '9')
            n = n * 16 + s[i] - '0';
        if (s[i] >= 'a' && s[i] <= 'z')
            n = n * 16 + s[i] - 'a' + 10;
        if (s[i] >= 'A' && s[i] <= 'Z')
            n = n * 16 + s[i] - 'A' + 10;
    }
    printf("%d", n);
}