/*
循环:即重复,当某些语句要出现执行多次时,就会把这
些语句放到循环的大括号内。
循环体:是循环大括号内的所有语句的集合。
循环的次数,往往会定义一个整型变量来控制,叫循环变量。
循环变量的三个必要表达式:
1.初值,是赋值语句,如:x=1
2.终限,是关系或关系加逻辑表达式,如:x<=100
3.步长,是一个复合赋值语句(会改循环变量的值),如:x++,或x+=2
循环变量的三个表达式应该怎么组合:
1.当初值小于终限,那么,关系表达式应该用小于或
小于等于,步长用+=或++
2.当初值大于终限,那么,关系表达式应该用大于或
大于等于,步长用-=或--
当循环终限为假时,结束循环,循环变量的值为"比终限大"或"比终限小"
for循环变量的三个表达式和循环体的执行次序:
1.初值
2.终限(为真时执行循环体,为假时结束循环(即循环右大括号之后))
3.循环体
4.步长(之后还会回到终限,判断真假)
*/
#include "stdio.h"
void main()
{
int ds[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int year,month,day,days=0,maxdays=0;
int n;
int i;
int s;
printf("请输入年份数:");
do{
n=0;
n=scanf("%d",&year);
if(n!=1||year<1900)
{
printf("年份输入有误,请重输:");
fflush(stdin);
}
}while(n!=1||year<1900);
if(year%4==0&&year%100!=0||year%400==0)
ds[1]=29;
printf("请输入月份:");
do{
n=0;
n=scanf("%d",&month);
if(n!=1||month<1||month>12)
{
printf("月份输入有误,请重输:");
fflush(stdin);
}
}while(n!=1||month<1||month>12);
printf("请输入号:");
do{
n=0;
n=scanf("%d",&day);
if(n!=1||day<1||day>ds[month-1])
{
printf("号数输入有误,请重输:");
fflush(stdin);
}
}while(n!=1||day<1||day>ds[month-1]);
for(i=0;i<=month-2;i++)
{
days+=ds[i];
}
days+=day;
if(year%4==0&&year%100!=0||year%400==0)
s=366;
else
s=365;
printf("%d/%d/%d是本年的第%d天
",year,month,day,days);
printf("离元旦还有%d天
",s-days);
}