C语言本关任务: 一个n位正整数如果等于它的n个数字的n次方和,该数称为n位自方幂数。设计求3~6位自方幂数。 输出格式要求:"%d位自幂数有:" "%d " "\n" (每位完后换行,每个数字后面跟一个空格)
时间: 2024-02-23 09:01:23 浏览: 61
C语言中的水仙花数,是指一个 n 位数,它的每个位上的数字的n次方之和等于它本身
好的,这是一个比较有趣的问题。下面是C语言的代码实现:
```c
#include<stdio.h>
#include<math.h>
int main(){
int i, j, k, n, sum;
printf("3位自幂数有:");
for(i=100; i<=999; i++){
n = 0;
sum = 0;
j = i;
while(j > 0){
n++;
j /= 10;
}
j = i;
while(j > 0){
k = j % 10;
sum += pow(k, n);
j /= 10;
}
if(sum == i){
printf("%d ", i);
}
}
printf("\n");
printf("4位自幂数有:");
for(i=1000; i<=9999; i++){
n = 0;
sum = 0;
j = i;
while(j > 0){
n++;
j /= 10;
}
j = i;
while(j > 0){
k = j % 10;
sum += pow(k, n);
j /= 10;
}
if(sum == i){
printf("%d ", i);
}
}
printf("\n");
printf("5位自幂数有:");
for(i=10000; i<=99999; i++){
n = 0;
sum = 0;
j = i;
while(j > 0){
n++;
j /= 10;
}
j = i;
while(j > 0){
k = j % 10;
sum += pow(k, n);
j /= 10;
}
if(sum == i){
printf("%d ", i);
}
}
printf("\n");
printf("6位自幂数有:");
for(i=100000; i<=999999; i++){
n = 0;
sum = 0;
j = i;
while(j > 0){
n++;
j /= 10;
}
j = i;
while(j > 0){
k = j % 10;
sum += pow(k, n);
j /= 10;
}
if(sum == i){
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
这个程序会输出3~6位自方幂数,每个数字后面跟一个空格,每位完后换行。如果你想了解具体实现过程,请参考代码注释。
阅读全文