我试图创建一个程序,找到满足四个特定要求的四位数字:所有四个数字都不同,千位数是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 }
答案 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;
}
在您的每项功能中,确保在检查某些内容是否为值时使用==
而不是=
。