C - 我的循环一直添加到0

C++ - my loop keeps on adding up to 0

本文关键字:添加 一直 循环 我的      更新时间:2023-10-16

到目前为止,这是我的代码

#include <iostream>
using namespace std;
int main ()
{
int num1 = 0;
int num2 = 0;
int sum = 0;

for(num2 = num1; num1 <= num2; num1 +=2) sum += num1;
    num1 = num1 / 2 == 0? num1 : num1 + 1;
    num2 = num2 / 2 == 0? num2 : num2 - 1;
cout << "Enter the First Number:" << endl;
cin >> num1;
cout << "Enter the Second Number:" << endl;
cin >> num2;
cout << "Total Sum: " << sum << endl;
  } //end for

但总和不断增加0:/

这是问题。

创建一个程序,该程序显示用户输入的两个数字之间和包括两个数字的总和。换句话说,如果用户输入偶数号码,则该数字应包含在总和中。例如,如果用户输入整数2和7,则总和为12(2 4 6)。如果用户进入整数2和8,则总和为20(2 4 6 8)。如果用户输入的第一个整数大于第二个整数,则显示错误消息。

代码是顺序执行的,for循环初始化将使您失去循环的边界,而是考虑此代码。

#include <iostream>
using namespace std;
int main ()
{
    int num1 = 0;
    int num2 = 0;
    int sum = 0;
    cout << "Enter the First Number:" << endl;
    cin >> num1;
    cout << "Enter the Second Number:" << endl;
    cin >> num2;
    if (num1 > num2) // swap the numbers and do not print error message
    {
        int temp = num1;
        num1 = num2;
        num2 = temp;
    }
    //make sure to start from even number
    num1 = num1 % 2 ? num1+1 : num1;
    for(; num1 <= num2; num1 +=2) 
        sum += num1;    
    cout << "Total Sum: " << sum << endl;
  } //en

您需要在获取输入之后计算总和

但是您的整个计算和循环使用是错误的。在这里是固定的:

#include <iostream>
using namespace std;
int main ()
{
    int num1 = 0;
    int num2 = 0;
    int sum = 0;
    cout << "Enter the First Number:" << endl;
    cin >> num1;
    cout << "Enter the Second Number:" << endl;
    cin >> num2;
    if (num1 % 2 == 1) num1 += 1;
    if (num2 % 2 == 1) num2 -= 1;
    while (num1 <= num2) {
        sum += num1;
        num1 += 2;
    }
  cout << "Total Sum: " << sum << endl;
}

请注意以下内容:

  1. %返回模量-num1 % 2 ==1意味着num1是奇数。我拿出了您的三元?:操作员不是因为它们不好,而是因为if更容易阅读,在这种情况下,如果num1均匀。

  2. 您在循环开头设置num2。在这种情况下,while循环更有意义,或者for循环无初始化for (;num1<=num2; num1+=2) {

虽然您应该解决家庭作业(我认为),但这里有一些提示可以帮助您:

1)您的循环需要应循环的代码周围的卷发支架:

for(num2 = num1; num1 <= num2; num1 +=2)
{
    sum += num1;
    num1 = num1 / 2 == 0? num1 : num1 + 1;
    num2 = num2 / 2 == 0? num2 : num2 - 1;
}

2)您的循环在您的coutcin语句上方,因此在用户输入任何数字之前运行。您需要将循环移至(以下)用户已将数字提供给程序。

3)循环的逻辑可能不是您想要的。添加卷曲括号后,这就是它在做的事情(在"伪代码"中):

Let num2 equal num1 // Both are set to zero so this doesn't do anything
While num1 is less than or equal to num2:
{
    Add the current value of num1 to sum.
    if num1 /2 (ignoring remainder) is 0, then set num1 equal to itself. Otherwise, add 1 to it.
    // num1 already equals itself, so this doesn't do anything when num1 / 2 is zero.
    // 
    if num2 /2 (ignoring remainder) is 0, then set num1 equal to itself. Otherwise, subtract 1 from it.
    Add 2 to num1.
}

除非作业另有说明,否则最好不要使用三元(?and :)语法,因为当您刚开始编程时,这很混乱(至少,我认为是这样)。

c 是一种具有挑战性的语言,但挂在那里!

1.)获取数字2.)确定最大和最小3.)总和在

之间
#include <iostream>
using namespace std;
void main()
{
   int num1 = 0;
   int num2 = 0;
   int sum = 0;
   int temp = 0;
   int i;
   //Get your input values
   cout << "Enter the First Number:" << endl;
   cin >> num1;
   cout << "Enter the Second Number:" << endl;
   cin >> num2;
   cout << endl;    
   //just to reorganize and make num1 the smallest of the two
   if ( num2 << num1 )
   {
       temp = num1;
       num1 = num2;
       num2 = temp;
   }    
   //loop through and add even values
   for(i = num1; i < num2; i++)
   {
       if(i%2 == 0)
       {
           sum = sum + i;
       }
   }
   cout << "Sum: " << sum << endl;
}