代码中的编译错误

时间:2016-06-15 11:11:36

标签: c++

我编写了以下程序,它有一些编译错误

错误:

  
      
  1. prog.cpp:在函数' int main()':
  2.   
  3. prog.cpp:13:错误:名称查找' i'改为新的ISO'为'范围
  4.   
  5. prog.cpp:9:错误:在' i'
  6. 使用过时的绑定   

我的计划是在分析订单时排序的一个阵列:

#include<iostream>  
using namespace std;  

int main()  
{  
    int temp,t,a[10];  
    cin>>t;  
    for(int i=0;i<t;i++)  
    {  
        cin>>a[i];  
    }  
    for(i=0;i<t;i++)  
    {  
        int j=i+1;  
        for( ;j<t;j++)  
        {  
            if(a[i]>a[j])  
            {  
                temp=a[i];  
                a[i]=a[j];  
                a[j]=temp;  
            }  
        }  
    }  
    for(i=0;i<t;i++)  
    {  
        cout<<a[i]<<endl;  
    }  
    return 0;  
}  

5 个答案:

答案 0 :(得分:4)

您已在i循环中声明for

for(int i=0;i<t;i++)

因此,i的范围仅限于for循环。 i循环之外不存在for

因此,当您尝试在下一个i循环

中重用for
for(i=0;i<t;i++)  
你得到一个错误。您必须再次声明i

for(int i=0;i<t;i++)

您上次for循环中的内容相同。如果正确缩进代码,它也会非常有用。

#include<iostream>  
using namespace std;  

int main()  
{  
    int temp,t,a[10];  
    cin>>t;  
    for(int i=0;i<t;i++)  
    {  
        cin>>a[i];  
    }  
    for(int i=0;i<t;i++)  
    {  
        int j=i+1;  
        for( ;j<t;j++)  
        {  
            if(a[i]>a[j])  
            {  
                temp=a[i];  
                a[i]=a[j];  
                a[j]=temp;  
            }  
        }  
    }  
    for(int i=0;i<t;i++)  
    {  
        cout<<a[i]<<endl;  
    }  
    return 0;  
}

答案 1 :(得分:0)

您只在第一个for循环中声明变量i。变量的声明仅对该循环是本地的,这意味着i不会存在于循环之外。

而不是:

for(i=0;i<t;i++)

尝试

for(int i=0;i<t;i++)

答案 2 :(得分:0)

问题在于你的'i'变量。

现在在'for'语句中声明的变量只能在'for'块中使用,而不能在'for'块之外。

答案 3 :(得分:0)

您忘了在开头宣布所有变量。因此,这种变量被声明为局部整数,不能在for loop之外使用。我尝试在函数int main()之外声明它们并且它有效 正确的代码:

#include<iostream>
using namespace std;
int i = 0;
int a[10];
int temp = a[i];
int t;
int main()
{

    cin>>t;
    for(int i=0;i<t;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<t;i++)
    {
        int j=i+1;
        for( ;j<t;j++)
        {
            if(a[i]>a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
    for(i=0;i<t;i++)
    {
        cout<<a[i]<<endl;
    }
    return 0;
}

答案 4 :(得分:0)

您的问题是您在函数范围内声明i。 您可以决定是否要在main处声明变量i,或者每次都将其作为for范围内的局部范围变量声明。

#include<iostream>  
using namespace std;  

int main()  
{  
    int temp, t, a[10];  
    cin >> t;  

    int i;
    for(i=0; i<t ; i++)  
    {    
        cin >> a[i];  
    }  

    for(i=0; i<t; i++)  
    {  

        for(int j=i+1; j<t; j++)  
        {  
             if (a[i]>a[j])  
             {  
                 temp=a[i];  
                 a[i]=a[j];  
                 a[j]=temp;  
             }  
        }  
    }  

    for(i=0; i<t; i++)  
    {  
         cout << a[i] << endl;  
    } 

    return 0;  
}