本关任务:用C语言 一个n位正整数如果等于它的n个数字的n次方和,该数称为n位自方幂数。设计求3~6位自方幂数。 输出格式要求:"%d位自幂数有:" "%d " "\n" (每位完后换行,每个数字后面跟一个空格)
时间: 2024-03-03 20:52:48 浏览: 57
C语言求一个正整数的位数
3星 · 编辑精心推荐
好的,我明白了。以下是代码实现:
```c
#include <stdio.h>
#include <math.h>
int main()
{
int i, j, n, sum, digit;
printf("3位自幂数有:");
for (i = 100; i < 1000; i++)
{
n = i;
sum = 0;
for (j = 1; j <= 3; j++)
{
digit = n % 10;
n /= 10;
sum += pow(digit, 3);
}
if (sum == i)
{
printf("%d ", i);
}
}
printf("\n");
printf("4位自幂数有:");
for (i = 1000; i < 10000; i++)
{
n = i;
sum = 0;
for (j = 1; j <= 4; j++)
{
digit = n % 10;
n /= 10;
sum += pow(digit, 4);
}
if (sum == i)
{
printf("%d ", i);
}
}
printf("\n");
printf("5位自幂数有:");
for (i = 10000; i < 100000; i++)
{
n = i;
sum = 0;
for (j = 1; j <= 5; j++)
{
digit = n % 10;
n /= 10;
sum += pow(digit, 5);
}
if (sum == i)
{
printf("%d ", i);
}
}
printf("\n");
printf("6位自幂数有:");
for (i = 100000; i < 1000000; i++)
{
n = i;
sum = 0;
for (j = 1; j <= 6; j++)
{
digit = n % 10;
n /= 10;
sum += pow(digit, 6);
}
if (sum == i)
{
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
程序中先使用一个for循环分别遍历3-6位整数,然后对于每个整数,先计算出它的每一位数字,然后将每位的数字的n次方相加,最后判断是否等于原数,如果是,则说明这是一个n位自幂数,将其输出即可。
阅读全文