Онлайн компилятор 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]}}; for(int e=1;e<10;e++){if (a[e]>n && a[e]!=m){n=a[e]}}; int c=m+n; printf("%d",c); return 0; }
这段代码的目的是:读取10个整数,找出其中最大的两个数,然后输出它们的和。代码先找到最大值m,再找到不等于m的最大值n(即第二大的数),最后输出m+n。

- 第8行的for循环末尾缺少一个分号,导致语法错误。C语言中每条语句必须以分号结束。
- 寻找第二大数的方法有逻辑问题:如果数组中有多个相同的最大值,比如所有数都是5,那么n将找不到合适的值,因为所有元素都等于m。你需要考虑如何处理重复最大值的情况。