为什么这段代码不编译

Why doesn't this code compile

本文关键字:编译 代码 段代码 为什么      更新时间:2023-10-16
#include <iostream>
#include<iomanip>
using namespace std; 
int main()
{
    const int NUMROWS=3; 
    const int NUMCOLS=4;
    int i,j; 
    int val[NUMROWS][NUMCOLS]={8,16,9,52,27,6,14,25,2,10};//multiply each element by 10 and display it 
    cout<<"nDisplay or multiplied elements"; 
    for(i=0; i<NUMROWS;i++)
    {
        val[i][j]=val[i][j]*10;
    }//end of inner loop
    }//end of outer loop
    cout<endl; 
    return 0; 
    }

这些是我收到的错误。我做错了什么16:5:错误:'cout'不命名类型17:5:错误:"返回"之前预期的无限ID18:5:错误:'}'令牌之前的预期声明

您错过了内心的循环,并且在循环双重循环后丢失了第二个胡萝卜。应该看起来像这样:

int main()
{
    const int NUMROWS=3; 
    const int NUMCOLS=4;
    int i,j; 
    int val[NUMROWS][NUMCOLS]={8,16,9,52,27,6,14,25,2,10};//multiply each element by 10 and display it 
    cout<<"nDisplay or multiplied elements"; 
    for(i=0; i<NUMROWS;i++)
    {
        for(j=0; j<NUMCOLS;j++)
        {
            val[i][j]=val[i][j]*10;
        }//end of inner loop
    }//end of outer loop
    cout<<endl; 
    return 0; 
}

这里有两个问题:

}//end of outer loop
cout<endl; 

首先,虽然您的评论说"外循环的结束",但支架实际上关闭了main,因此代码不正确。这就是为什么您在cout上获得错误的原因。

删除支架后,您将获得一个巨大的编译错误:

错误:" std::cout < std::endl"中的" operator<"

没有匹配

因为您在表示cout << endl;

时写了cout < endl;

typos:

  cout<endl; 

您缺少< 应该是:

 cout<<endl; 

将上述main内部放置,目前它位于main的范围之外。

其他问题:

 val[i][j]=val[i][j]*10;

j这里是非专业化的。

  }//end of outer loop

您尚未定义任何外部for loop

我相信您缺少j索引的for循环:

for(i=0; i<NUMROWS;i++)
{
    for(j=0; j<NUMCOLS;j++)
    {
        val[i][j]=val[i][j]*10;
    }//end of inner loop
}//end of outer loop

还请注意,您错过了<字符cout<endl;应该是cout<<endl;

它没有编译,因为它不是有效的C 程序。

一个问题是,您的闭合括号比开放括号更多。我建议使用一个源代码编辑器,该编辑器指示彼此属于哪些Bracktes。