Онлайн компилятор C

#include <stdio.h> int main() { int a[10]; int m,n; for(int d=0;d<10;d++){scanf("%d",&a[d]);} m=a[0]; n=a[0]; for(int d=1;d<10;d++){if (a[d]>m){m=a[d],n=m};if(m>a[d] && n<a[d]) {n=a[d]} } int c=m+n; printf("%d",c); return 0; }
这段代码试图找出一个10个整数数组中的最大值和最小值,然后计算它们的和并输出。但代码中存在逻辑错误和语法问题。

- 在第一个if语句中,`m=a[d],n=m` 这行使用了逗号表达式,但后面多了分号,导致语法错误。而且当找到更大值时,不应该把n也更新为m,这会让n失去最小值。
- 第二个if条件 `m>a[d] && n<a[d]` 逻辑混乱,无法正确找到最小值。你应该分别独立地找最大值和最小值,而不是把它们混在一起判断。