1樓:赤彩孛曼寒
呵呵,我只給個思路。
這個完全不是數學題,是個字串的題。
找到輸入資料中小數點的位置,和冪的數值,將小數點往後移動冪指定的位數,如果已經移動到輸入串的尾部加0補充。
輸出當然也只能按字串格式輸出。
計算機沒有這麼高的精度的!
2樓:回到過去我愛你
printf("a=%d a=%f",a,a); 這個語句決定了 你的結果:
a=%d表示a的輸出結果為十進位制整數,
a=%f表示a的輸出結果為十進位制浮點數!
其實你有個錯誤:
printf("a=%d a=%f",a,a); 應改為:printf("a=%d a=%f",&a,&a);
3樓:
#include "stdio.h"
void main()
內部機制,怎麼安排的,還真是說不清楚!
但這樣結果,至少要好一點!輸出的語法對應錯誤了,它就預設那樣了,有很多情況的!以後多注意了!
4樓:匿名使用者
%d要求的輸入形式必須是整數。而此程式的輸入形式是實數。就會產生這樣的效果吧。
其實,如你所說,a的值是正確的,只是輸出是錯誤的。這就像你給了一個人1塊錢,你像讓他給你買塊糖。但是,你又不讓他去糖果店,非讓他去菸酒店。
你說,他能給你買回來糖嗎?至於他買回來的是什麼,或者能不能買回來,只有鬼知道了。
#include "stdio.h"
void main()
這樣改一下,或許對你理解有點幫助吧。
最後一句,對於幫助你的人,你就以這樣的態度來對待嗎?人不是這樣做的吧?
5樓:中北吳延寶
由於記憶體空間長度不同,數發生截斷,導致數值發生改變
6樓:
結果就應該是這樣啊 不知道你想輸出什麼樣?
你可以通過在%後面加x.y來控制輸出樣子
x代表一共有幾位 y代表小數點後有幾位
如%7.3f 即:一共7位小數點後有3位的浮點小數不知道你是不是這個問題
c語言中以單精度浮點型輸入,輸出格式為%d或%c,為什麼顯示的數不對?謝謝!
7樓:岔路程式緣
肯定不對啊!
你輸入的時候是單精度浮點數型別,c語言中變數就是float型別,輸入使用的格式是%f。
不同的變數型別在記憶體中的儲存方式也完全不同,當你用整型格式(int)去讀一個浮點格式(float)的數字時,不可能讀出正確的結果。
所以,你必須用跟輸入時相同的格式(%f)輸出(另外,還必須跟變數的型別一致),才能顯示正確的數字。
8樓:匿名使用者
單精度浮點型輸出格式應該是%f或者用double型別%lf都行啊。 %d是輸出整數, %c是輸出字元 怎麼可能會對啊。%s是字串。
9樓:韻
單精度浮點型%f,雙精度%lf,%d是輸出整數, %c是輸出字元 %s是字串
10樓:匿名使用者
輸入的什麼 你認為該輸出什麼
浮點數的儲存方式 跟1o進位制不闖
11樓:
單精度浮點型float輸出格式應為%f,%d是整形,%c是字元型,能聽懂嗎?不懂的話隨時來問也是可以的
12樓:百i度網友
%d用於輸出整型變數,%c用於輸出字元型變數。c語言中,單精度浮點型變數和整型變數、字元型變數在記憶體中的存放格式是不一樣的。單精度浮點數是由一個位元組的階碼和3個位元組的尾數構成的,共佔用4個位元組記憶體單元,而整型變數在記憶體中佔用2個位元組單元,字元型變數佔用1個位元組記憶體單元。
將4位元組浮點數按2個位元組的整型數輸出,或按1位元組字元輸出,都會得到無法預料的結果。
請教c語言浮點數輸出問題。
c語言double型別不能用%d輸出,會出錯
13樓:匿名使用者
printf:限定符:
%d 十進位制有符號整數
%u 十進位制無符號整數
%f 浮點數
%s 字串
%c 單個字元
%p 指標的值
%e 指數形式的浮點數
%x, %x 無符號以十六進位制表示的整數
%o 無符號以八進位制表示的整數
%g 自動選擇合適的表示法
%p 輸出地址符
可以在"%"和字母之間加小寫字母l, 表示輸出的是長型數。
例如: %ld 表示輸出long整數
%lf 表示輸出double浮點數
你用%d去輸出double型的j,輸出當然不對啊
14樓:金色潛鳥
輸出格式 定義了 計算機 記憶體單元裡的資訊 怎樣 轉 換 為 人類可識別 的 數值 和 字元形狀 輸出出來。
計算機 記憶體單元裡的資訊 安排方式 由 ieee 國際 標準 規定 --
double 有幾個位元組,分成多少字元,哪位是符號位,哪幾位是 指數,哪幾位 是 尾數。
int 有幾個位元組,分成多少字元,哪位是符號位,哪幾位 是數值,是原碼,還是 補碼。
輸出時,把 記憶體單元裡的資訊 要 翻譯成 人類可識別 的形式。
輸出格式 %d 定義了 按 int 型 符號位,數值位,判斷是原碼,還是 補碼 翻譯。
輸出格式 %lf 定義了 按 double 型 符號位,指數,尾數 翻譯。
所以,輸出格式 定義了 記憶體單元裡的資訊 如何翻譯。
double 型 記憶體資訊 按 int 型 符號位,數值位,判斷是原碼,還是 補碼 翻譯,當然錯了。
ieee 754 標準 可以網上查到,閱讀起來要費些時間,讀懂會用,要幾天工夫。
15樓:刀慶文
額,double型的儲存形式和int的不一樣
c語言 輸出浮點數的問題
16樓:
樓主如果真想弄清楚這個問題的話,建議去看下浮點數的格式.
簡單地說就是,在計算機中,浮點數是表示成類似於十進位制中的科學計數法那樣的形式,只不過是表示成a乘以2的b次方,而不是10的b次方,而且a也是2進位制數.float有32位,一部分用來表示a,一部分用來表示b,但這部分位數畢竟是有限的,如果a的實際位數超過了這部分的容量,那麼就只能擷取掉後面多的位數了,剩下的位數再轉換成10進位制數後,肯定和你原來想存的數不一樣了.
存a的這部分我忘了是幾位了,好像是8還是9吧,除去首位有其他用途,後面7位分別表示2的負幾次方,而2的-7次方是0.0078125,所以只能保證小數點後6位是有效的
c語言中變數型別改變導致輸出結果錯誤? 5
17樓:岔路程式緣
是的。一、在printf()函式中,你如果用其他變數型別的格式輸出一個變數,往往會導致輸出錯誤的結果。
如:int a=5;//定義一個整型變數aprintf("%f",a);//用浮點型格式輸出你不會得到5或者5.0000(後面幾個0),而是得到亂碼。
二、只有一個例外,就是字元型變數,可以用整型輸出,將會輸出字元的asc碼。
如:char a='a';
則下面兩句都能正常輸出:
printf("%c",a);//將會輸出字元:aprintf("%d",a);//將會輸出字元a的asc碼:65三、除非需要,一般不要用其他格式輸出,以免導致錯誤。
18樓:gta小雞
printf是一個變參函式,由於printf本身不知道呼叫時傳遞給自己的引數個數是多少,以及每個引數的型別分別是什麼,需要呼叫者傳遞一個格式字串告訴它,printf從格式字串中解析佔位符得出傳遞的引數個數以及每個引數的型別,接下來才能正確處理這些引數。如果格式字串中給出的佔位符資訊錯誤,那麼就會導致printf對引數的處理錯誤,輸出結果自然也就很有可能不正確。
printf("%ld%f", m, n); 執行這條語句時,printf首先從格式字串"%ld%f"中得知呼叫者除了格式字串還傳遞了兩個引數,第一個是long型,第二個是double型。在windows中long佔4位元組而double佔8位元組,並且printf的呼叫約定是__cdecl,引數是從右至左入棧的,格式字串在棧頂。於是printf從棧頂向下4位元組的位置取4個位元組就能取到第一個long型引數,再向下取8個位元組就能取到第二個double型引數,接下來就能正確輸出這兩個引數到螢幕上了。
而如果呼叫者誤寫成了printf("%f%f", m, n);,那麼printf會認為呼叫者傳遞給了自己兩個double型引數,於是它會從棧頂向下4位元組和12位元組的位置分別取兩個8位元組的資料當做兩個double型並輸出它們,然而此時實際的兩個引數m和n分別位於棧頂下4~7位元組和8~15位元組處,於是m的全部4位元組和n的前4個位元組被一起當作了第一個double型,而n的後4位元組和n下方的4位元組被當成了第二個double型,最終兩個數的輸出結果自然都不正確。
C語言中如何實現將浮點數float轉成int型別
強制型別轉換 比如 float a 10.5 int b int a 這樣 就轉換了,但是不推薦高精度轉低精度 會丟失精度的就像這個,a是10.5 轉換後變成10了小了太多 c語言中將一個浮點型賦值給整型時,會不會四捨五入?c語言中將一個浮點型賦值給整型時,不會四捨五入,會直接捨去小數部分的資料,也...
C程式設計從鍵盤輸入浮點數,求出其和及平均值。要求編寫出求和及求平均值的函式
這也叫問題啊 我昨天才學c 用c給你寫個 include main j sum 8 printf 8數之和為 f,平均值為 f sum,j 還江湖豪俠呢 c 程式設計 從鍵盤輸入5個浮點數,求出其和及平均值。以下程式 可以在vc6.0當中專實現屬 include void main 程式vc6.0 ...
用c語言程式設計輸入一組整數以,用C語言程式設計 輸入一組整數,以 1作為結束的標誌,用陣列s接收這組數,統計個數,並輸出
include int main printf 個數為 d n m for int i 0 iprintf d n s i return 0 include using namespace std int s 100000 假設你輸入的數不超過100000個 int main printf d n ...