69,364
社区成员
发帖
与我相关
我的任务
分享
/*一个n位正整数如果等于它的n个数字的n次方和,该数称为n位自方幂数。设计求3~6位自方幂数。
**输出格式要求:"%d位自幂数有:" "%ld\t" "\n" (每位完后换行)
程序运行示例如下:
3位自幂数有:153 370 371 407
4位自幂数有:1634 8208 9474
5位自幂数有:54748 92727 93084
6位自幂数有:548834*/
#include<stdio.h>
#include<math.h>
int hhh(int n)
{
long a[10], i, j, x, y, t, sum=0;
x=pow(10, n-1);
y=pow(10, n);
for(i=x;i<y;i++)
{
t=i;
for(j=0;j<n;j++)
{
a[j]=t%10;
t=t/10;
}
for(j=0;j<n;j++)
{
sum+=pow(a[j], n);
}
if(sum==i)
{
printf("%ld\t", sum);
}
sum=0;
}
}
int main(void)
{
int i;
for(i=3;i<=6;i++)
{
printf("%d位自幂数有:", i);
hhh(i);
printf("\n");
}
}
int hhh(int n)
{
long a[10]={0}, i, j, x, y, t, sum;
x=pow(10, n-1);
y=pow(10, n);
//printf("X=%d,Y=%d\n",x,y);
for(i=x;i<y;i++)
{
printf("i=%d\n",i);//这里加一句打印出i
t=i;
sum=0;
for(j=0;j<n;j++)
{
a[j]=t%10;
t=t/10;
}
for(j=0;j<n;j++)
{
sum+=pow(a[j],n);
printf("sum+第(%d)次=%d\n",j,sum);//这里看看sum的值
system("pause"); //这里暂停下看的清楚
}
if(sum==i)
{
printf("%ld \t",sum);
}
}
}
实际效果,如下图:printf("x=d%,y=%d\",x,y);//这里增加看看x y 的值。或者干脆 x=150,y=155赋值,看看下面能不能输出153.
printf("X=%d,Y=%d\n",x,y);
int hhh(int n)
{
long a[10], i, j, x, y, t, sum;
x=pow(10, n-1);
y=pow(10, n);
printf("x=d%,y=%d\",x,y);//这里增加看看x y 的值。或者干脆 x=150,y=155赋值,看看下面能不能输出153.
for(i=x;i<y;i++)
{
t=i;
sum=0;//把sum赋初值放在这里
for(j=0;j<n;j++)
{
a[j]=t%10;
t=t/10;
}
for(j=0;j<n;j++)
{
sum+=pow(a[j],n);
}
if(sum==i)
{
printf("%ld \t",sum);// “%ld\t"在间加入一空格.
}
}
}
你把数组a[10]={0};赋初值再试试。
int hhh(int n)
{
long a[10], i, j, x, y, t, sum;
x=pow(10, n-1);
y=pow(10, n);
for(i=x;i<y;i++)
{
t=i;
sum=0;//把sum赋初值放在这里
for(j=0;j<n;j++)
{
a[j]=t%10;
t=t/10;
}
for(j=0;j<n;j++)
{
sum+=pow(a[j],n);
}
if(sum==i)
{
printf("%ld \t",sum);// “%ld\t"在间加入一空格.
}
}
}