第一个和第二个数字之间能被 4 和 6 整除的所有整数的总和
Sum of all integers that are both divisible by 4 and 6 between the first and second number
我需要编写一个将获得 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
这是正确的程序:
#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(
有两个问题:
首先,由于用作边界的 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)
如前所述,您只需要检查 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;
}
相关文章:
- 检查输入是否不是整数或数字
- 如何找到大于整数的最小数字
- 在数字之间插入 + 或 - 符号以使其等于整数
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- 整数区间(或 int 数组)中每个数字的出现次数
- 当我输入字符类型的数字时,为什么我无法获得整数?
- 必须首先打印向量 v1 中最接近整数 x 的数字<int>
- 分隔整数 (C++) 的数字
- 如何优化代码以返回最接近给定整数的数字,但给定列表中不存在?
- C++:从文件中读取字符串和整数,并获得最大数字
- 如何在C ++中替换整数的前两位数字?
- 如何计算整数的十进制数字?
- 如何计算整数链中使用了多少次数字?
- 为什么这个程序接受整数和字母数字输入并打印它们? C++ 中的 std::string 也采用整数值吗?
- R 中的算术在数字上比整数更快。这是怎么回事?
- 我想使用 std::stoi 函数在 cpp 中将字符串转换为整数,因为我想在字符串中找到不同数字的总和(在下级酶中)
- C++以字符串形式打印出来的整数数字
- 使用C - CIN获取几个整数数字,然后将它们放入数组中
- C++整数数字逐行
- 为什么将'0'添加到整数数字可以转换为字符?