c語言輸入進位轉換文檔介紹內容,C語言進位轉換方法

本文目錄一覽:

C語言中如何用演算法實現進位間的轉化?

C語言中實現10進位轉換為任意進位的過程為:

定義數組int rs[32],保存轉換後的數據,整數的轉換結果最多32位(4位元組*8位)

定義一個數組char map[]={‘0′,’1′,’2′,’3′,…,’9′,’A’,’B’,…’F’},完成相應數值對應的轉換後的字元

輸入10進位數(整數)num

轉入轉換進位基數(2-16)ind

循環對num進行模ind運算,得到餘數存儲到數組rs中

num縮小ind倍

當num為0時結束循環

反向輸出數組rs中對應的各元素對應的map字元,得到轉換結果

參考代碼:

#include stdio.h

int main()

{

    char map[16]={‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’A’,’B’,’C’,’D’,’E’,’F’};

    int i,c[32],num,ind;

    do {printf(“input num: “);scanf(“%d”, num );}while(num0 );

    do {printf(“input ind: “);scanf(“%d”, ind );} while( ind16||ind2);

    i=0;

    do {

        c[i++]=num%ind;

        num/=ind;

    } while(num!=0) ;

    for(i–;i=0;i–)

        printf(“%c”,map[c[i]] );

    printf(“\n”);

    return 0;

}

運行結果:

input num: 100

input ind: 2

1100100

input num: 100

input ind: 8

144

input num: 100

input ind: 16

64

C語言的進位轉換程序

在這裡獻醜了!

1.將你輸入的數通過字元串的方式存儲是方便一下的計算的

正如你舉得例子,輸入137 數組中存入的是 字元型的137 要將

裡面的每個字元型的數字轉換成數值型的數字就得 *p-‘0’,因為

字元存儲時實際存儲的是字元的ASC碼, 例如 輸入 1(字元型)ASCII碼為

49 若不減去0的ASC碼 就會以49去參加運算

這個while循環是用於數制轉換的.將八進位轉換成10進位,其實就是將8進位數碼按權展開,137=1*8^2+3*8^1+7*8^0

2這個while就是這個用處,一步一步看下去,加入輸入為137存儲為字元137

第一次是將字元型的1減去0的asc碼就得到了數值型的1 1本來是最高位應該是但是這裡得到的只有係數(姑且叫做係數吧而權為8^0=1),由於後面還有兩個數,這樣通過循環n=n*8+*p-‘0’;將1的權值提升到了8^2,對第二位也類似.

3.要進行浮點數的進位轉換就得找准小數點的位置.然後按照類似的方法就可以了

C語言中的各進位的轉換方法

C++的,如果要TC的將中文改為English就行了

#includestdio.h

#includemath.h

void ten_two()

{

int num, i;

int arr[20];

printf(“請輸入一個十進位數:”);

scanf(“%d”,num);

for( i = 0 ; 1 ; i++)

{ //轉換為二進位並存入數組

arr[i] = num % 2;

num = num / 2;

if(num == 0)

{

break;

}

}

printf(“轉換為二進位:”); //列印

for(; i = 0 ; i– ){

printf(“%d”,arr[i]);

}

printf(“\n”);

}

void ten_eight()

{

int num, i;

int arr[20];

printf(“請輸入一個十進位數:”);

scanf(“%d”,num);

for( i = 0 ; 1 ; i++){//轉換為八進位並存入數組

arr[i] = num % 8;

num = num / 8;

if(num == 0){

break;

}

}

printf(“轉換為八進位:”); //列印

for(; i = 0 ; i– ){

printf(“%d”,arr[i]);

}

printf(“\n”);

}

void ten_sixteen()

{

int num, i;

int arr[20];

printf(“請輸入一個十進位數:”);

scanf(“%d”,num);

for( i = 0 ; 1 ; i++){ //轉換為二進位並存入數組

arr[i] = num % 16;

num = num / 16;

if(num == 0){

break;

}

}

printf(“轉換為十六進位:”); //列印

for(; i = 0 ; i– ){

switch(arr[i]){

case 10 : printf(“A”);break;

case 11 :printf(“B”);break;

case 12 :printf(“C”);break;

case 13 :printf(“D”);break;

case 14 :printf(“E”);break;

case 15 :printf(“F”);break;

default :printf(“%d”,arr[i]);

}

}

printf(“\n”);

}

void two_ten()

{

long num;

int b,TheTen=0,Total=0;

printf(“請輸入一個二進位數(只包含0或1):”);

scanf(“%ld”,num);

while(num)

{

b=num-(int)(num/10)*10;

TheTen+=b*pow(2,Total);;

Total++;

num=(int)(num/10);

}

printf(“轉換為十進位:”); //列印

printf(“%d”,TheTen);

printf(“\n”);

}

void eight_ten()

{

int num, i;

int arr[20];

printf(“請輸入一個八進位數(只由0~7之前的數組成):”);

scanf(“%o”,num);

printf(“轉換為十進位:”); //列印

printf(“%d”,num);

printf(“\n”);

}

void sixteen_ten()

{

int num, i;

int arr[20];

printf(“請輸入一個十六進位數(只由0~9和A~F之前的數組成):”);

scanf(“%X”,num);

printf(“轉換為十進位:”); //列印

printf(“%d”,num);

printf(“\n”);

}

void main()

{

int select;

do{

printf(“0 – 退出,1 – 十進位轉二進位,2 – 十進位轉八進位,3 – 十進位轉十六進位,4 – 二進位轉十進位,5 – 八進位轉十進位,6 – 十六進位轉十進位\n”);

scanf(“%d”,select);

switch(select){

case 1 : ten_two(); break; //十進位轉二進位

case 2 : ten_eight(); break; //十進位轉八進位

case 3 : ten_sixteen(); break; //十進位轉十六進位

case 4 : two_ten(); break; //二進位轉十進位

case 5 : eight_ten(); break; //八進位轉十進位

case 6 : sixteen_ten(); break; //六十進位轉十進位

default : printf(“您的輸入有誤,請重新輸入!”); break;

}

if(select == 0)

{break;}

}while(1);

}

C語言轉換進位

#includeintmain(void){inta8,b10,c16;/*a8,b10,c16分別代表八進位數,十進位數和十六進位數*/scanf(“%o%d%x”,a8,b10,c16);printf(“%o,%d,%x\n”,a8,a8,a8);printf(“%o,%d,%x\n”,b10,b10,b10);printf(“%o,%d,%x\n”,c16,c16,c16);}要重複,添加循環就OK了。這裡簡單的實現你的輸入和輸出功能,並沒有真正從運算規則上去進行轉換,你也沒做這樣的要求,不知道是不是你想要的結果。

c語言中各種進位的轉換規矩 詳細些 最好是計算過程寫出來

代碼如下:(可以輸出20位數)#includestdio.h

void transfer(int m,int change)

{

int aa[20],j,saveM=m;

for(j=0;m!=0;j++)

{

aa[j]=m%change;

m=m/change;

}

printf(“十進位數%d的%d進位形式是:\n”,saveM,change);

for(;j!=0;j–)

printf(“%d “,aa[j-1]); //注意這空是填aa[j-1],而不是aa[j],因為上面那個循環進行到最後一步時,j++還是會運行一次,但是此時並沒有給aa[j]賦值,因為循環結束

}

main()

{

int n,c;

printf(“請輸入一個整數\n”);

scanf(“%d”,n);

printf(“該整數是十進位數,你想將它轉化成幾進位數呢?\n”);

getchar();

scanf(“%d”,c);

transfer(n,c);

} 功能說明:該函數可以將任意的十進位數轉化成任意的N進位數。轉化後的結果,每兩位數之間用一個空格隔開。

希望可以幫到您,謝謝!

C語言進位轉換

計算機中常用的數的進位主要有:二進位、八進位、十進位、十六進位。  

2進位,用兩個阿拉伯數字:0、1;  

8進位,用八個阿拉伯數字:0、1、2、3、4、5、6、7;  

10進位,用十個阿拉伯數字:0到9;  

16進位就是逢16進1,但我們只有0~9這十個數字,所以我們用A,B,C,D,E,F這五個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。 

下面用餘數短除法把十進位數轉化為二進位數為例進行說明

1、明確問題。舉個例子,我們現在是要將一個十進位數字156轉換成二進位數字。先將這個十進位數作為被除數寫在一個倒著的「長除法」的符號里。把目標數系的基數(在這裡二進位是「2」)作為除數寫在這個除法符號的外面。用這個方法將計算過程可視化會更方便理解,因為整個計算過程只需將數字一直除以2。

2、進行除法運算。把結果的整數部分(商數)寫在長除法符號的下面,然後把它的餘數(0 或 1)寫在被除數的右邊。

我們現在是以2為除數,因此得出的商為偶數,則餘數為0;如果得出商為奇數,則餘數記為1。

3、一直往下繼續除,直到商為0為止。把每一個新的商數除以二,然後把餘數寫在被除數的右邊。直到商數為0為止。

4、寫出新的二進位數字。從最下面的餘數開始,按順序讀到最上面。本例中,你會得到10011100。這就是十進位數字156的二進位形式。或者,我們可以以腳註等式的形式表達,即:15610 = 100111002

活用這個方法可以將所有十進位數字轉換成任何進位表達。除數為2是因為我們最終想得到的以2為基數的數(即二進位數值) 。如果最終想得到其他數系的數字,用目標數系的基數代替這個方法里二進位的基數2 就可以了。例如,要得到基數為9的數,就用9來代替2作為除數 。最終的結果就是目標數系的數字表達。

擴展資料:

十進位—二進位

對於整數部分,用被除數反覆除以2,除第一次外,每次除以2均取前一次商的整數部分作被除數並依次記下每次的餘數。另外,所得到的商的最後一位餘數是所求二進位數的最高位。

對於小數部分,採用連續乘以基數2,並依次取出的整數部分,直至結果的小數部分為0為止。故該法稱「乘基取整法」

十進位—八進位

10進位數轉換成8進位的方法,和轉換為2進位的方法類似,唯一變化:除數由2變成8。

參考資料:百度百科——進位轉換

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/258621.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:50
下一篇 2024-12-15 12:50

相關推薦

  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • 使用Vue實現前端AES加密並輸出為十六進位的方法

    在前端開發中,數據傳輸的安全性問題十分重要,其中一種保護數據安全的方式是加密。本文將會介紹如何使用Vue框架實現前端AES加密並將加密結果輸出為十六進位。 一、AES加密介紹 AE…

    編程 2025-04-29
  • 用不同的方法求素數

    素數是指只能被1和自身整除的正整數,如2、3、5、7、11、13等。素數在密碼學、計算機科學、數學、物理等領域都有著廣泛的應用。本文將介紹幾種常見的求素數的方法,包括暴力枚舉法、埃…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python學習筆記:去除字元串最後一個字元的方法

    本文將從多個方面詳細闡述如何通過Python去除字元串最後一個字元,包括使用切片、pop()、刪除、替換等方法來實現。 一、字元串切片 在Python中,可以通過字元串切片的方式來…

    編程 2025-04-29

發表回復

登錄後才能評論