網(wǎng)站首頁 編程語言 正文
本文實(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對應(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') /**將字母映射到對應(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; ? ? } }
原文鏈接:https://blog.csdn.net/qq_46883219/article/details/119277194
相關(guān)推薦
- 2022-12-04 關(guān)于SQL查詢語句關(guān)鍵字方法_MsSql
- 2022-06-13 安裝Docker配置阿里云鏡像加速(圖文教程)_docker
- 2022-11-15 Apache?Doris的Bitmap索引和BloomFilter索引使用及注意事項(xiàng)_Linux
- 2022-08-25 C語言超詳細(xì)講解線性表_C 語言
- 2022-07-18 anaconda常用命令的整理
- 2022-05-14 C++使用new和delete進(jìn)行動(dòng)態(tài)內(nèi)存分配與數(shù)組封裝_C 語言
- 2022-03-14 Failed to load ApplicationContext異常的解決思路
- 2022-09-18 C++如何判斷一個(gè)數(shù)是不是素?cái)?shù)_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支