首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言判斷水仙花數:輸入三位數驗證是否為阿姆斯壯數

     編輯:關於C

互動式驗證程式

讀取使用者輸入的三位數,拆解百/十/個位,驗證立方和是否等於原數。

完整程式碼

#include <stdio.h>

int main()
{
    int num, a, b, c;
    printf("請輸入一個三位整數: ");
    scanf("%d", &num);

    // 輸入合法性檢查
    if (num < 100 || num > 999) {
        printf("輸入錯誤:非三位數\n");
        return 1;
    }

    a = num % 10;         // 個位
    b = num / 10 % 10;    // 十位
    c = num / 100;        // 百位

    if (num == a*a*a + b*b*b + c*c*c)
        printf("%d 是水仙花數!\n", num);
    else
        printf("%d 不是水仙花數!\n", num);
    return 0;
}

執行範例

請輸入一個三位整數: 153
153 是水仙花數!

請輸入一個三位整數: 123
123 不是水仙花數!

關鍵技巧:數位拆解通用公式

// 取第 k 位 (1=個位, 2=十位, ...)
int digit = (num / (int)pow(10, k-1)) % 10;

或用迴圈通用拆解:

int temp = num, sum = 0;
while (temp > 0) {
    int d = temp % 10;
    sum += d*d*d;
    temp /= 10;
}

常見錯誤

  • 未檢查輸入範圍,導致非三位數也參與運算
  • 用 pow(d,3) 產生浮點誤差,應用 d*d*d
  • 變數名稱混淆(a/b/c 對應個/十/百位易記錯)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved