站外题60分求调(玄关)
  • 板块学术版
  • 楼主2345A
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/4/14 18:46
  • 上次更新2024/4/14 21:06:02
查看原帖
站外题60分求调(玄关)
565070
2345A楼主2024/4/14 18:46

题目:编程输入任意十进制数N(N:-32767~32767),请输出它对应的二进制、八进制、十六进制;

(注意,当数值超过十之后,就用字母A、B、C……来代替)

比如十六进制数:A1F,代表它最低位是F,也就是15,第二位是1,最高位是A,也就是10

转换成10进制就是10*16*16+1*16+15=2597。

输入 一个数N

输出 对应的二进制、八进制、十六进制;每个一行 j 样例 样例输入1 4 样例输出1

100
4
4
#include<bits/stdc++.h>
using namespace std;
void toBinary(int n) 
{
    int ans = n, i = 0;
    int a[40] = {0};
    while (ans != 0) 
	{
        int b = ans % 2;
        ans = ans / 2;
        a[i++] = b;
    }
    for (int j = i - 1; j >= 0; j--) 
    printf("%d", a[j]);
    printf("\n");
}
void toOctal(int n) 
{
    int a[40] = {0}, i = 0;
    while (n != 0) 
	{
        int o = n % 8;
        n = n / 8;
        a[i++] = o;
    }
    for (int j = i-1; j >=0; j--) 
    printf("%d", a[j]);
    printf("\n");
}

void toHexadecimal(int n) 
{
    char a[40] = {0};
    int i = 0;
    while (n != 0)
	 {
        int h = n % 16;
        if (h < 10) 
        a[i++] = '0' + h;
        else a[i++] = 'A' + (h - 10);
        n = n / 16;
    }
    for (int j = i - 1; j >= 0; j--) 
    printf("%c", a[j]);
    printf("\n");
}

int main() 
{
    long long n;
    cin>>n;
    toBinary(n);
    toOctal(n);
    toHexadecimal(n);
    return 0;
}
2024/4/14 18:46
加载中...