习题4-6 水仙花数

最初,我使用math.h中的pow函数,当输入为7时,pat测试系统显示超时。一直在想是不是程序变量有溢出的问题。

后来,改用自己写的pow函数,发现可以通过pat测试。

 1 #include<stdio.h>
 2 int pow(int m, int n);
 3 
 4 int main()
 5 {
 6     int n, i, temp;
 7     int number1, number2;
 8     int digit;
 9     int sum;
10     scanf_s("%d", &n);
11     number1 = pow(10, (n - 1.0));
12     number2 = pow(10, n) - 1;
13 
14     for (i = number1; i <= number2; i++)
15     {
16         sum = 0;
17         temp = i;
18         while (temp != 0)
19         {
20             digit = temp % 10;
21             temp = temp / 10;
22             sum = sum + pow(digit, n);
23         }
24         if (sum == i)
25         {
26             printf("%d
", i);
27         }        
28     }
29 
30     return 0;
31 }
32 int pow(int m, int n)
33 {
34     int result, i;
35     if (n == 0)
36     {
37         return 1;
38     }
39     else
40     {
41         result = 1;
42         for (i = 1; i <= n; i++)
43         {
44             result = result * m;
45         }
46         return result;
47     }
48 }
原文地址:https://www.cnblogs.com/2018jason/p/10897776.html