【发布时间】:2017-06-13 03:12:42
【问题描述】:
当输入 INCORRECT 值时,我有一个函数退出循环。
我希望函数在退出循环之前要求用户输入正确的值。
我将用户输入的hours 的值传递给函数wrongHours
如果用户要输入低于 0 或高于 23 的小时数,该函数应该要求用户再次输入一些内容,但它只是转到下一行?我是不是少了一面旗帜?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
// function prototypes
int wrongHours(int n);
int main(void)
{
int hours;
int minutes;
printf("Enter the first hour value (0 - 23): ");
scanf("%d", &hours);
while (wrongHours(hours)) {
printf("Enter the first hour value (0 - 23): ");
scanf("%d", &hours);
}
printf("\nEnter the first minute value (0 - 59): ");
scanf("%d", &minutes);
_getch();
return 0;
} // end main
// function validates that hours are between 0 - 23
int wrongHours(int n) {
int i;
if (n < 0 || n > 23) {
printf("Invalid data entered, try again!");
return 0;
}
return 1;
}
【问题讨论】:
-
它会跳过它,因为 while 循环在不正确的时间设置为 0,因此它永远不会执行里面的内容。尝试切换您的
wrongHour回报。 -
在
wrongHours你为什么有一个循环?您是否只想检查n的值是否在0和23之间?这只需要一行。 -
你需要在
scanf之后消费'\n'
标签: c while-loop