在线编译器 C

#include <stdio.h> int main() { const int n=10; int arr[n]; int sum=0; for(int i=0;i<=n;i++){ scanf("%d",&arr[i]); if(arr[i]>0){ sum+=arr[i]; } } printf("%d",sum); return 0; }
这段代码试图读取10个整数,并计算其中正数的和。但存在一个数组越界的问题。

- 循环条件 `i<=n` 会导致访问 `arr[10]`,而数组只有下标0到9共10个元素,越界访问可能造成程序崩溃或未定义行为。
- 循环应该只执行10次,即 `i < n` 而不是 `i <= n`。