C語言中的錯誤,幫我找一下。為什麼我輸入小數的時候,輸出的不是「請輸入整數」,而是「請輸入正整數」

2021-03-27 11:15:22 字數 1476 閱讀 6186

1樓:逆絕

int只能儲存整數,你輸入小數,經過強制型別轉換x=a-(int)a;

y=b-(int)b;

z=c-(int)c;

(int)a或是(int)b或是(int)c會去掉小數為,比如a=3.6,(int)a=3。x!=0為真。執行

printf("請輸入整數!\n"); 這一句。下面的else就不會再執行了。

2樓:匿名使用者

因為 scanf("%d" ............) 只能讀 整數,所以 x y z 都是 零。

它根本就讀不進去 1.1,a 是 int 整形,你輸 1.1 並不代表它讀進去的是 1.1。至於結果你試一下輸 1.1 1.1 1.1 再說。

而且,你好像意思是所有輸入都是整數。是想判斷輸入的數是不是小數吧?

c/c++ 沒有型別檢測函式。

要檢測可以這樣,

double a0;

scanf("%lf", &a0);

double testnum = a0 - (int)a0;

if(testnum)

printf("請輸入整數\n");

else

int a = (int)a0;

3樓:頹廢ю小寶

你一開始的這個中的%d 就限定了是輸入整數了,即使是你輸入了小數,小數部分也會省略的 而且你前面也是定義 abc為整數

4樓:水下之水

a,b,c為int型,當輸入為小數時,系統自動將小數部分截掉,故執行語句x=a-(int)a;y=b-(int)b; z=c-(int)c;之後,x,y,z的值恒為零,滿足 if(a<=0||b<=0||c<=0)

printf("請輸入正整數!\n");

執行的條件

當然出現請輸入正整數!

5樓:匿名使用者

你定義的 a b c 是整型

而在scanf裡面輸入的是%f的

在c語言中用%d輸出乙個小數,結果為乙個很大的的,不正確的數;用%f輸出乙個整數,結果為0,這是為什麼?

6樓:

整數是按補碼存放的,而浮點數是階碼+尾數原碼存放的。機內的浮點數都是8位元組雙精度,53位用來存放尾數原碼,用%d控制只擷取低4位元組的原碼資料按補碼輸出,常常是個大大的或正或負的數;而反過來,乙個整數4位元組,按%f要讀取8位元組,而整數前面的4位元組常常是0,把它按階碼部分尾數處理後自然常常是0。只是分析,供參考……

7樓:暖神

請問解決了嗎??遇到了相同問題

8樓:匿名使用者

printf按型別,不同長度取值, 看看printf的事項就知道

9樓:匿名使用者

進製學的還可以的話應該能明白

C語言的錯誤,C語言中的錯誤和警告有什麼區別

語法錯誤,return前面缺少分號,上面一句printf最後沒加表示語句結束的分號 話說要學程式設計還是把英語練練吧,這麼簡單的英文提示都看不懂,以後比較麻煩 錯誤會導致程式無法編譯通過,進而不能執行而警告是說程式中有些 編寫不是非常恰當,不會影響程式編譯,在少數情況下會影響程式執行一般警告可以忽略...

求大神解答一下為什麼,C語言指標那塊不是很懂

char a 2 這裡定義乙個指標陣列a,其中有兩個元素,均是字元指標,但指標的指向還沒有,所以是不能用的 char b 2 100 a 0 b 0 a 1 b 1 給兩個指標分別分配指向printf please enter the source file name n scanf s a 0 p...

幫我找一下著些詩句的全詩,誰能幫我找一下想愛卻不敢愛的詩句

第乙個,是王勃的騰王閣序,不是什麼詩句,原句是 落霞與孤鶩齊飛,秋水共長天一色 1.王勃 滕王閣序 2.杜甫 寄李十二白二十韻 3.陸遊 書憤 4.朱熹 春日 5.宋祁 木蘭花 玉樓春 6.元 無名氏 爭報恩 第一折 7.譚嗣同 獄中題壁 8.王維 相思 9.歐陽修 玉樓春 10.杜牧 秋 夕 11...