C语言用结构体求所给日期是一年第几天
2013-08-03 19:13
197 查看
#include <stdio.h>
#include <string.h>
#include <assert.h>
typedef struct date
{
int year;
int month;
int day;
}DATE;
int days[12]={0};
int main()
{
DATE date;
int valid=0;int which_day;
do
{
printf("请输入某天日期值(年,月,日),输入(0,0,0)代表结束\n");
scanf("%d,%d,%d",&date.year,&date.month,&date.day);
valid=isvalid(date);
//printf("valid=%d\n",valid);
if(valid==1)
{
which_day=whichday(date);
printf("%d-%d-%d是%d年的第%d天\n",date.year,date.month,date.day,date.year,which_day);
}
else printf("您的输入有误\n");
}
while(date.year!=0||date.month!=0||date.day!=0);
return 0;
}
int isleap(const int year_input)//是否是闰年
{
int is_leap;
assert(year_input>=0&&year_input<=9999);
if(year_input%4==0&&year_input%100!=0)
is_leap=1;
else if(year_input%400==0)
is_leap=1;
else
is_leap=0;
return is_leap;
}
int isvalid(DATE date_input)//判断输入的日期是否有效
{
int is_valid=0;int is_leap;
is_leap=isleap(date_input.year);
days[0]=31;
days[2]=31; days[3]=30;
days[4]=31; days[5]=30;
days[6]=31; days[7]=31;
days[8]=30; days[9]=31;
days[10]=30;days[11]=31;
switch(is_leap)
{
case 1:days[1]=29;break;
case 0:days[1]=28;break;
}
if(date_input.year>=0&&date_input.year<=9999)
if(date_input.month>=1&&date_input.month<=12)
if(date_input.day>=0&&date_input.day<=days[date_input.month-1])
is_valid=1;
else is_valid=0;
return is_valid;
}
int whichday(DATE date)//求是第几天
{
int i;int sum=0;
if(date.month==1)
sum=date.day;
else
{
for(i=0;i<date.month-1;i++)
{
sum=sum+days[i];
}
sum=sum+date.day;
}
return sum;
}
#include <string.h>
#include <assert.h>
typedef struct date
{
int year;
int month;
int day;
}DATE;
int days[12]={0};
int main()
{
DATE date;
int valid=0;int which_day;
do
{
printf("请输入某天日期值(年,月,日),输入(0,0,0)代表结束\n");
scanf("%d,%d,%d",&date.year,&date.month,&date.day);
valid=isvalid(date);
//printf("valid=%d\n",valid);
if(valid==1)
{
which_day=whichday(date);
printf("%d-%d-%d是%d年的第%d天\n",date.year,date.month,date.day,date.year,which_day);
}
else printf("您的输入有误\n");
}
while(date.year!=0||date.month!=0||date.day!=0);
return 0;
}
int isleap(const int year_input)//是否是闰年
{
int is_leap;
assert(year_input>=0&&year_input<=9999);
if(year_input%4==0&&year_input%100!=0)
is_leap=1;
else if(year_input%400==0)
is_leap=1;
else
is_leap=0;
return is_leap;
}
int isvalid(DATE date_input)//判断输入的日期是否有效
{
int is_valid=0;int is_leap;
is_leap=isleap(date_input.year);
days[0]=31;
days[2]=31; days[3]=30;
days[4]=31; days[5]=30;
days[6]=31; days[7]=31;
days[8]=30; days[9]=31;
days[10]=30;days[11]=31;
switch(is_leap)
{
case 1:days[1]=29;break;
case 0:days[1]=28;break;
}
if(date_input.year>=0&&date_input.year<=9999)
if(date_input.month>=1&&date_input.month<=12)
if(date_input.day>=0&&date_input.day<=days[date_input.month-1])
is_valid=1;
else is_valid=0;
return is_valid;
}
int whichday(DATE date)//求是第几天
{
int i;int sum=0;
if(date.month==1)
sum=date.day;
else
{
for(i=0;i<date.month-1;i++)
{
sum=sum+days[i];
}
sum=sum+date.day;
}
return sum;
}
相关文章推荐
- C语言根据日期取其位于一年中的第几天
- 用C语言来实现_输入一个日期(年月日),计算是这一年中的第几天
- 【C语言】结构体判断一个日期是该年的第几天
- C语言根据日期取其位于一年中的第几天
- 【C语言】计算指定日期是一年中第几天
- 用C语言来实现_输入一个日期(年月日),计算是这一年中的第几天(集思广议)
- C语言实现通过日期计算这是一年中的第几天
- NYOJ_75 日期计算 (推断这一天是这一年中的第几天)
- 获取给定日期是一年中的第几天
- 第十七周项目4 - 日期结构体(是当年的第几天)
- 第十七周项目 4 日期结构体——该年第几天
- Mohican_3/21 C语言 内存对齐 判断日期 结构体部分知识
- 第17周项目4 日期结构体——当年第几天 版本二
- C语言:输入某年某月某日,判断这一天是这一年的第几天?
- Python中根据提供的日期,返回是一年中的第几天
- JavaScript-判断指定日期是一年中第几天-按照从大到小的顺序输出
- 【小工具】日期与一年中第几天的转换程序
- 第十七周项目四日期结构体(1)该日是该年的第几天
- C语言之计算某天为一年中第几天
- getdate() 返回日期时间数组(年、月、日、时、分、秒、一年中第几天、月中第几天、星期中第几天,几月份,星期几)