水仙花数c语言代码是编程入门常考的基础题,很多新手容易在取余、循环判断上出错。本文从基础实现到优化思路,一步步带你写出正确的水仙花数c语言代码,轻松搞定这类题目。
一、水仙花数的基础概念与判断逻辑
首先明确:水仙花数是**三位数中各位立方和等于自身**的数(如153=1³+5³+3³)。判断分4步:
- 遍历100~999的三位数;
- 取出百位、十位、个位;
- 计算三个位的立方和;
- 等于原数则判定为水仙花数。
二、水仙花数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语言代码核心是“遍历+取位+立方和判断”,掌握这三点就能写对。下次遇到类似题,试试封装函数优化吧!








