已经检查了好久 没办法了
注释打了一些
题目是这样
这是我的答案
int narcissistic( int number ){
int sum=0 , Number=number;//备份number
while(number!=0){
sum+=(number%10)*(number%10)*(number%10); // 把最后一位数立方运算
number=number/10; //把最后一位数扔掉
}
if(Number==sum){
return 1;
}else{
return 0 ;
}
}
void PrintN( int m, int n ){
m++;//因为题目要求边界值另外判断 这里跳过不作判断
while(m<n){
if(narcissistic(m)==1){
printf("%d\n",m);
}
m++;
}
}
你好,函数内部第一次调用申明的sum=0,后面不会再调用这个申明所赋的值,所以之后的每次调用sum都是上次调用得到的,正确的做法分开写
int sum;
sum = 0;
既要三位数,又要四位数,判断一下就行
int narcissistic( int number ){
int sum=0 , Number=number, ndigit;//备份number
ndigit = 0;
while(number!=0){number/=10; ndigit++;//先把位数计算好
}
number = Number;
while(number!=0){
if(ndigit==3)
sum+=(number%10)*(number%10)*(number%10);//如果三位数那就乘三次
else if(ndigit==4)
sum+=(number%10)*(number%10)*(number%10)*(number%10);//如果四位数那就乘四次
// 把最后一位数立方运算
number=number/10; //把最后一位数扔掉
}
if(Number==sum){
return 1;
}else{
return 0 ;
}
}
void PrintN( int m, int n ){
m++;//因为题目要求边界值另外判断 这里跳过不作判断
while(m<n){
if(narcissistic(m)==1){printf("%d\n",m);
}
m++;
}
}
哦,晕了。在VS2010上调试,没毛病啊,输出水仙花数了啊
什么样的错误提示?这代码没看出有问题。