大一新生 求大佬帮忙看看这个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;
}
c语言水仙花数的求解?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 技术专家团-小桥流水 2021-10-26 22:50关注
有两处错误:
第一处: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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报