#include<iostream> #include<string> using namespace std; int a[10]={-13,52,-3,-40,437,536,233,128,-119,321}; int num(int a[],int n) { n=10; int j=0; for(int i=0;i<n;i++) { if(a[i]<0) { j++; } } return j; }
时间: 2024-03-06 15:48:19 浏览: 48
这段代码是用来统计数组中负数的个数,但是有一些问题需要指出:
1. 函数 `num` 的第二个参数 `n` 没有使用,函数内部直接将 `n` 赋值为 10,这就意味着调用函数时传入的参数 `n` 被忽略了。
2. 数组 `a` 是一个全局变量,不应该在函数内作为参数传入。
3. 变量 `j` 可以直接在循环内部声明并初始化,不必在外部声明。
4. 函数内部对数组元素的访问可以使用指针或引用的方式,这样可以提高效率。
下面是修改后的代码:
```c++
#include <iostream>
using namespace std;
int num(int* a, int n) {
int j = 0;
for (int i = 0; i < n; i++) {
if (*(a + i) < 0) {
j++;
}
}
return j;
}
int main() {
int a[10] = {-13, 52, -3, -40, 437, 536, 233, 128, -119, 321};
int n = sizeof(a) / sizeof(int);
cout << num(a, n) << endl;
return 0;
}
```
注意,在 `num` 函数中,使用 `a[i]` 访问数组元素,也可以使用 `*(a+i)` 的方式,两者效果相同。在 `main` 函数中,使用 `sizeof(a) / sizeof(int)` 计算数组的长度,这样可以避免在函数内部重新定义数组长度。
阅读全文