c - C中最小正数二维数组中的嵌套if循环
问题描述
我有这个奇怪的问题,当我运行以下代码片段时,它给了我错误的答案。我试图从二维数组中找到最小的正数。
我尝试将两个 if 条件合二为一,放置括号,交换 if 条件。但是,当我调试时,我看到,如果大于 0 条件,控制永远不会进入内部。
float smallest(float b[3][4]);
int main()
{
float a[3][4],result;
int i, j;
printf("\nEnter 12 numbers into the array:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
scanf("%f", &a[i][j]);
}
printf("\n");
}
result=smallest(a);
printf("\nSamllest positive number is %.1f", result);
system("pause");
return 0;
}
float smallest(float b[3][4])
{
int i, j;
float min = b[0][0];
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
if (b[i][j]<min)
if (b[i][j]>0)
min = b[i][j];
}
}
return min;
}
在数组中输入 12 个数字:-5 4 9 7
6 2 3 1
-7 5 4 7
最小的正数是 -5.0
解决方案
这是因为您在示例中设置min
为b[0][0]
which is -5
,因此唯一if (b[i][j]<min)
为 true 的数字是-7
. 但你的第二个如果只有当数字大于时才为真0
。对于 ,这是错误的-7
,因此min = b[i][j];
此代码永远不会执行。
初始化min
到FLT_MAX
应该没问题。(尽管如果数组只包含负数,这可能会出现问题。)
推荐阅读
- java - 使用 SwipeRefresh Layout 获取重复的卡片视图
- typescript - 接受两种文字类型的字符串 VS 联合
- c++ - 类函数不带参数
- sql - SQL Server 中的高级将行转换为列(数据透视)
- javascript - 为什么我的 ace.js 美化器没有按预期工作?
- google-sheets - Google 表格分箱和分组依据(自定义时间间隔)
- python - 在 GenSim 4 中创建新词汇
- java - Android:动态文本视图(线性布局)在运行时不显示
- docker - 如何在本地虚拟机内复制文件或如何在本地虚拟机内编辑 yml 文件?(码头工人栈)
- angular - 名称为“startTime”和“endTime”的表单控件没有值访问器