C++ 中的 Armstrong 数字程序无法打印正确的输出
Armstrong number program in C++ does not print the correct output
#include<iostream>
#include<math.h>
using namespace std;
int main() {
int num,count,temp,sum=0,powr,rem;
cin>>num;
temp=num;
while(temp>0){
++count;
temp=temp/10;
}
while(num>0){
int num;
rem=num%10;
powr=round(pow(rem,count));
sum+=powr;
num=num/10;
}
if(sum==num){cout<<"true";}
else
cout<<"false";
return 0;
}
这段代码出于某种原因只打印 false,但从来不打印 true,我已经尝试 运行 使用调试器通过它,它正确地计算了 sum 变量的值,但是在那之后最终总是打印 false 尽管总和等于用户输入的数字。
在第二个 while 循环中,您的 num 变量在 while 的所有迭代结束时等于零。并且您将 0 等同于 if 语句中的总和,因此它始终打印 false。
谢谢希望你会得到它
您对阿姆斯特朗数的定义是正确的,即 pow
位数字之和,其中 pow = count of digits
.
但是,问题出现在最后一个while循环中。当 num equals to zero
时控件移出 while 循环。然后在声明中
if(sum==num){cout<<"true";}
你只是在比较 sum == 0
这显然是错误的。
解决方案:
只是简单地取另一个变量,比如temp2 = num
,最后比较一下。
代码:
#include<iostream>
#include<math.h>
using namespace std;
int main() {
int num,count,temp,temp2,sum=0,powr,rem;
cin>>num;
temp=num;
temp2 = num;
while(temp>0){
++count;
temp=temp/10;
}
while(num>0){
rem=num%10;
powr=round(pow(rem,count));
sum+=powr;
num=num/10;
}
if(sum==temp2){cout<<"true";}
else
cout<<"false";
return 0;
}
希望你觉得它有成果!
#include<iostream>
#include<math.h>
using namespace std;
int main() {
int num,count,temp,sum=0,powr,rem;
cin>>num;
temp=num;
while(temp>0){
++count;
temp=temp/10;
}
while(num>0){
int num;
rem=num%10;
powr=round(pow(rem,count));
sum+=powr;
num=num/10;
}
if(sum==num){cout<<"true";}
else
cout<<"false";
return 0;
}
这段代码出于某种原因只打印 false,但从来不打印 true,我已经尝试 运行 使用调试器通过它,它正确地计算了 sum 变量的值,但是在那之后最终总是打印 false 尽管总和等于用户输入的数字。
在第二个 while 循环中,您的 num 变量在 while 的所有迭代结束时等于零。并且您将 0 等同于 if 语句中的总和,因此它始终打印 false。 谢谢希望你会得到它
您对阿姆斯特朗数的定义是正确的,即 pow
位数字之和,其中 pow = count of digits
.
但是,问题出现在最后一个while循环中。当 num equals to zero
时控件移出 while 循环。然后在声明中
if(sum==num){cout<<"true";}
你只是在比较 sum == 0
这显然是错误的。
解决方案:
只是简单地取另一个变量,比如temp2 = num
,最后比较一下。
代码:
#include<iostream>
#include<math.h>
using namespace std;
int main() {
int num,count,temp,temp2,sum=0,powr,rem;
cin>>num;
temp=num;
temp2 = num;
while(temp>0){
++count;
temp=temp/10;
}
while(num>0){
rem=num%10;
powr=round(pow(rem,count));
sum+=powr;
num=num/10;
}
if(sum==temp2){cout<<"true";}
else
cout<<"false";
return 0;
}
希望你觉得它有成果!