#include <stdlib.h> #include <iostream.h> int n = 20; int ClrMinus(int Arr,int m); int main() { int arr[n]={0},i; for(i=0;i<n;i++) { arr[i]=rand()%100-30; cout<<arr[i]<<'\t'; } cout<<endl; cout<<"Negative Number is"<<ClrMinus(arr[n],n)<<endl; cout<<"The Array Removed Negative Number is:\n"; for(i=0;i<=n;i++) if(arr[i]=0) cout<<arr[i]<<'\t'; cout<<endl; return 0; } int ClrMinus(int Arr[],int m) { int count=0; for(int i=0;i<m;i++) { if(Arr[i]<0) { Arr[i]=0; count++; } } return count; }
时间: 2024-01-21 20:04:54 浏览: 65
这段代码中也有几个问题:
1. 头文件 `iostream.h` 不应该有 `.h` 后缀,应该写成 `#include <iostream>`。
2. 在 `main` 函数中,调用 `ClrMinus` 函数时,应该传入数组 `arr` 而不是 `arr[n]`。
3. 在 `main` 函数中,第二个循环中的条件应该是 `i < n`,而不是 `i <= n`,因为数组下标从 0 开始计数,所以 `arr[n]` 是越界的。
4. 在第二个循环中,判断语句 `if (arr[i] = 0)` 应该写成 `if (arr[i] == 0)`,因为 `=` 是赋值操作符,而 `==` 才是相等比较操作符。
下面是修改后的代码:
```
#include <stdlib.h>
#include <iostream>
using namespace std;
const int n = 20;
int ClrMinus(int Arr[], int m);
int main() {
int arr[n] = {0}, i;
for (i = 0; i < n; i++) {
arr[i] = rand() % 100 - 30;
cout << arr[i] << '\t';
}
cout << endl;
cout << "Negative Number is " << ClrMinus(arr, n) << endl;
cout << "The Array Removed Negative Number is:\n";
for (i = 0; i < n; i++)
if (arr[i] == 0)
cout << arr[i] << '\t';
cout << endl;
return 0;
}
int ClrMinus(int Arr[], int m) {
int count = 0;
for (int i = 0; i < m; i++) {
if (Arr[i] < 0) {
Arr[i] = 0;
count++;
}
}
return count;
}
```
阅读全文