你能帮助我摆脱错误吗?

时间:2020-08-18 14:40:51

标签: c++

我如何摆脱这些错误?它应该根据您的出生年份来计算您的年龄。 这段代码是由我和我的朋友编写的,我们俩都是编程的开始。

    #include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int nNumberofargs, char* pszArgs[]);

int CurrentYear = 2020;

int BirthYear;

cout << "Enter your birth year: "

cin  >> BirthYear;
if (nBirthYear <= 0)
{
   cout << "Birth year cannot be processed" <<endl;
   BirthYear = 2020
}
else (BirthYear > 2020)
{
  cout << "Birth year cannot be processed "  <<endl;
  BirthYear = 2020
}
if (nBirthYear < 2020)
    (cout << "Your age is : " << CurrentYear - BirthYear <<endl;
)
cout << "Press Enter to continue..." << endl;
 cin.ignore(10, '\n');
 cin.get();
 return 0;

这些是错误

||=== Build: Debug in Actualagefinder (compiler: GNU GCC Compiler) ===|
H:\c++\Actualagefinder\main.cpp|13|error: 'cout' does not name a type|
H:\c++\Actualagefinder\main.cpp|16|error: expected unqualified-id before 'if'|
H:\c++\Actualagefinder\main.cpp|21|error: expected unqualified-id before 'else'|
H:\c++\Actualagefinder\main.cpp|26|error: expected unqualified-id before 'if'|
H:\c++\Actualagefinder\main.cpp|28|error: expected unqualified-id before ')' token|
H:\c++\Actualagefinder\main.cpp|30|error: 'cin' does not name a type; did you mean 'main'?|
H:\c++\Actualagefinder\main.cpp|31|error: 'cin' does not name a type; did you mean 'main'?|
H:\c++\Actualagefinder\main.cpp|32|error: expected unqualified-id before 'return'|
||=== Build failed: 8 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

   

2 个答案:

答案 0 :(得分:2)

在C ++中,所有执行的代码都必须在函数内。
即它应该看起来像

int main(int nNumberofargs, char* pszArgs[])
{
    /* code */
}

您从原型开始,然后是孤立的代码。

int main(int nNumberofargs, char* pszArgs[]);
/* code */

这就是为什么编译器抱怨期望(用于声明的)已知类型的原因,在该类型中,您的代码行以cout开头(您不会无理地希望已被声明)。

其他行(不一定是语句)可以是局部或全局变量定义,后者可能在函数外部。这就是为什么编译器不抱怨它们的原因。

答案 1 :(得分:0)

您需要解决的第一个问题是int main()声明。通过使用分号int main(int nNumberofargs, char* pszArgs[]);,您将告诉编译器它已经到达命令的末尾,而不执行任何操作。要解决此问题,就像在if语句中一样,必须将所有内容封装在大括号后的声明中。

因此,您的程序变为:

  #include <cstdio>
  #include <cstdlib>
  #include <iostream>
      int main(int nNumberofargs, char* pszArgs[])
      {
       // Put your stuff in curly braces
      }

您的下一个错误是在您的if语句中。简而言之,if语句在C ++中的工作方式不一样。

if语句应为:

if(something){
  // Do something here
}
else if(something else){ // If there are more than one possible condition, use else if
  // Do something else
}
else{ // If none other condition is satisfied
// Do something 
}

请注意,您不能两次拥有if(如果您嵌套了if语句(例如if语句内的if语句,则可以)

这些是程序中的主要问题。其余都是小错误。例如,在许多地方缺少;。在其他地方,您调用未声明的变量:

if (nBirthYear < 2020) // This was probably a typo, nBirthYear is not declared

在一个地方,您有一个(这是一个错字:(cout << "Your age is : " << CurrentYear - BirthYear <<endl;

此外,还有一些不必要的代码,例如前两行(未使用)。

尽管如此,这是程序的有效版本:

#include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int nNumberofargs, char* pszArgs[]){

int CurrentYear = 2020;

int BirthYear;

cout << "Enter your birth year: " << endl;

cin  >> BirthYear;

if (BirthYear <= 0)
{
   cout << "Birth year cannot be processed" <<endl;
   BirthYear = 2020;
}
else if(BirthYear > 2020)
{
  cout << "Birth year cannot be processed "  <<endl;
  BirthYear = 2020;
}
else if (BirthYear < 2020){
    cout << "Your age is : " << CurrentYear - BirthYear << endl;
}
cout << "Press Enter to continue..." << endl;
 cin.ignore(10, '\n');
 cin.get();
 return 0;
}

正如评论所说,建议再次查看用于制作此程序的资源,您必须 降低基础知识。确保您知道程序的每个部分的功能,并添加注释以提醒自己将来。我会尽力使这个答案简明扼要,以帮助您理解,但您确实应该回顾一下已读过的内容。

另外,请确保您的资源相对较新,因为自创建以来C ++发生了很多变化。