我不明白为什么我会收到这个错误:'else'没有先前的'if'。请有人吗?

时间:2016-08-13 01:58:30

标签: c++

我正在尝试编写一个代码,用于计算用户想要的测试分数的平均值。但是,当用g ++编译器编译它时,我收到错误:

'else'没有之前的'if'

代码的唯一'else'语句在以下for循环中。这就是我省略其余代码的原因。任何人,请告诉我这里我做错了什么。我似乎无法在任何地方找到答案。提前谢谢!

int i, j;
   cout >>"How many tests' scores you want to average; \n";
   cin << i;

// Assuming i > 0 

int test[i]

for (j = 0; j < i; j++)
   {
       if (j == 0)
           cout <<"Enter the 1st score: \n";
           cin >> test[j];
       if (j == 1)
           cout <<"Enter the 2nd score: \n";
           cin >> test[j];
       if (j == 2)
           cout <<"Enter the 3rd score: \n";
           cin >> test[j];
       else
           cout <<"Enter the "<< (j+1) <<"th score: \n";
           cin >> test[j];
   }

1 个答案:

答案 0 :(得分:2)

你的if都不是实际的块;你需要身体上的牙套,或者他们只控制执行到下一个分号。

以编译器实际看到控制流的方式缩进它,这就是你所拥有的:

   if (j == 2)
       cout <<"Enter the 3rd score: \n";
   cin >> test[j];

   else
       cout <<"Enter the "<< (j+1) <<"th score: \n";
   cin >> test[j];

当你想要的是:

   if (j == 2) {
       cout <<"Enter the 3rd score: \n";
       cin >> test[j];
   } else {
       cout <<"Enter the "<< (j+1) <<"th score: \n";
       cin >> test[j];
   }

您也可能希望前两个if成为块,并将第二个和第三个if设为else if s;否则,除了else之外,j块将执行2的任何值(或者,您使用switch)。