水仙花数c语言代码是编程入门常考的基础题,很多新手容易在取余、循环判断上出错。本文从基础实现到优化思路,一步步带你写出正确的水仙花数c语言代码,轻松搞定这类题目。

一、水仙花数的基础概念与判断逻辑

首先明确:水仙花数是**三位数中各位立方和等于自身**的数(如153=1³+5³+3³)。判断分4步:

  1. 遍历100~999的三位数;
  2. 取出百位、十位、个位;
  3. 计算三个位的立方和;
  4. 等于原数则判定为水仙花数。

二、水仙花数c语言代码的基础实现

直接上完整代码,带注释:

#include <stdio.h>
int main() {
    int num, a, b, c;
    printf("水仙花数有:\n");
    for(num=100; num<=999; num++) {
        a = num/100; // 取百位
        b = (num/10)%10; // 取十位
        c = num%10; // 取个位
        if(a*a*a + b*b*b + c*c*c == num) {
            printf("%d ", num);
        }
    }
    return 0;
}

运行后输出:153 370 371 407。

三、常见易错点与优化技巧

新手易踩3个坑:

  • 循环范围错:比如从1开始(忽略仅三位数是水仙花数);
  • 取位错:比如十位计算顺序搞反;
  • 立方计算错:用^代替*(c语言中^是异或,非幂运算)。

优化:封装判断函数更简洁:

int isNarcissistic(int n) {
    int a=n/100, b=(n/10)%10, c=n%10;
    return a*a*a + b*b*b + c*c*c == n;
}

主函数调用即可,逻辑更清晰。

总结:水仙花数c语言代码核心是“遍历+取位+立方和判断”,掌握这三点就能写对。下次遇到类似题,试试封装函数优化吧!