佬們,這個(gè)為什么運(yùn)行成功輸出錯(cuò)誤啊
#include <stdio.h>
int main()
{
? ? //定義三位數(shù)num,個(gè)位數(shù)sd,十位數(shù)td,百位數(shù)hd
? ? int num, sd, td, hd;
? ? //循環(huán)所有三位數(shù)
? ? for(num=100 ; num<1000;num++)
? ? {
? ? ? ? //獲取三位數(shù)字num百位上的數(shù)字
? ? ? ? hd =num-td*10-sd? ? ? ? ? ;
? ? ? ? //獲取三位數(shù)字num十位上的數(shù)字
? ? ? ? td = num-sd-hd*100? ? ?;
? ? ? ? //獲取三位數(shù)字num個(gè)位上的數(shù)字
? ? ? ? sd = num-hd*100-td*10? ? ? ;
? ? ? ? //水仙花數(shù)的條件是什么?
? ? ? ? if(num==hd*hd*hd+td*td*td+sd*sd*sd? )?
? ? ? ? {
? ? ? ? ? ? printf("水仙花數(shù)字:%d\n", num);? ??
? ? ? ? }
? ? }
? ? return 0;? ??
}
2024-11-05
你的代碼中存在幾個(gè)關(guān)鍵問題,主要是關(guān)于如何正確地從一個(gè)三位數(shù)中提取百位、十位和個(gè)位數(shù)字的方法。你當(dāng)前的計(jì)算方法是不正確的。正確的做法應(yīng)該使用除法和取模運(yùn)算來分別獲取這三個(gè)位置上的數(shù)值。
核心問題:
/
)和求余(%
)運(yùn)算符。sd
和td
的情況下就嘗試使用它們進(jìn)行計(jì)算,這會(huì)導(dǎo)致邏輯錯(cuò)誤。解決方案:
num?/?100
?來獲取百位數(shù)字。(num?%?100)?/?10
?來獲取十位數(shù)字。num?%?10
?來獲取個(gè)位數(shù)字。修改后的完整代碼:
這段修改后的代碼能夠正確識(shí)別并打印所有的水仙花數(shù)(即每個(gè)位上的立方和等于該數(shù)本身的三位數(shù))。希望這能解決你的問題。如果還有其他疑問,請(qǐng)繼續(xù)提問。
2024-10-05
不是從,是運(yùn)行成功沒有輸出