Online Compiler C

#include <stdio.h> int main() { const int N = 5; int A [N]; for (int i=0;i<N;i++) {scanf("%d",&A[i]); } int min=A[0]; for (int i=0;i<N;i++) { if (A[i]<min){ min=A[i]; } } printf("%d",min); return 0; }
这段代码的功能是:先读取5个整数存入数组,然后找出其中最小的数并输出。

你的代码逻辑是正确的,但有一个潜在问题需要注意:

- 当数组元素全部为负数时,当前代码能正常工作。但如果数组元素全部为正数,且第一个元素恰好是最大值,那么最小值判断依然正确。不过,更关键的是:如果数组的第一个元素不是最小值,你的循环从i=0开始比较,实际上第一次比较是A[0]与自身比较,这不会影响结果,但可以优化。

- 你的代码没有处理输入可能失败的情况(比如用户输入非数字),但作为基础练习,这不是主要问题。

主要提示:

- 思考一下:如果数组长度为0(虽然这里固定为5),你的代码会怎样?这提醒我们,在更通用的程序中,需要先检查数组是否为空。

- 你的循环从i=0开始,但min已经初始化为A[0],所以第一次比较是多余的。可以思考如何让循环从i=1开始,这样更高效。