亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

佬們,這個為什么運行成功輸出錯誤啊

#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;? ??

}


正在回答

2 回答

你的代碼中存在幾個關鍵問題,主要是關于如何正確地從一個三位數中提取百位、十位和個位數字的方法。你當前的計算方法是不正確的。正確的做法應該使用除法和取模運算來分別獲取這三個位置上的數值。

核心問題:

  1. 提取數字的方式錯誤:你嘗試通過減法操作直接計算出各個位數,這是不可行的。正確的方法是利用整除(/)和求余(%)運算符。
  2. 變量初始化順序問題:在你的原始代碼中,你在未定義sdtd的情況下就嘗試使用它們進行計算,這會導致邏輯錯誤。

解決方案:

  • 使用?num?/?100?來獲取百位數字。
  • 使用?(num?%?100)?/?10?來獲取十位數字。
  • 使用?num?%?10?來獲取個位數字。

修改后的完整代碼:

#include?<stdio.h>

int?main()?
{?
????//?循環遍歷所有三位數
????for(int?num?=?100;?num?<?1000;?num++)?
????{
????????//?獲取三位數num的百位、十位和個位上的數字
????????int?hd?=?num?/?100;
????????int?td?=?(num?%?100)?/?10;
????????int?sd?=?num?%?10;

????????//?檢查是否為水仙花數
????????if(num?==?hd*hd*hd?+?td*td*td?+?sd*sd*sd)
????????{
????????????printf("水仙花數字:%d\n",?num);
????????}
????}

????return?0;?
}

這段修改后的代碼能夠正確識別并打印所有的水仙花數(即每個位上的立方和等于該數本身的三位數)。希望這能解決你的問題。如果還有其他疑問,請繼續提問。

0 回復 有任何疑惑可以回復我~

不是從,是運行成功沒有輸出

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

佬們,這個為什么運行成功輸出錯誤啊

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號