關於printf函式輸出十六進位制數和八進位制數的問題

時間 2021-12-23 04:50:11

1樓:滿意請採納喲

(1)如果使用變數名a和b來進行操作的話,則實際上我們使用的是變數a,b中存放的值,而printf函式也恰恰只是想把a,b的值輸出到顯示卡,最終由顯示卡顯示出來,所以不需要加字首&.

(2)scanf之所以需要字首是因為,當使用&a,&b的時候,此時使用的是a,b的地址,而scanf也恰恰是想要把鍵盤快取中的資料,輸入到a,b變數對應的地址中去的。

總結:使用a,編譯器找到的是變數的值,使用&a找到的是變數的地址。printf只要找到值即可,而不需要變數的地址,所以不需&。

2樓:毛毛

1.如果你輸入輸出時不規定進位制,預設為10進位制;

2.輸出時,你已經規定了輸出進位制,也就是說你自己是知道是多少進位制的,所以不會顯示你所謂的字首

3樓:匿名使用者

沒什麼前不字首

%x,%o 這些是控制字元,

當輸出的時候,系統輸出對應的進位制

如果想輸出為0x12,012

就在x,o前面加一個#號

如%#x,%#o

輸出就變為0x12,012

都是一個數,只不過好理解一點

4樓:

%x,%0就已經表明輸出的a和b是八進位制和十六進位制了。

5樓:匿名使用者

您好:(1)如果我們使用變數名a和b來進行操作的話,則實際上我們使用的是變數a,b中存放的值,而printf函式也恰恰只是想把a,b的值輸出到顯示卡,最終由顯示卡顯示出來,所以我們不需要加字首&.

(2)scanf之所以需要字首是因為,當我們使用&a,&b的時候,我們此時使用的是a,b的地址,而scanf也恰恰是想要把鍵盤快取中的資料,輸入到a,b變數對應的地址中去的。

總結:使用a,編譯器找到的是變數的值,使用&a找到的是變數的地址。printf只要找到值即可,而不需要變數的地址,所以不需&。

希望對您有點用,祝您好運!

c語言程式設計,輸入十進位制數輸出十六進位制和八進位制

6樓:園林植物手冊

可以通過下面的公式解決

#include

const int maxn = 128;

const int index8 = 8;

const int index16 =16;

int main()

while(m)

int i;

for(i = cot8 - 1; i >= 0; i--)printf("%d", array8[i]);

puts("");

for(i = cot16 - 1; i >= 0; i--)擴充套件資料:

十進位制轉十六進位制的具體方法:對於整數部分,用被除數反覆除以16,除第一次外,每次除以16均取前一次商的整數部分作被除數並依次記下每次的餘數。另外,所得到的商的最後一位餘數是所求二進位制數的最高位。

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

10進位制數轉換成十六進位制數,這是一個連續除以16的過程:把要轉換的數,除以16,得到商和餘數,將商繼續除以16,直到商為0。最後將所有餘數倒序排列,得到數就是轉換結果。

7樓:匿名使用者

可以格式化輸出。

#include

int main()

8樓:匿名使用者

#include

void showbit(int n)

printf("%d",n%2);

}void showoct(int n)

printf("%d",n%8);

}void showhex(int n)

printf("%d",n%16);

}int main()

9樓:著述的鴨子非了

#include

main()

while(n!=0);

for(i--;i>=0;i--)

putchar(s[i]);

} //十進位制轉八進位制 十六進位制方法類似#include

void main()

在c語言中,整數可以用printf函式以二進位制、八進位制、十六進位制輸出嗎?為什麼?

10樓:匿名使用者

我只知道八進位制的格式控制符是o%,十六進位制的格式控制符是x%,至於二進位制嘛你可以程式設計實現輸出!!!

11樓:澤國笑玉

沒有直接列印出二進位制的輸出符號

c語言中十六進位制和八進位制的格式

12樓:鄞染樂煙

16進位制以0x開頭,後面跟數字0~9或字母a~f(小寫也可以)。如:0x2d(16進位制數2d)

8進位制以0開頭,後面跟數字0~7。如:045(8進位制數45)

如果使用printf函式輸出時,可以通過格式數明符來控制輸出格式。

舉例如下:

int x=23;

printf("%x", x); // 以16進位制格式輸出,輸出17;

printf("%o", x); // 以8進位制格式輸出,輸出2。

擴充套件資料:

c語言是國際上廣泛流行的、很有發展前途的計算機高階語言。它適合作為系統描述語言,即可用來編寫系統軟體,也可用來編寫應用軟體。

早期的作業系統等系統軟體主要是用組合語言編寫的(包括

unix作業系統在內)。由於組合語言依賴於計算機硬體,程式的可讀性和可移植性都比較差。為了提高可讀性和可移植性,最好改用高階語言,但一般的高階語言難以實現組合語言的某些功能(組合語言可以直接對硬體進行操作),例如:

對記憶體地址的操作、位操作等)。人們設想能否找到一種既具有一般高階語言特性,又具有低階語言特性的語言,集它們的優點於一身。於是,c語言就在這種情況下應運而生了。

13樓:犁玉蘭翠燕

1、八進位制以0開頭,後面跟數字0~7。如:045(8進位制數45)如果使用printf函式輸出時,可以通過格式數明符來控制輸出格式。例如:int

x=23;printf("%x",

x);//以16進位制格式輸出,輸出17;printf("%o",x);

//以8進位制格式輸出,輸出2。

2、十六進位制以0x開頭,後面跟數字0~9或字母a~f(小寫也可以)。如:0x2d(16進位制數2d)。

拓展資料:

c語言是國際上廣泛流行的、很有發展前途的計算機高階語言。它適合作為系統描述語言,即可用來編寫系統軟體,也可用來編寫應用軟體。早期的作業系統等系統軟體主要是用組合語言編寫的(包括

unix作業系統在內)。

編寫一個程式,要求使用者輸入一個十進位制正整數,然後分別轉換成為二進位制數、八進位制數和十六進位制數輸出

14樓:匿名使用者

樓上的太複雜了吧!c的話直接這樣:

main()

printf("二進位制為%s",x);}

15樓:

這段**是我用c語言寫的,可以實現多個功能的進位制轉換,你參考參考:

#include

#include

#include

void menu();

int bintobex(char str[100],int b);

char * bextobth(int n,int b);

int main()

while(x>12||x<0);

char str[100];

int n;

switch(x)

}return 1;

}void menu()

int bintobex(char str[100],int b)str[i]=0;

len=strlen(str);

for(i=0;i

return str;}

16樓:可の獨角

你是用什麼語言的啊?如果沒有直接轉換的話一般方式如下:

對於轉換成n進位制的數s,先讀入數字,判斷它在n^a與n^(a+1)之間,令m=0,然後進行迴圈:m=m*10; s div n^a得到的數值存入m,令n為n mod n^a; a=a-1;直到n為0

寫函式,輸入十六進位制數,輸出相應的十進位制數

include int power int x,int n void main cout 轉化成十進位制是 int power int x,int n 我除錯過了,沒有錯誤,結果正確,我的程式要求輸入的是8位。include char he 105 void main 每次乘16 如果是k進位制就乘...

二進位制,八進位制,十進位制,十六進位制要怎麼弄懂

水領神仙 十進位制數運算時逢十進一。二進位制數運算時逢二進一。八進位制數運算時逢八進一。十六進位制數運算時逢十六進一.注 如 2 表示2的2次方,2 表示2的5次方 1.二進位制計數法的概念 人們在日常生活中和生產實踐中,我們接觸到越來越多的數字,創造了分組計數的制度.而我們的生活中,一般採用了 滿...

什麼是「十六進位制」,什麼是十六進位制數的標準表示方法

要想學漢化就必需要懂得十六進位制!下面是幾種進位制的計算方式 十進位制 有10個基數 0 9 逢十進一 二進位制 有2 個基數 0 1 逢二進一 八進位制 有8個基數 0 7 逢八進一 十六進位制 有16個基數 0 9,a,b,c,d,e,f a 10,b 11,c 12,d 13,e 14,f 1...