#include<iostream> using namespace std; int q[5000005]; int main() { int a,b,t,i,j; cin>>a; cin>>b; for( i=0;i<a;i++) { cin>>q[i]; } for(i=0;i<a;i++) { for(j=0;j<a-i;j++) { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } cout<<q[b]; return 0; }为什么报错int[int]’用作数组下标类型无效
时间: 2024-01-20 22:02:52 浏览: 68
使用include <iostream>时一定要加using namespace std
这段代码中有一个错误,出现在第 15 行:
```cpp
if(a[j]>a[j+1])
```
这里应该是判断 `q[j]` 是否大于 `q[j+1]`,而不是 `a[j]` 是否大于 `a[j+1]`。因为在这个程序中,`a` 是一个整数,而 `q` 是一个整数数组,所以不能用 `a[j]` 作为数组下标。
正确的代码应该是这样的:
```cpp
#include<iostream>
using namespace std;
int q[5000005];
int main() {
int a,b,t,i,j;
cin>>a;
cin>>b;
for(i=0;i<a;i++) {
cin>>q[i];
}
for(i=0;i<a;i++) {
for(j=0;j<a-i-1;j++) { // 注意这里是 a-i-1
if(q[j]>q[j+1]) { // 注意这里是 q[j] > q[j+1]
t=q[j];
q[j]=q[j+1];
q[j+1]=t;
}
}
}
cout<<q[b];
return 0;
}
```
这样就不会报错了。
阅读全文