我想询问用户一年,如果用户输入的数字大于0,程序将运行,完成后再询问一年,如果用户输入0,程序将结束。目前,代码完美但只有一次。所以我唯一需要修复的是while循环。当我启动代码时,它要求一年,我给一年,然后输出答案,但程序结束,而我希望它连续多年询问,直到我输入' 0' 0结束该计划。
这是我的代码:
#include<stdio.h>
/* 7.2 */
/* Julian Calendar */
int main()
{
int year = 1;
while (year > 0)
{
printf("Year: "); /* Request year as input */
scanf("%d", &year); /* Accept/read year "year" */
if (year <= 1582)
{
if (year % 4 == 0) /* If year is divisible by 4 */
{
if (year % 100 == 0) /* If year is divisible by 100 */
{
if (year % 400 == 0) /* If year is divisible by 400 */
printf("%4d is a leap year.\n", year); /* Yes */
else
printf("%4d is not a leap year.\n", year); /* No */
}
else printf("%4d is a leap year.\n", year); /* Yes */
}
else printf("%4d is not a leap year.\n", year); /* No */
return 0;
}
/* Gregorian Calendar */
else if (year % 4 == 0) /* If year is divisible by 4 */
{
if (year % 100 == 0) /* If year is divisible by 100 */
{
if (year % 400 != 0) /* If year is not divisible by 400 */
printf("%4d is not a leap year.\n", year); /* No */
else
printf("%4d is a leap year.\n", year); /* Yes */
}
else printf("%4d is a leap year.\n", year); /* Yes */
}
else printf("%4d is not a leap year.\n", year); /* No */
}
}
任何帮助将不胜感激,谢谢。 对不起我第一次回答这个问题并不清楚。
答案 0 :(得分:2)
我唯一可以建议你这样的细节是这样的:
do {
//ask for year input...
....
....
if (year==0) {
flag++;
}
while(flag==0);
答案 1 :(得分:1)
我认为这个代码中唯一的错误是:
return 0;
如果您为year
输入的值小于或等于&#34; 1582&#34;,则会导致return 0;
代码行正在运行,实际上,结束你的while循环和main()
函数。
您需要从while循环中删除该行,而不是将其作为main()
的最后一行:
int main()
{
int year = 1;
while (year > 0)
{
// Rest of code
}
return 0; // Put return statement here instead if inside the while() loop
}
除了之外,就像@SomeProgrammerDude在评论中提到的那样,你不需要像你的情况那样使用fflush(stdin)
,这会导致未定义的行为。
答案 2 :(得分:1)
for( ; ; ) {
//ask for year
//
if(year<1) break;
// do the work
}