进制转换

发布时间 2023-11-05 18:29:30作者: 20231420

1.十进制到n进制的转换(n<10)

原因:不知道如何实现A~F的输出。

原代码,只能实现到n进制,n<10
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int newbase,num,q=1,r,newnum=0,count=1,i;
    printf("the new base:");
    scanf("%d",&newbase);
    printf("the number to be converted:");
    scanf("%d",&num);
    while(q!=0)
    {
        q=num/newbase;
        r=num%newbase;
        for(i=1;i<count;i++)
                r=r*10;
        newnum=newnum+r;
        num=q;
        count++;
    }
    printf("the new number:%d\n",newnum);
    return 0;
}

2.十六进制

暂时无法实现十以上进制的转换,我便向AI求助。
以下是求助过程。

3.新代码

新代码,能实现到n进制,n<=16
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int newbase,number,q=1,r,index=0,i;
    char num[100];
    printf("the new base:");
    scanf("%d",&newbase);
    printf("the number to be converted:");
    scanf("%d",&number);

    while(q!=0)
    {
        q=number/newbase;
        r=number%newbase;
        if(r<10)
            num[index]=r+'0';
        else
            num[index]=r-10+'A';
        index++;
        number=q;
    }
    printf("the new number:");
    for(i=index; i>=0; i--)
        printf("%c",num[i]);
    return 0;
}

4.运行结果

5.经验总结

(1)学会了在C语言中通过数组储存多个同类型元素。
(2)回忆了字符的存储、输出。