所以我正在尝试制作一个程序,以确定该数字是否为满意数字。但该程序似乎没有退出循环,并且在输入数字后没有任何反应。
有什么东西我缺少或者我做错了吗? (只学习for循环,while循环,while while循环,以及if语句,只能使用它们。)
我一直在做这个程序3天,但仍然无法弄清楚这个程序有什么问题。如果你可以教我哪里出错了会很好。感谢
#include <iostream>
using namespace std;
int main(){
int number, temp, count;
cout<<"please enter a number :";
cin>>number; // to ask for input
while(number != 1 and number != 4)
{
while(number !=0)
{
number = number/10;
count += 1; //start to calculate how many digits are in the number
}
while(count!=0)
{
number == number + (temp/(10^(count-1))^2); // to add the square of the number
temp = temp%(10^(count-1));
count-=1;
}
if(count == 0)
{
temp = number; // to set temp as number after the program is over so it can run again if it is not done
}
}
if(number == 1){
cout<<"This is a happy number"; // to print result
}
else if(number == 4){
cout<<"This is not a happy number"; // to print result
}
return 0;
}
答案 0 :(得分:0)
首先正确初始化变量, count取一些任意值,然后用这样的垃圾值计算数字位数会给你一个错误的答案,而且temp varible的值也没有初始化,这也是垃圾值 并在库中的cpp中使用pow(x,y)函数来计算数字的幂,x ^ y将不计算cpp中的功率
如果遇到任何错误,可以使用gdb进一步调试代码
答案 1 :(得分:0)
正如其他一些人在评论中指出的那样,程序的逻辑是模糊的,对于你所描述的简单程序,我认为你不需要内部while循环。 LoveTronic已经注意到,对一些基本循环概念的回顾可能会有所帮助。但是,为了帮助您使用工作程序,我修改了您的程序以执行您在问题中描述的操作。
#include <iostream>
using namespace std;
int main() {
int number;
cout << "please enter a number :";
cin >> number; // to ask for input
while (true) {
if ( number == 1 ) {
cout << "This is a happy number\n";
return 1;
}
else if ( number == 4 ) {
cout << "this is not a happy number\n";
return 1;
}
cout << "please enter a number :";
cin >> number; // to ask for input
}
return 0; // this will never reach
}