2016-10-14 69 views
-4

我是一个编码的初学者,我无法修复这段代码,我要疯了。它一直告诉我某些变量没有被声明,我不知道如何解决它。修复这个简单的代码

#include <iostream> 

using namespace std; 

int main() 
{ 
int (a = 0), sum;{ 
    cout << "This program should read all integer numbers "; 
    cout << "to sum until a negative number is entered\n"; 
    exit(0); 
} 

while(a < 0) { 
    cout << "Enter an integer number: "; 
    cin >> a; 
    sum += a; 
} 

cout << "The sum is sum\n"; 
return 0; 
} 
+1

什么是确切的错误信息和行号? – abelenky

+1

int(a = 0),sum; {0}这个程序应该读取所​​有的整数。 cout <<“进行求和直至输入负数\ n”; exit(0); '所有的花括号都是怎么回事? – Gavin

+0

你从哪里学习编写这样的代码?这是我见过的最奇怪的风格。此外''while'循环将永远不会执行并且'sum'不会被初始化,这会导致在sum + = a上出现UB |' – UnholySheep

回答

4

您没有初始化总和,所以它可以以任何值开始。

你没有理由的附加层无意义的{ }

您的最终cout声明实际上并不打印可变物。
将其更改为:cout << "The sum is " << sum << "\n";


#include <iostream> 

using namespace std; 

int main() 
{ 
    int a = 0, sum = 0; 
    cout << "This program should read all integer numbers "; 
    cout << "to sum until a negative number is entered\n"; 

    do { 
    cout << "Enter an integer number: "; 
    cin >> a; 
    if (a > 0) 
    { 
     sum += a; 
     cout << "The sum is currently: " << sum << "; but this is not yet the final value.\n"; 
    } 
    } while(a > 0) ; 

    cout << "The sum is " << sum << "\n"; 
    return 0; 
} 
-1

很多与您的代码陷阱的。

问题,我发现和纠正:

  • 你有多余的括号和大括号。
  • 你没有初始化称为总和变量
  • 初始化称为变量为0,但同时小于0
  • 我不得不的#include“stdafx.h中”你的循环将只执行上面你包括的地方iostream
  • 说“总和是总和”的行 - 第二个总和应该在双引号之外,这样它将被视为一个变量而不是文本。

此代码的工作,请把它比作你:

#include "stdafx.h" 
#include <iostream> 

using namespace std; 

int main() 

{ 
    int a = 0, sum = 0; 

    cout << "This program should read all integer numbers "; 
    cout << "to sum until a negative number is entered\n"; 

    while (a <= 0) { 
     cout << "Enter an integer number: "; 
     cin >> a; 
     sum += a; 
    } 

    cout << "The sum is " << sum << "\n"; 
    return 0; 
} 
+0

只有输入负数(或零)时,程序才会继续。这个问题要求积极的数字。 – abelenky

+0

'stdafx.h'是Visual Studio PCH标记,在大多数编译器中不需要。 – abelenky