我的Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
循环只发生一次,而我需要多次检查以确保小时输入为24小时。我做错了什么?我知道可能有些东西,但是我一直在玩它,我仍然只有一次while循环。
while
答案 0 :(得分:7)
如果您想在用户提供无效输入时继续询问输入,则需要检查:
while (h < 0 || h >= 24);
就像现在一样,您只需执行一次while
,因为输入有效并符合h > 0 && h < 24
的模式。
答案 1 :(得分:1)
我猜你的while
循环只运行一次因为条件变错了。
我猜你想要这样的东西:
#include <stdio.h>
#include <time.h>
int main(int argc, char *argv[])
{
int h=0;
int m=0;
int d=0;
int ht=0;
int t=0;
do
{
if (h != 0) printf ("Invalid input. Please use 24hr format\n"); /* get this inside the loop */
printf("Starting Hour: "); /* get this inside the loop */
if (scanf("%d", &h) != 1) return 1; /* add checking if the reading is successful */
}
while (h < 0 || 24 <= h); /* loop while the input is invalid */
/* remove extra scanf and printf */
printf("Starting Minute: ");
if (scanf("%d",&m) != 1) return 1; /* add checking if the reading is successful */
printf("Starting Time is %d:%d, what is the duration? ", h, m);
if (scanf("%d",&d) != 1) return 1; /* add checking if the reading is successful */
t=(m+d);
ht=t/60;
h=(h+ht)%24;
m=t%60;
printf("Ending Time: %d:%d",h,m);
printf("\n");
/* no extra reading */
return 0;
}
答案 2 :(得分:0)
如果您想以24小时格式输入一小时,则必须接受小时部分0-23之间的数字,因为它可以从00:00到23:59。
所以你的循环表达式应该是:while (h < 0 || h > 23);