C語言實(shí)現(xiàn)任意進(jìn)制轉(zhuǎn)換器
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)任意進(jìn)制轉(zhuǎn)換器的具體代碼,供大家參考,具體內(nèi)容如下
簡單的C語言任意進(jìn)制轉(zhuǎn)換器
該進(jìn)制轉(zhuǎn)換器可進(jìn)行任意進(jìn)制轉(zhuǎn)換,請看效果圖:
代碼
/** ******函數(shù)聲明 ******進(jìn)制函數(shù),輸入與輸出 void main(); ******返回將n進(jìn)制num轉(zhuǎn)換成的十進(jìn)制數(shù) int NToD(char *num,int n); ******將十進(jìn)制數(shù)d轉(zhuǎn)換成m進(jìn)制數(shù)mnum void DToM(int d,int m,char *mnum); */ #include<stdio.h> #include<stdlib.h> #include<string.h> /** ? 進(jìn)制轉(zhuǎn)換 */ int NToD(char *num,int n); ? ? ? ? ? /**返回將n進(jìn)制num轉(zhuǎn)換成的十進(jìn)制數(shù)*/ void DToM(int d,int m,char *mnum); ?/**將十進(jìn)制數(shù)d轉(zhuǎn)換成m進(jìn)制數(shù)mnum*/ void main() { ? ? int N,M; ? ? ? ? ? ? ? ? ? ? ? ? /**分別代表進(jìn)制數(shù)*/ ? ? char Nnum[20],Mnum[20]; ? ? ? ? ?/**存放N進(jìn)制數(shù)及轉(zhuǎn)換后的M進(jìn)制數(shù)*/ ? ? while(1) ? ? { ? ? ? ? printf("請輸入需要轉(zhuǎn)換的幾進(jìn)制:"); ? ? ? ? scanf("%d",&N); ? ? ? ? printf("請輸入需要轉(zhuǎn)換的幾進(jìn)制數(shù):"); ? ? ? ? scanf("%s",Nnum); ? ? ? ? printf("請輸入需要被轉(zhuǎn)換成為幾進(jìn)制"); ? ? ? ? scanf("%d",&M); ? ? ? ? int d=NToD(Nnum,N); ? ? ? ? ? ? ?/**將N進(jìn)制數(shù)Mnum轉(zhuǎn)換為十進(jìn)制數(shù)d*/ ? ? ? ? DToM(d,M,Mnum); ? ? ? ? ? ? ? ? ?/**將十進(jìn)制數(shù)d轉(zhuǎn)化為M進(jìn)制數(shù)Mnum*/ ? ? ? ? printf("%d進(jìn)制數(shù)%s轉(zhuǎn)換為%d進(jìn)制數(shù)為:%s\n",N,Nnum,M,Mnum); ? ? ? ? printf("\n"); ? ? } } int NToD(char *num,int n) { ? ? int i,weight=1,d=0; ? ? ? ? ? ? ?/**weight存放各位的權(quán)值及num對(duì)應(yīng)的十進(jìn)制數(shù)*/ ? ? int len=strlen(num); ? ? ? ? ? ? /**計(jì)算num的長度*/ ? ? for(int i=len-1;i>=0;i--) ? ? ? ?/**N進(jìn)制數(shù)num轉(zhuǎn)化為十進(jìn)制數(shù)*/ ? ? { ? ? ? ? if(num[i]>='a'&&num[i]<='z') /**將字母映射到對(duì)應(yīng)的十進(jìn)制數(shù)*/ ? ? ? ? ? ?d+=(num[i]-'a'+10)*weight; ? ? ? ? ? ?else if(num[i]>='A'&&num[i]<='Z') ? ? ? ? ? ? d+=(num[i]-'A'+10)*weight; ? ? ? ? else ? ? ? ? ? ? d+=(num[i]-'0')*weight; ? ? ? ? weight*=n; ? ? ? ? ? ? ? ? ? ?/**向左移一位,權(quán)值變?yōu)樵瓉淼膎倍*/ ? ? } ? ? return d; } void DToM(int d,int m,char *mnum) { ? ? int len=0,r; ? ? do ? ? { ? ? ? ? r=d%m; ? ? ? ? if(r>=10) ? ? ? ? ? ? mnum[len++]=r-10+'A'; ? ? /**余數(shù)大于等于10時(shí)映射成字母*/ ? ? ? ? else ? ? ? ? ? ? mnum[len++]=r+'0'; ? ? ? ?/**余數(shù)小于10時(shí)映射成數(shù)字*/ ? ? ? ? d/=m; ? ? }while(d!=0); ? ? mnum[len]='\0'; ? ? char t; ? ? for(int i=0,j=len-1;i<j;i++,j--) ? ? { ? ? ? ? t=mnum[i]; ? ? ? ? mnum[i]=mnum[j]; ? ? ? ? mnum[j]=t; ? ? } }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語言16進(jìn)制與ASCII字符相互轉(zhuǎn)換
- C語言每日練習(xí)之進(jìn)制轉(zhuǎn)換
- C語言的進(jìn)制轉(zhuǎn)換及算法實(shí)現(xiàn)教程
- C語言實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換函數(shù)的實(shí)例詳解
- C語言用棧實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的方法示例
- C語言中網(wǎng)絡(luò)地址與二進(jìn)制數(shù)之間轉(zhuǎn)換的函數(shù)小結(jié)
- 編寫C語言程序進(jìn)行進(jìn)制轉(zhuǎn)換的問題實(shí)例
- C語言進(jìn)制轉(zhuǎn)換代碼分享
相關(guān)文章
C++的try塊與異常處理及調(diào)試技術(shù)實(shí)例解析
這篇文章主要介紹了C++的try塊與異常處理及調(diào)試技術(shù)實(shí)例解析,有助于讀者加深對(duì)try塊調(diào)試技術(shù)的認(rèn)識(shí),需要的朋友可以參考下2014-07-07基于QT制作一個(gè)TCPServer與TCPClient的通信
這篇文章主要為大家詳細(xì)介紹了如何基于QT制作一個(gè)TCPServer與TCPClient的通信,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12C++ 通過指針實(shí)現(xiàn)多態(tài)實(shí)例詳解
這篇文章主要介紹了 C++ 通過指針實(shí)現(xiàn)多態(tài)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03C/C++?QT實(shí)現(xiàn)自定義對(duì)話框的示例代碼
對(duì)話框分為多種,常見的有通用對(duì)話框,自定義對(duì)話框,模態(tài)對(duì)話框,非模態(tài)對(duì)話框等,本文主要介紹了QT自定義對(duì)話框,感興趣的可以了解一下2021-11-11淺談c++構(gòu)造函數(shù)問題,初始化和賦值問題
下面小編就為大家?guī)硪黄獪\談c++構(gòu)造函數(shù)問題,初始化和賦值問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12