C语言循环问题

2025-05-21 01:32:24
推荐回答(1个)
回答1:

你还是说说你的程序要干什么吧,实在是看不出逻辑上有哪里要改。
也没有地方要循环呀?

看明白了,也改好了你运行下吧看满意不:
#include "stdio.h"
#include "conio.h"
int IsLeapYear(int Year);
int IsCurrentDate(int Year,int Month,int Day);
int ReturnNextDay(int Year,int Month,int Day);
int LeapYear_Month_SumDay[12]={31,29,31,30,31,30,31,31,30,31,30,31};

void main()
{
int Year=0,Month=0,Day=0,NextDay=0;
char IsRetry;
do{
Year=-1;Month=-1;Day=-1;NextDay=-1;
printf("\npleace enter a date(example:2007 3 24):\n");
scanf("%d%d%d",&Year,&Month,&Day);
NextDay=ReturnNextDay(Year,Month,Day);

if(NextDay==0)
{
printf("\nerror\n\nAre you going to Retry?(Y/N):");
IsRetry=getch();
if(IsRetry=='y'||IsRetry=='Y') continue;
else break;
}

if(NextDay==1)
{
if (Month==12)
{
Year++;
Month=1;
}
else
{
Month++;
}
}
if (NextDay!=0) printf("The next day you input is %d-%d-%d.\n",Year,Month,NextDay);
printf("Are you going to Input Another?(Y/N):");
IsRetry=getch();
if(IsRetry!='y'&&IsRetry!='Y') break;
}while(1);
}

int IsLeapYear(int Year)
{
if (Year%4==0)
{
if (Year%100==0)
{
if (Year%400==0) return 1;
else return 0;
}
else return 1;
}
else return 0;
}

int IsCurrentDate(int Year,int Month,int Day)
{
if ((Year<0)||(Year>9999)||(Month>12)||(Month<1)||(Day<1)||(Day>31)) return 0;
else return 1;
}

int ReturnNextDay(int Year,int Month,int Day)
{

int ThisMonthSumDay;
if (IsCurrentDate(Year,Month,Day)==1)
{
ThisMonthSumDay=LeapYear_Month_SumDay[Month-1];
if (Month==2&&IsLeapYear(Year)==0) ThisMonthSumDay--;
if (Day else
{
if (Day==ThisMonthSumDay) return 1;
else return 0;
}
}
else return 0;
}