新手c语言求助
这个问题是输入一个N(3-7的整数)求N位数中的水仙花数(eg:153=1^3+5^3+3^3)#include <stdio.h>
#include<math.h>
int main()
{
printf("请输入一个正整数N 大于等于3小于等于7");
int N,i,a,b,c,sum;
sum=0;
scanf("%d",&N);
i=pow(10,N-1);
a=pow(10,N);
b=i;
while(i<a){
c=b%10;
c=pow(c,N);
sum+=c;
b/=10; (通过循环把每一位数都提取出来并N次方加到sum,b=0的时候通过if,然后i+1遍历从i到a的数)
if (b=0,sum=i){
printf("%d",i);
i++;
b=i;
continue;
}
}
return 0;
}
感觉逻辑没什么问题但输出的数根本不是水仙花数.....求助dalao
{:10_277:} {:10_277:} pow函数默认返回的是double吧 本帖最后由 jackz007 于 2019-2-26 12:09 编辑
整数判断,还是尽量不要用 pow() 吧,会因为误差影响结果
#include <stdio.h>
int main(void)
{
int N , i , a , b , c , sum ;
printf("请输入一个正整数 N 大于等于 3 小于等于 7 : ") ;
scanf("%d" , & N) ;
a = 1 ;
for(i = 0 ; i < N ; i ++) a *= 10 ;
for(i = 2 ; i < a ; i ++) {
sum = 0 ;
b = i ;
while(b) {
c = b % 10 ;
b /= 10 ;
sum += c * c * c ;
}
if(sum == i) printf("%d\n" , i) ;
}
}
jackz007 发表于 2019-2-26 12:06
整数判断,还是尽量不要用 pow() 吧,会因为误差影响结果
那您意思是把次方形式变一下逻辑就对了是吗? 本帖最后由 jackz007 于 2019-3-6 22:46 编辑
cher112 发表于 2019-3-6 18:56
那您意思是把次方形式变一下逻辑就对了是吗?
不是逻辑,而是精度问题,你可以把第16句的代码改成:
sum += int(pow(c , 3)) ;
自己比较一下结果
页:
[1]