Online Compiler C

#include<stdio.h> int main() { int sum=0; int i; int arr[10]; for(i=0;i<10;i++) { scanf("%d",arr[i]); } for(i=0;i<10;i++){ if(arr[i]>0){ sum=sum+arr[i]; } } printf("%d\n",sum); return 0; }
这段代码试图读取10个整数,然后计算其中正数的和并输出。但代码中存在一个关键错误。

- 在第一个循环中,`scanf("%d", arr[i])` 的写法是错误的。`scanf` 需要传入变量的地址,而 `arr[i]` 是数组元素的值,不是地址。应该使用 `&arr[i]` 来获取地址。
- 注意 `scanf` 的正确用法:对于普通变量需要加 `&`,但数组名本身已经是地址,不过这里是对单个元素操作,所以每个元素前都要加 `&`。