有關C語言的問題急,C語言報錯的問題?

2022-04-16 19:45:41 字數 1966 閱讀 7285

1樓:匿名使用者

首先解釋你的5個0的問題。五個零是printf語句出來的。%f格式,預設輸出小數點後6位數字,跟你資料型別沒有任何關係,這個很簡單吧。

如果想讓他輸出小數點後一個0,那就是%.1f,想輸出3個0,就是%.3f

這個明白了吧,很簡單。printf控制格式的問題。跟你float還是double還是int沒關

第二個問題,float 6~7 位有效數字的說法,到底怎麼回事。這個比較難懂,我是花了很長時間才搞懂的,不知道我講了,你能不能懂,計算機底層跟數學基礎不夠的話,很難理解到位。

我當時特別納悶的地方就在於,有效數字就有效數字,幹嘛還6-7位呢,為什麼不是一個確定的數。

它的深成次原因是這樣的。float所佔的位數是32位,為了表示浮點數,這32位,一部分被當做指數,一部分被當做底數。說白的,浮點數在計算機裡,如表示為a^b的形式。

那麼浮點數所能表示的精度,就跟底數的位數有關了。float這32位中,有一個符號位,8個指數位,跟23個底數位。

所以表示的精度就跟這23個底數位有關。具體的換算方法,請參考「ieee的浮點數表示法」這裡給你講得講到半夜。

我按照我通俗的理解,給你打個比方吧!

為什麼是6到7位,而不是一個確定的數,其實int值也有類似的問題。

假設,計算出的float表示最大範圍為1234567,注意,這裡是7位數,但是這裡存在一個問題,它可以精確表示七位數的前提是,這個七位數不大於這個範圍,有效數字為7,也就是當你想表示的數字小於1234567的時候,有效數字是7位。

假設你現在想表示7654321,它大於1234567,那麼就不能精確表達這個數,這時,有效數字就是6位,765432,最後一位不一定是精確表達的。

我這麼講,你能聽懂不?

2樓:慕桖以南

這個。。。

首先,格式化輸出的規則你要去了解。(c語言)然後,關於int和float在計算機內部的儲存,表達方式也要去了解。(基本)

需要一本基本的系統的瞭解,所以這裡怎麼說你也不會理解透徹。

去參考一本書吧。

《電腦科學概論》11版

1.6 整數儲存

1.7 小數的儲存。

3樓:

不是,folat型別的,print會預設輸出小數點後6位,當然輸出幾位可以自己控制。

4樓:匿名使用者

是printf的原因,預設格式就是小數點後6個0

c語言報錯的問題?

5樓:匿名使用者

你的程式錯誤,是在

cout << 「enter the temperature in celsius:」;

cout << 「fahrenheit value is:」;中用了中文狀態下的雙引號。

#include

#include

#include

using namespace std;

int main(int nnumberofargs, char* pszargs)

以上程式正確,可以執行。

如果還不行,那就是編譯器的問題。建議:用vc2008,c-free或vc2010.

微軟已停止對vc6.0進行更新了。(開始不習慣很正常,成為高手後會喜歡例如vc2010的)。

關於c語言問題,急!!高手請進!

6樓:

s是指標的指標,在這裡是指向主函式的p指標的指標;**s就是主函式p所指地址的內容;p是指向一個動態儲存地址,這是向系統要求配給的(int *)malloc(sizeof(int)),具體操作在教程裡可以找到;

fun(int **s,int p[2][3])

p[2][3}即a[2][3];**s=p[1][1]的意思是把p[1][1](其值為9(第二行第二列的數))即a[1][1]的內容賦予**s指向的儲存空間,也就是主函式中p的值為9了,所以輸出值為9。

c語言問題,急!賞,c語言問題,急!賞

下面的程式是修改過的,已經在vc環境中除錯成功,你要算fahr,可你在輸出之前算得卻是celsius,錯誤出在這裡。至於其他的修改都是多餘的。include void main celsius 5 9 fahr 32 括號之間缺了些什麼吧.而且只能把已賦值的變數賦給沒賦值的變數哦 也就是說只能fah...

c語言有關sizeof的問題,c語言關於sizeof的問題

a 和 0 都是字元型,一個字元型一個位元組,sizeof是算佔多少記憶體,a 0 是轉化為int進行處理的,計算後是一個int型。int是整形,有的編譯器佔2個位元組,有的佔4個。所以是2,1 因為 a 和 0 都表示的是字元,而字元型常量佔據的記憶體空間為1位元組,即sizeof a 1,siz...

C語言問題急請求幫助,C語言問題!!!急!!!請求幫助

include int main 把100 150的偶數存入陣列 for i 0,j 100 j 150 i j 2 for i 0 i 26 i 行數是偶數的情況 else printf 6d arr i 個數 1 row count 每記5個數,打個回車,行數 1 if row count 5 ...