最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

C语言指针—进制转换

互联网 admin 3浏览 0评论

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;}

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)

  1. 暂无评论