如果你有任何不同看法,或更好的解决方案,可以留言给我,请不吝赐教!
/* 说明:由于<math.h>中的pow函数不够精确,所以自己写了一个mypow函数,用于求整数的次幂*/
#include <stdio.h>
/* 函数声明 */
int mypow(int x, int n);
int is_daffodils(int val);
/* 主函数 */
int main()
{
int n;
printf("请输入一个整数:\n");
scanf("%d", &n);
if (is_daffodils(n)) {
printf("%d是水仙花数。\n", n);
} else {
printf("%d不是水仙花数。\n", n);
}
system("pause");
return 0;
}
/* 求x的n次方*/
int mypow(int x, int n)
{
int i, ret;
for (i = 0, ret = 1; i < n; i++) {
ret *= x;
}
return ret;
}
/* 判断是否水仙花数*/
int is_daffodils(int val)
{
int n, sum, i;
if (val < 0) {
return 0;
}
/* 计算val的位数n */
if (val == 0) {
n = 1;
} else {
for (n = 0, i = val; i > 0; n++) {
i /= 10;
}
}
/* 判断是否水仙花数*/
for (i = val, sum = 0; i > 0; i /= 10) {
sum += mypow(i % 10, n);
}
if (sum == val) {
return 1;
} else {
return 0;
}
}
转载请注明出处hi.baidu.com/公子迅,谢谢大家的支持 ^_^
文章来自: