C语言指针—进制转换

  • 将一个十进制n(0<n<10^9)转换为r(1<r<17)进制数输出

具体的思路还是采用"除r取余" ,将得到的余数转换为字符,最后将字符串逆置。

#include<stdio.h>

// 将字符串翻转得到正确的进制转换数
  void strrev(char result[], int len)
    {
    char *p=result, *q=result+len-1;
     while (p < q) {
        int temp = *p;
        *p = *q;
        *q = temp;
        p++;
        q--;
    }
  }

//进制转换函数 
void decimalToR1(int n,int r,char result[]){
    int i=0;
    while(n!=0){
        int rem=n%r; //余数
        if(rem<10){
            result[i++]=rem+'0'; //转换为数字字符
        }
         else {
        result[i++] = rem - 10 + 'A'; // 转换为大写字母字符
        }
       
       n=n/r;
    }
    result[i]='\0';//字符串最后结束符加上

     strrev(result,i);
}

// 也可以这样来写 用字符数组取值引用,也就是一个字符串常量"0123456789ABCDEF"  
void decimalToR2(int n,int r,char result[]){
  int k=0,d;
   while(n!=0){
    d=n%r; //余数
    result[k]="0123456789ABCDEF"[d];
    k++;
    n=n/r;
   }
   result[k]='\0'; //字符串结束符
  strrev(result,k);
}

  
   int main(){
    int n=2019; //原数
    int r=16; //转换进制
    char result[100]; //存储数组
    decimalToR1(n,r,result);
    printf("%d in base %d is %s\n",n,r,result);
    return 0;
    
    } 
   

在这里插入图片描述

 


 

iotl函数可以直接使用得到转换的数,使用如下

#include<stdio.h>
#include<stdlib.h>
int main(){

    int n,r;
    char str[30];
    scanf("%d%d",&n,&r);
    itoa(n,str,r); //使用itoa函数
    puts(str);
    return 0;}

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值