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...