大一新生 求大佬帮忙看看这个c语言哪里出错🌚
顺便教教我怎么做 谢谢
#include<stdio.h>
int no_of_digits(int x)
{
int w,n;
for(w=10,n=1;x/w==0;w*=10)
n=n+1;
return n;
}
int power(int x, int y)
{
int i,num=1;
for(i=1;i<y+1;i++)
num=num*x;
return num;
}
int is_narciss(int x)
{
int i,n,sum;
sum=0;
n=no_of_digits(x);
for(i=1;i<=n;i++)
{
sum+=power(x%10,n);
x/=10;
}
return sum;
}
int main(void)
{
int x,s;
for(x=0;x<1000000;x++)
{
s=is_narciss(x);
if(s==x)
printf("%d\n",s);
}
return 0;
}
有两处错误:
第一处:for(w=10,n=1;x/w==0;w*=10) 这里应该是 x/w != 0
第二处:sum+=power(x%10,n); //这里应该是 sum+=power(x%10,3); 水仙花是各位数的立方和,所以power的第二个参数是3。
完整代码如下,如有帮助,请帮忙采纳一下,谢谢。
#include<stdio.h>
int no_of_digits(int x)
{
int w,n;
for(w=10,n=1;x/w!=0;w*=10) //修改1
n=n+1;
return n;
}
int power(int x, int y)
{
int i,num=1;
for(i=1;i<y+1;i++)
num=num*x;
return num;
}
int is_narciss(int x)
{
int i,n,sum;
sum=0;
n=no_of_digits(x);
for(i=1;i<=n;i++)
{
sum+=power(x%10,3); //修改2
x/=10;
}
return sum;
}
int main(void)
{
int x,s;
is_narciss(123);
for(x=0;x<1000000;x++)
{
s=is_narciss(x);
if(s==x)
printf("%d\n",s);
}
return 0;
}
http://c.biancheng.net/view/504.html
#include <stdio.h>
int main()
{
int hun, ten, ind, n;
printf("result is:");
for( n=100; n<1000; n++ ) /*整数的取值范围*/
{
hun = n / 100;
ten = (n-hun*100) / 10;
ind = n % 10;
if(n == hun*hun*hun + ten*ten*ten + ind*ind*ind) /*各位上的立方和是否与原数n相等*/
printf("%d ", n);
}
printf("\n");
return 0;
}