有条件的不遵循 C 中的指令
Conditional Not Following Instructions in C
我制作了一个程序,最多可以输入 21 个成绩数据并输出分数、最大值和最小值、标准偏差和字母等级。因此,我创建了一个大小为 21 的数组。不幸的是,我的程序中的所有循环一直持续到 array[i] != '\0',而我不知道 0 等同于 null,所以它原本相当当人们输入 0 时中断。为了解决这个问题,我说如果你输入 0,则该特定索引处的数组将被分配 0.000001。这解决了我的大部分问题,除了我的 maxMin 函数,由于某种原因它仍然打印 0.000001 作为最小标记。这个函数如下所示...
void maxMin() {
float min = array[0];
float max = array[0];
for (int j = 1; array[j] != '[=10=]'; j++) {
if (min > array[j]) {
min = array[j];
}
if (max < array[j]) {
max = array[j];
}
}
printf("The highest mark is: %f \n", max);
if (min == 0.000001) {
printf("The lowest mark is: 0 \n");
}
else {
printf("The lowest mark is: %f \n", min);
}
}
如何让这个函数打印 0 作为最小标记?
问题是这个语句:
if (min == 0.000001) {
0.000001
将被视为 double
。十进制数 0.000001
表示为单精度 float
和双精度 double
.
您需要将后缀 f
与 float 文字放在一起:
if (min == 0.000001f) {
当你输入 f
后缀时,它会告诉编译器这是一个 float
.
正如另一个回答所述:
if (min == 0.000001)
是问题的根源。
但是,添加 'F' 后缀并不是全部答案。
整个答案是,比较 float
或 double
值(通常)会失败,因为 many/most 数字无法在 float
或 [=12= 中准确表示]
但是,发布的代码还有一些其他问题,例如在尝试确定是否在数字末尾时将 float
与 char
进行比较。强烈建议修改输入 21 个数字的过程,以便代码跟踪输入了多少数字并将该计数传递给 minmax()
函数。
我制作了一个程序,最多可以输入 21 个成绩数据并输出分数、最大值和最小值、标准偏差和字母等级。因此,我创建了一个大小为 21 的数组。不幸的是,我的程序中的所有循环一直持续到 array[i] != '\0',而我不知道 0 等同于 null,所以它原本相当当人们输入 0 时中断。为了解决这个问题,我说如果你输入 0,则该特定索引处的数组将被分配 0.000001。这解决了我的大部分问题,除了我的 maxMin 函数,由于某种原因它仍然打印 0.000001 作为最小标记。这个函数如下所示...
void maxMin() {
float min = array[0];
float max = array[0];
for (int j = 1; array[j] != '[=10=]'; j++) {
if (min > array[j]) {
min = array[j];
}
if (max < array[j]) {
max = array[j];
}
}
printf("The highest mark is: %f \n", max);
if (min == 0.000001) {
printf("The lowest mark is: 0 \n");
}
else {
printf("The lowest mark is: %f \n", min);
}
}
如何让这个函数打印 0 作为最小标记?
问题是这个语句:
if (min == 0.000001) {
0.000001
将被视为 double
。十进制数 0.000001
表示为单精度 float
和双精度 double
.
您需要将后缀 f
与 float 文字放在一起:
if (min == 0.000001f) {
当你输入 f
后缀时,它会告诉编译器这是一个 float
.
正如另一个回答所述:
if (min == 0.000001)
是问题的根源。
但是,添加 'F' 后缀并不是全部答案。
整个答案是,比较 float
或 double
值(通常)会失败,因为 many/most 数字无法在 float
或 [=12= 中准确表示]
但是,发布的代码还有一些其他问题,例如在尝试确定是否在数字末尾时将 float
与 char
进行比较。强烈建议修改输入 21 个数字的过程,以便代码跟踪输入了多少数字并将该计数传递给 minmax()
函数。