我需要编写一个可以获得2个整数的程序。然后程序将显示两个数字之间可被4和6整除的所有整数的总和
我尝试在下面执行代码:
#include <iostream>
using namespace std;
int main()
{
int num1, num2, sum=0;
cout << "Input first number : ";
cin >> num1;
cout << "Input second number : ";
cin >> num2;
for(int i = num1 + 1;i<num2;i++)
{
if ( num1 % 4 == 0 && num2 % 6 == 0)
{
sum = sum + i;
}
}
cout<< "The sum of all integers that are both divisible by 4 and 6 between " << num1 << " and " << num2 << " is " << sum << endl;
system("pause");
return 0;
}
我的预期结果应该是
输入第一个数字:4 输入第二个数字:12 在4和12之间可以被4和6整除的所有整数的总和是12“,因为12是唯一可以被4和6整除的数字”
但实际结果是 输入第一个数字:4 输入第二个数字:12 在4和12之间可被4和6整除的所有整数的总和为56
有两个问题:
首先,当用作边界的4和12将产生12而不是0时,您还需要在循环中包含边界:
for(int i = num1; i <= num2; i++)
// ^ (!)
// ^ - 1 dropped
那你选择加数的条件是不正确的:
if(num1 % 4 == 0 && num2 % 6 == 0)
请注意,num1 == 4
和num2 == 12
总是如此,所以你要总结两者之间的所有数字......你真正想要的是检查在这两个边界之间运行的变量,即i
:
if(i % 4 == 0 && i % 6 == 0) // i will be 4, 5, ... , 11, 12 (with above fixed loop)
另外,我们可以让它更短一些:如果它可以被12整除,则数字可以被4和6整除。所以你的检查可能看起来像:
if(i % 12 == 0)
这是正确的程序:
#include <iostream>
using namespace std;
int main()
{
int num1, num2, sum=0;
cout << "Input first number : ";
cin >> num1;
cout << "Input second number : ";
cin >> num2;
for(int i = num1;i<=num2;i++) // if you want to include num1 and num2
//for(int i = num1+1;i<num2;i++) // if you do not want to include num1 and num2
{
if ( i % 4 == 0 && i % 6 == 0)
{
sum = sum + i;
}
}
cout<< "The sum of all integers that are both divisible by 4 and 6 between " << num1 << " and " << num2 << " is " << sum << endl;
system("pause");
return 0;
}
if(num1%4 == 0 && num2%6 == 0)中的条件是错误的。
您需要将其更改为: -
(i%4 == 0 && i%6 == 0)
如上所述,您只需要检查12的可分性,并且您需要使用i
作为条件中的检查。我的系统没有pause()
,所以你可以使用另一个cin >> call来创建暂停。当然,那么你必须提供一个字母/数字输入。空间不足。
#include <iostream>
using namespace std;
int main()
{
int num1, num2, sum=0;
int wait_var;
cout << "Input first number : ";
cin >> num1;
cout << "Input second number : ";
cin >> num2;
for(int i = num1 + 1;i<num2;i++) // bounds are correct
{
if ( i % 12 == 0) // check for divisibility by 12 of i, not of the num1 and num2
{
sum = sum + i;
}
}
cout<< "The sum of all integers that are both divisible by 4 and 6 between " << num1 << " and " << num2 << " is " << sum << endl;
cin >> wait_var;
return 0;
}