程序改错#include<iostream> using namespace std; void findmax( int *a, int n, int &mp ) { int i; for( i=1; i<=n ; i++ ) { if( &mp>*a ) mp=i; } } int main( ) { int a[20]={1, 3, 5, 7, 9, 11, 2, 4, 6, 8, 12, 34, 67, 10}; int m, n, maxplace=0; cout<<"Input start from (0<m<20):"; cin>>m; cout<<"Input count n: "; cin>>n; findmax( ③ ); cout<<"Max at "<<maxplace+1<<". It is "<<a[maxplace+m-1]<<". "; cout<<"It is "<<m+maxplace<<"th"<<endl; return 0; }
时间: 2024-03-01 07:54:17 浏览: 15
这段代码中的问题在于函数 `findmax` 中的 `if` 语句的条件不正确,应该是 `if(*(a+i-1) > *(a+mp-1))`。此外,在 `main` 函数中调用 `findmax` 时应该传入相应的参数,即 `findmax(a + m - 1, n, maxplace)`。修改后的代码如下:
```c++
#include<iostream>
using namespace std;
void findmax(int *a, int n, int &mp) {
int i;
for(i = 1; i <= n; i++) {
if(*(a + i - 1) > *(a + mp - 1))
mp = i;
}
}
int main() {
int a[20] = {1, 3, 5, 7, 9, 11, 2, 4, 6, 8, 12, 34, 67, 10};
int m, n, maxplace = 0;
cout << "Input start from (0<m<20):";
cin >> m;
cout << "Input count n: ";
cin >> n;
findmax(a + m - 1, n, maxplace);
cout << "Max at " << maxplace + 1 << ". It is " << a[maxplace + m - 1] << ". ";
cout << "It is " << m + maxplace << "th" << endl;
return 0;
}
```