2012-11-10 68 views
0

程序输出应该是这样的:程序调试

Enter an even number: 23 
The number is not a positive even number. 
Enter an even number: -6 
The number is not a positive even number. 
Enter an even number: 4 

20 20.25 20.50 20.75 21 
The sum is 102.5 

程序运行不正常。奇数/偶数被识别,但增加变量的循环(20 + 1 /(输入偶数))不起作用。

#include <iostream> 

int main(int argc, char *argv[]) 
{ 

    float val, sum, incr; 
    int num; 

    cout << "Enter an even number: "; 
    cin >> num; 

    if (num % 2 != 0) 
     cout << "The number " << num << " is not a positive even number." << endl; 
    else 
     cout << num << " is even!" << endl << endl; 


    incr = 1/num; 

    for (val = 20.0F; val <= 21.0; val += incr) 
    { 
     cout << val; 
     sum += val; 
    } 

    cout << "The sum is " << sum << endl; 

    return 0; 

} 
+0

'1/num'为0,除非'num'为0, -1,或1. – chris

+0

num应该是浮动的? – user1780064

+1

1.0/num .................. –

回答

0

如果分割另一个num结果之间的一个整数1是一个整数,如克里斯说是0

你应该这样做:

incr = 1.0F/(float)num; 

而对于退出的错误引入值你应该从主要返回

#include <iostream> 

int main() { 
    float val, sum, incr; 
    int num; 

    cout << "Enter an even number: "; 
    cin >> num; 
    if (num < 0 || num % 2 != 0){ 
     cout << "The number " << num << " is not a positive even number." << endl; 
     return -1; 
    } 
    else { 
     cout << num << " is even!" << endl << endl; 
    } 

    incr = 1.0/num; 
    for (val = 20.0F; val <= 21.0; val += incr) { 
     cout << val << " "; 
     sum += val; 
    } 
    cout << "The sum is " << sum << endl; 
    return 0; 
}