【发布时间】:2017-06-25 12:32:36
【问题描述】:
我正在编写一个程序,要求用户输入三天内的高温和低温。每天的高温必须大于低温,高温必须不大于41,低温必须不小于负-41。
我在第一天的输入之后写了一个while 语句,但是,我得到了指针和整数之间的错误比较。
我认为这与我使用集合整数有关,因此我尝试仅创建一个涉及高大于低的 while 语句,这导致程序正常工作,但我发现 while 循环被完全跳过.到目前为止,这是我的代码:
编辑:我开始明白我的while 循环哪里出错了。我相信这是因为我忽略了将数组中的值分配给高位和低位,并且如果用户满足while 循环的条件,我也忽略了重新运行代码。最初,我写了它,所以高低保持没有值,while 条件被困在一个无限循环中,因为我没有在满足条件后给它执行一些东西。
#include <stdio.h>
#define NUMS 3
int main (void)
{
int high[NUMS];
int low[NUMS];
int max = 40;
int min = -40;
printf ("---===IPC Temperatur Analyzer ===---\n");
printf ("Enter the high value for day 1: ");
scanf ("%d", &high);
printf ("Enter the low value for day 1: ");
scanf ("%d", &low);
while (high[0] > max || low[0] > min || high[0] < low[0]) {
printf("Try again\n");
printf ("Enter the high value for day 1: ");
scanf ("%d", &high[0]);
printf ("Enter the low value for day 1: ");
scanf ("%d", &low[0]);
}
printf ("Enter the high value for day 2: ");
scanf ("%d", &high[1]);
printf ("Enter the low value for day 2: ");
scanf ("%d", &low[1]);
printf ("Enter the high value for day 3: ");
scanf ("%d", &high[2]);
printf ("Enter the low value for day 3: ");
scanf ("%d", &low[2]);
return 0;
}
【问题讨论】:
-
high 和 low 是数组。在该比较中,它们被衰减为指针
-
您需要一个变量来存储天数。然后更改所有
scanf值以使用天数作为数组的索引:scanf("%d", &high[day_num]); -
第 1 天使用
high[0],第 2 天使用high[1],等等。例如,scanf ("%d", &high[0]);和while (high[0] > max || ...)。您的代码将受益于使用循环而不是在第 1、2 和 3 天重复相同的代码。 -
好的,我相信通过在 high 旁边添加类似 [0] 的内容,我将它分配给数组中的一个值?我最近才了解数组,所以我仍在尝试了解它们的功能。另外,我实施了上述建议并设法使 while 语句起作用,但是,我遇到了无限的“再试一次”字符串。为了防止这个错误,我将如何继续循环它?
-
如果while-loop中的值没有改变,条件不会改变,循环会重复。有必要在循环中更改值(它们应该重新输入。)。
标签: c arrays while-loop int