我需要编写一个将获取2个整数的程序。然后,程序将显示两个数字之间可被4和6整除的所有整数的总和。
我尝试将代码写在下面:
checkAndRequestPermissions()
我的预期结果应该是
输入第一个数字:4
输入的第二个数字:12
在4和12之间可被4和6整除的所有整数的总和为12
“因为12是唯一可以被4和6整除的数字”
但是实际结果是
输入第一个数字:4
输入的第二个数字:12
在4和12之间可被4和6整除的所有整数的总和为56
答案 0 :(得分:4)
这是正确的程序:
#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;
}
答案 1 :(得分:3)
if(num1%4 == 0 && num2%6 == 0)中的条件是错误的。
您需要将其更改为:-
(i%4 == 0 && i%6 == 0)
答案 2 :(得分:1)
有两个问题:
首先,由于将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)
另外,我们可以使它更短一些:如果一个数字可以被4和6整除,如果可以被12整除,那么您的支票可能看起来像这样:
if(i % 12 == 0)
答案 3 :(得分:0)
如前所述,您只需要检查除数是否为12,并且需要使用i
作为条件中的检查。我的系统没有pause()
,因此您可以使用另一个cin >>调用来创建暂停。当然,那么您必须提供字母/数字输入。空间不足。
#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;
}