这个程序有什么问题?为什么不退出循环?

时间:2016-11-02 00:36:48

标签: c++

所以我正在尝试制作一个程序,以确定该数字是否为满意数字。但该程序似乎没有退出循环,并且在输入数字后没有任何反应。

有什么东西我缺少或者我做错了吗? (只学习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;
}

2 个答案:

答案 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
}