c - 从C中的for循环中找到最大和最小数
问题描述
我正在尝试从 for 循环中找到最大和最小数字。我的代码是这样的:
#include <stdio.h>
int readInts(int maxNumInts, int nums[])
{
int count = 0;
while (count < maxNumInts && scanf("%d", &nums[count]) == 1) {
count++;
}
return count;
}
int main()
{
int nums[6] = { -1, -1, -1, -1, -1, -1 };
int n = readInts(6, nums);
int max = nums[0];
int min = nums[0];
int x = nums[0];
int y[1000];
for (int i = 0; i < 6; i += 2) {
x = nums[i + 1] - nums[i];
y[i] = x;
if (y[i] > max) {
max = y[i];
}
if (y[i] < min) {
min = y[i];
}
}
printf("%d\n", min);
printf("%d\n", max);
}
我输入 10 30 60 100 150 210 进行测试,它返回 10 60。它应该是 20 60。看起来 min 总是最小的条目减去 0 ......我哪里做错了?
解决方案
您正在尝试找到给定数字集中的数字之间的最小和最大差异。并且您正在将min
and初始化max
为该组 numbers 的第一个元素num
。
min
由于您使用和比较数字之间的后续差异max
,因此这在以下两种情况下不起作用:
a)如果数字之间的最小差异大于nums
b)如果数字之间的最大差异小于的第一个元素nums
为此:
- 您必须初始化
min
为一些可能的最高整数,例如INT_MAX
. - 您必须初始化
max
为一些可能的最低整数,例如INT_MIN
.
所以更改以下两行:
int max = nums[0];
int min = nums[0];
到
int max = INT_MIN;
int min = INT_MAX;
当然,您必须#include <limits.h>
在文件的开头包含用于 和 的值的INT_MAX
行INT_MIN
推荐阅读
- twig - Symfony 4:本地化的树枝日期表格
- ios - 有没有办法通过 iOS 13 的 XCUI 测试在 iPad 上自动执行多任务处理
- excel - 查明 Excel 中的特定列是否是列分组的“一部分”
- powerbi - 如果订单中的某一行失败,如何在 DAX 中失败
- php - Laravel 使用 Javascript Cookie 更新 Blade 语言
- datetime - ntp和sntp的区别?(网络捕获)
- elasticsearch - 在 NEST 中更改 ElasticSearch track_total_hits
- node.js - 如何使用节点js更新mongo集合中所有文档的_id?
- vb.net - Office 365 和互操作服务不工作
- android - 协程限制?