2017-05-07 116 views
0

我的程序必须计算一个范围内有多少数字是偶数,有多少是奇数,但我似乎无法弄清楚。它有点作品 ,但是当我把数字放在里面吹出胡话。我认为这个问题必须在第21行(i = n; i < = m; i ++){? 但我不确定。我有一本编程书,但它没有多大帮助,也许有人可以帮忙?C++:在一个范围内计算偶数/奇数

#include <iostream> 

using namespace std; 

int main() 
{ 
    int n; 
    int m; 
    int i; 
    int a; 
    int b; 

    cout << "Enter a number that begins interval: "; 
    cin >> n; 
    cout << "Enter a number that ends interval: "; 
    cin >> m; 
    a=0; 
    b=0; 


    for (i=n; i<=m; i++) { 
     if (i%2 == 0){ 
       a=a+i; 
    } 
    else { 
      b=b+i; 
    } 
} 
    cout << " unequal numbers: " << a << endl; 
    cout << " equal numbers: " << b << endl; 
+0

你为什么a + i和b + i?将它们更改为++ a和++ b。假定a和b代表偶数和奇数。 –

+0

“平等”和“不平等”是什么意思?平等和不平等的是什么? – juanchopanza

+1

您是否正在计算用户提供的范围内的偶数和奇数的数量?你能否证实这一点,而不是平等或不平等,你正在计算范围内的偶数和奇数的数量? –

回答

1

好了,所以,按新的澄清以下应该工作

#include <iostream> 

using namespace std; 

int main() 
{ 
int n; 
int m; 
int i; 
int a; 
int b; 

cout << "Enter a number that begins interval: "; 
cin >> n; 
cout << "Enter a number that ends interval: "; 
cin >> m; 
a=0; 
b=0; 


for (i=n; i<=m; i++) { 
    if (i%2 == 0){ 
     a++; 
    }else { 
     b++; 
    } 
} 

cout << " unequal numbers: " << a << endl; 
cout << " equal numbers: " << b << endl; 
} 

所以下面的变化做:

  • for循环被关闭
  • A = A + i或B = B +我是错了,因为你要添加的计数器值计数其应该是++或b ++。改变也
  • 你显示你的结果的最后两行是主要方法,带到主方法
  • 希望你觉得这个有用。
+0

非常感谢,我觉得它非常有用。 – noxdeouroboros

4

假设你的意思是偶数和奇数你的问题就出在这代码:

for (i=n; i<=m; i++) { 
    if (i%2 == 0){ 
     a=a+i; // increase number of even numbers by i 
    } 
    else { 
     b=b+i; // increase number of odd numbers by i 
    } 
} 

你可能想什么做什么是加1(而不是不管我是):

for (i = n; i <= m; ++i) { 
    if (i % 2 == 0) 
     ++a; // increase number of even numbers by one 
    else 
     ++b; // increase number of odd numbers by one 
} 

另外我会建议使用更好的变量名称,例如偶数和奇数,而不是a和b等。它使代码更易于理解,即使对于所有人也是如此。

只是多一点提示。只要你把它们声明变量赋值是很好的做法:

int m = 0; 

你可以声明变量的for循环里面,在你的情况下,没有必要宣布出来的吧:

for (int i = n; i <= m; ++i) { ... } 

例如,它如何改变你的代码的外观和清晰度:

#include <iostream> 

using namespace std; 

int main() { 
    int from = 0, 
     to = 0, 
     even = 0, 
     odd = 0; 

    cout << "Enter a number that begins interval: "; 
    cin >> from; 

    cout << "Enter a number that ends interval: "; 
    cin >> to; 

    for (int i = from; i <= to; ++i) { 
     if (i % 2 == 0) 
      ++even; 
     else 
      ++odd; 
    } 

    cout << " even numbers: " << even << endl; 
    cout << " odd numbers: " << odd << endl; 

    return 0; // don't forget this! main is function returning int so it should return something 
} 
+0

谢谢,这对我非常有帮助,任何提示都非常受欢迎。 – noxdeouroboros

+0

@noxdeouroboros欢迎你的朋友。 –

+0

如果控制到达'main'的末尾而没有遇到'return'语句,效果就是执行 'return 0;' – Lassie

0

您不需要使用循环来计算范围内的偶数和奇数。

#include <iostream> 

int main() 
{ 
    int n,m,even,count; 
    std::cin >> n >> m; 
    count=m-n+1; 
    even=(count>>1)+(count&1 && !(n&1)); 
    std::cout << "Even numbers: " << even << std::endl; 
    std::cout << "Odd numbers: " << count-even << std::endl; 
}