c:進位制轉換
阿新 • • 發佈:2020-08-07
20、通過程式設計,能夠完成2進位制與10進位制之間的的轉換;16進位制與10進位制之間的的轉換;2進位制與16進位制之間的的轉換;2進位制與8進位制之間的的轉換;8進位制與16進位制之間的的轉換;
想要完成進位制轉換
首先要知道c語言中不同進位制的輸入輸出方式
如十進位制的整數用 %d
我特意去查了一下
十六進位制 %x
八進位制 %o
二進位制。。。
然後我就發現沒有二進位制的表示方法
只有自己手動寫函數了
我的程式碼在這裡:
#include<stdio.h> #include<math.h> #include<string.h> //定義字元數字轉換整型數字的函式 int fun(char c){ int a=c-'0'; return a; } //2轉10的函式 int ten(char *s){ int i,t=0,len,a[80]; len=strlen(s);//獲取字串長度,也就是2進位制數的位數 for(i=0;i<len;i++){ a[i]=fun(s[len-i-1]);//把裝有二進位制數字的字元陣列轉換為整型陣列 t+=a[i]*(int)pow(2,i);//在同一迴圈下可完成2進位制轉10進位制 } return t; } //主方法在此 int main(){ //定義變數 int n,t; char s[80]; while(1){ //互動介面 printf("1 2進位制轉10進位制\n2 16進位制轉10進位制\n3 2進位制轉16進位制\n4 2進位制轉8進位制\n5 8進位制轉16進位制\n0 退出\n"); printf("請選擇演算法:"); scanf("%d",&n); if(n==1||n==3||n==4){//處理2進位制的情況 printf("請輸入一個2進位制數字:"); scanf("%s",s);//用字串來輸入,方便對逐個數字處理 t=ten(s);//呼叫函式,把2進位制轉為10進位制 if(n==1) printf("轉為10進位制:%d\n\n",t); if(n==3) printf("轉為16進位制:%x\n\n",t); if(n==4) printf("轉為8進位制:%o\n\n",t); } if(n==2){//16轉10只要按照對應的格式輸入輸出即可 int x; printf("輸入一個16進位制數字:"); scanf("%x",&x); printf("轉為10進位制:%d\n\n",x); } if(n==5){//8轉16只要按照對應的格式輸入輸出即可 int o; printf("輸入一個8進位制數字:"); scanf("%o",&o); printf("轉為16進位制:%x\n\n",o); } if(n==0) break; } return 0; }
部分執行測試: