C ++不断跳过我的" for"环

时间:2018-04-05 19:44:00

标签: c++ function for-loop

我试图创建一个程序,找到满足四个特定要求的四位数字:所有四个数字都不同,千位数是3倍数十,数字是奇数,总和数字为27.由于某种原因,尽管程序编译,for循环不会运行并始终输出初始化程序编号(1000)。我的主要代码和我打电话的四个功能如下。我无法弄清楚为什么它不会正常运行。我对编码完全陌生,所以我们非常感谢任何提示/帮助。谢谢!

主要功能:

      5 //prototypes
      6 bool differentDigits(int);
      7 bool thouThreeTen(int);
      8 bool numberIsOdd(int);
      9 bool sumIs27(int);
     10 
     11 #include <iostream>
     12 using namespace std;
     13 
     14 int main ()
     15 {
     16         //variables
     17         int n;
     18 
     19         //processing
     20 
     21         for(n=1000;n<=9999;n++)
     22         {
     23                 if(differentDigits(n)==true)
     24                 {
     25                         break;
     26                 }
     27 
     28                 if(thouThreeTen(n)==true)
     29                 {
     30                         break;
     31                 }
     32 
     33                 if(numberIsOdd(n)==true)
     34                 {
     35                         break;
     36                 }
     37 
     38                 if(sumIs27(n)==true)
     39                 {
     40                         break;
     41                 }
     42 
     43         }
     44 
     45         //output
     46         cout << n << endl;
     47 
     48         return 0;
     49 }

differentDigits功能:

      3 //Verify all four digits are the same
      4 
      5 #include <iostream>
      6 using namespace std;
      7 
      8 bool differentDigits (int n)
      9 {
      10         int n1, n2, n3, n4;
      11 
      12         n1 = n/1000;
      13         n2 = (n/100) % 10;
      14         n3 = (n/10) % 10;
      15         n4 = n % 10;
      16 
      17         if(n1 != n2 != n3 != n4)
      18         {
      19                 return true;
      20         }
      21         else
      22         {
      23                 return false;
      24         }
      25 
      26 }

thThreeTen功能:

      3 //Verify digit in thousands place is 3x the digit in tens place
      4 
      5 #include <iostream>
      6 using namespace std;
      7 
      8 bool thouThreeTen(int n)
      9 {
      10         int n1, n2, n3, n4;
      11 
      12         n1 = n/1000;
      13         n2 = (n/100) % 10;
      14         n3 = (n/10) % 10;
      15         n4 = n % 10;
      16 
      17         if(n1 = (n3 * 3))
      18         {
      19                 return true;
      20         }
      21         else
      22         {
      23                 return false;
      24         }
      25 
      26 }

numberIsOdd函数:

      3 //Verify that the number is odd
      4 
      5 #include <iostream>
      6 using namespace std;
      7 
      8 bool numberIsOdd (int n)
      9 {
      10         if((n % 2)==1)
      11         {
      12                 return true;
      13         }
      14         else
      15         {
      16                 return false;
      17         }
      18 
      19 }

sumIs27功能:

      3 //Verify that the sum of digits is 27
      4 
      5 #include <iostream>
      6 using namespace std;
      7 
      8 bool sumIs27(int n)
      9 {
      10         int n1, n2, n3, n4;
      11 
      12         n1 = n/1000;
      13         n2 = (n/100) % 10;
      14         n3 = (n/10) % 10;
      15         n4 = n % 10;
      16 
      17         if((n1+n2+n3+n4)==27)
      18         {
      19                 return true;
      20         }
      21         else
      22         {
      23                 return false;
      24         }
      25 
      26 }

1 个答案:

答案 0 :(得分:0)

您的代码存在多个问题,第一个问题出现在main()中。如果任何函数返回true,则结束循环。这可能就是为什么你看到for循环没有被执行的原因。另一个问题是,在您的函数中,您使用if(n1 = (n3 * 3))等使用赋值运算符的条件,而不是检查它们是否相同。您要使用if(n1 == (n3 * 3))。你的主要看起来像:

int main()
{
    int n = 0;

    for(n = 1000; n < 9999; ++n)
    {
        if(differentDigits(n) && thouThreeTen(n) && numberIsOdd(n) && sumIs27(n))
        {
            break;
        }
    }
    cout << n << endl;
}

在您的每项功能中,确保在检查某些内容是否为值时使用==而不是=