我编写了以下程序,它有一些编译错误
错误:
- prog.cpp:在函数' int main()':
- prog.cpp:13:错误:名称查找' i'改为新的ISO'为'范围
- prog.cpp:9:错误:在' i'
使用过时的绑定 醇>
我的计划是在分析订单时排序的一个阵列:
#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;
}
答案 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;
}