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