C语言 C++ 一维数组

C语言学的不是很懂,希望可以帮助一下
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/233562145876162.jpg "#left"


#include<iostream>
#include<string>
using namespace std; 
 
int main(){
    int Dec;
    int i=0;
    string Hex=" ";
    cin>>Dec;
    do{
        switch(Dec%16)
        {
            case 1: Hex='1'+Hex;break;
            case 2: Hex='2'+Hex;break;
            case 3: Hex='3'+Hex;break;
            case 4: Hex='4'+Hex;break;
            case 5: Hex='5'+Hex;break;
            case 6: Hex='6'+Hex;break;
            case 7: Hex='7'+Hex;break;
            case 8: Hex='8'+Hex;break;
            case 9: Hex='9'+Hex;break;
            case 10: Hex='A'+Hex;break;
            case 11: Hex='B'+Hex;break;
            case 12: Hex='C'+Hex;break;
            case 13: Hex='D'+Hex;break;
            case 14: Hex='E'+Hex;break;
            case 15: Hex='F'+Hex;break;
            case 0: Hex='0'+Hex;break;
            default: break;
        }
        i++;
        Dec=Dec/16;
    }while(Dec);
    cout<<Hex;
    return 0;
}

不断求余16

#include <stdio.h>
int main()
{
    char hex[9] = {0};
    int n;
    scanf("%d",&n);
    int pos = 7;
    while(n>0)
    {
        int m = n%16;
        if(m < 10)
            hex[pos] = m + '0';
        else
            hex[pos] = m + 'A' - 10;
        pos--;
        n=n/16;
    }
    printf("%s",hex+pos+1);
    return 0;
}

除16取余法,用位运算代替除法


#include<stdio.h>

int main(){
    int n,i,len;
    char hex[8];
    scanf("%d",&n);
    for(len=0;n>0;len++){
        hex[len]=n&0xf;//相当于hex[len]=n%16 
        n>>=4;//相当于n=n/16
    }
    for(i=len-1;i>=0;i--){//从高位到地位遍历 
        if(hex[i]>9){//如果hex[i]大于9,转化为对应大写字母输出 
            putchar(hex[i]-10+'A');
        }else{//如果hex[i]小于等于9,转化为数字输出 
            putchar(hex[i]+'0');
        }
    }
}

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^