任意进制转换

# include<stdio.h>
# include<stdlib.h>
# include<math.h>
# include <string.h> //储存了stelen函数 
int main(void) 
{
//先将n进制转化为10进制

    int a; //a是要输入的某进制
    int e; //检查数组的长度 
    int f;//将字符换成变量保存 
    int g;//收集被N除的余数 
    int sum = 0; //记录a的十进制数 
    int i, j; //定义循环变量
    int n; //n是转换的n进制
    int N; //要转换成的N进制 
    char c[36]; //定义要输出的字符串 
    char d[36];//定义要输入的字符串  
    printf("输入您要转换的进制:");
    scanf("%d", &n); 
    
    printf("\n输入您要转换的进制数:"); 
    scanf("%s", &d);
    
     printf("请输入您要转化的进制:"); 
    scanf("%d", &N);//要转换成的N进制 
 
    e = strlen(d);//获取用户输入了多少个元素的数
    j = 0;
    for(i = e-1; i >= 0; i--)
    {
    
        if (d[i] >= '0' && d[i] <= '9')
        {
            f = d[i] - 48;
            sum = ( pow(n, j )* f )+ sum;
            j++;
        }        
        else if (d[i] >= 'A' && d[i] <= 'Z')
        {
            f = d[i] - 55;
            sum =( pow(n, j)  * f )+ sum;
            j++; 
        }        

     } 
printf("十进制为%d\n",sum); 
// printf("\nsum = %d\t", sum);
// printf("stelen = %d", e);
//****************************************************************将输入的值换成10进制 
    i = 0;//重新给i定义 
    while(sum >= 1)
    {
        g = sum % N;
        if(g >= 0 && g <= 9)
        {
            g = g + 48;
        }
        else if(g >=10 && g<20)
        {
            g = g + 55;
        }
    
        c[i] = g;
        i++;
        sum = sum / N;
        
    } //将十进制转换成其他进制 
//***************************************************************将10进制换成其他进制 
     i--;
    for(j = i; j >= 0; j--)//将余数倒过来 
        printf("%c", c[j]);
    printf("\n");

//***************************************************************倒序输出这个字符数组  

    system("pause"); 
    return 0;
   
}
一个下午就这样没了 ┭┮﹏┭┮

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值