如何优化这段代码以提高效率?
时间: 2024-10-21 16:06:59 浏览: 10
在当前的代码中,对于每个输入的数字,都进行了`> 0`的判断以及与`min_num`的比较,这可能会有些冗余,特别是在输入大量数据的时候。为了提高效率,可以考虑直接对输入的数据进行迭代,只保留第一个找到的正整数作为最小数,而无需每次都做比较。以下是优化后的代码:
```c
#include <stdio.h>
#include <limits.h> // 引入INT_MIN和INT_MAX
int main() {
int n;
printf("请输入正整数的数量(n):");
scanf("%d", &n);
if (n <= 0) {
printf("错误:请输入一个正整数。\n");
return 1;
}
int min_num = INT_MAX;
// 输入n个正整数
for (int i = 0; i < n; i++) {
int num;
printf("请输入第 %d 个数:", i + 1);
scanf("%d", &num);
// 只有当遇到的第一个正数比当前最小数小才更新
if (num > 0 && num < min_num) {
min_num = num;
}
}
// 输出最小的正整数,如果没有则输出提示
if (min_num != INT_MAX) {
printf("最小的正整数是:%d\n", min_num);
} else {
printf("没有输入到正整数。\n");
}
return 0;
}
```
这样的优化减少了不必要的计算,提高了处理大规模输入的效率。注意,这里假设输入的正整数不会超过`int`类型的范围,如果有可能的话,还需要添加额外的边界检查。
阅读全文