|
20鱼币
求助,水仙花数的代码 为什么会循环永远打印1
- #include <stdio.h>
- #include <math.h>
- void flower(int n);
- int main(void) {
- int n;
- scanf("%d", &n);
- flower(n);
- return 0;
- }
- void flower(int n) {
- int i, j, k, sum, temp;
- for (i = pow(10, n - 1); i < pow(10, n); i ++) {
- sum = 0;
- k = i;
- temp = i;
- while (temp) {
- j = temp % 10;
- sum += pow(j, n);
- temp = temp / 10;
- }
- if (sum == k) {
- printf("%d\n", sum);
- }
- }
- }
复制代码
试试,用math.h里的pow,pow(5,3)=124,所以自己写了个整数幂
- #include <stdio.h>
- //#include <math.h>
- void flower(int n);
- int pow(int a,int n)
- {
- if(0==n)return 1;
- return a*pow(a,n-1);
- }
- int main(void) {
- int n;
- scanf("%d", &n);
- flower(n);
- return 0;
- }
- void flower(int n) {
- int i, j, k, sum, temp;
- for (i = pow(10, n - 1); i < pow(10, n); i ++) {
- sum = 0;
- k = i;
- temp = i;
- while (temp) {
- j = temp % 10;
- sum += pow(j, n);
- temp = temp / 10;
- }
- if (sum == k) {
- printf("%d\n", sum);
- }
- }
- }
复制代码
|
最佳答案
查看完整内容
试试,用math.h里的pow,pow(5,3)=124,所以自己写了个整数幂
|