㈠ ”输入某年某月某日,判断这一天是这一年的第几天“用c语言怎样编程
#include<stdio.h>
voidmain()
{
intsumday(intmonth,intday);/*计算第多少天的函数声明*/
intleap(intyear);/*判断是否闰年的函数声明*/
intmonth,day,days,year;
intdaytab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};/*一般年的12个月的天数组成一个数组*/
printf("Pleaseinputdate(year,month,day):");/*提示输入年月日*/
scanf("%d-%d-%d",&year,&month,&day);/*输入年月日*/
printf("%d/%d/%d\n",year,month,day);
days=sumday(month,day);/*计算天数的函数调用*/
if(leap(year)&&month>=3)/*调用判断是否闰年的函数,并且月份大于等于3时天数加1*/
days=days+1;
printf("Todayisthe%ddayofthisyear.",days);/*显示是第多少天的函数*/
}
intsumday(intmonth,intday)
{
intdaytab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
inti;
for(
i=0;i<month;i++)
day+=daytab[i];
return(day);
}
intleap(intyear)
{
intleap;
leap=(year%4==0&&year%100!=0||year%400==0);
return(leap);
}
㈡ C语言中输入一个日期计算他是今年的第几天
输入年月日三个值,先累加该年之前各个月的每月天数,最后累加日期天数即可获取结果。
一、算法设计:
1、输入年月日三个值;
2、为保证程序健壮性,可以对三个值的合法性进行判断,只对合法数据进行操作;
3、累加之前各月天数;
4、累加当前日值;
5、输出结果。
二、注意点:
可以使用数组存储各个月份的天数,用循环累加。需要注意的是闰年的判断。对于闰年,2月要多加一天。
三、参考代码:
#include<stdio.h>
intmain()
{
intmdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};//十二个月的天数。
inty,m,d,r=0,i;
scanf("%d%d%d",&y,&m,&d);
if(y%400==0||(y%4==0&&y%100!=0))//闰年。
mdays[1]=29;//设置闰年二月值。
if(y<0||m<=0||m>12||d<=0||d>mdays[m-1])//输入非法。
{
printf("输入年月日不合法 ");//提示并退出。
return-1;
}
for(i=0;i<m-1;i++)//累加之前各个月。
r+=mdays[i];
r+=d;//累加日期值。
printf("%d ",r);//输出结果。
return0;
}
㈢ c语言输入年月日,算第几天
日期比较容易算。星期几可以用下面的公式来计算:
(年份-1) + (年份-1)/4 - (年份-1)/100 + (年份-1)/400 +第几天
建立两个数组,一个是每月天数的数组,一个是星期几的数组。
程序如下:
#include<stdio.h>
voidmain()
{
inti,n=0,year,month,day,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
charb[7][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
scanf("%d/%d/%d",&year,&month,&day);
if((year%4==0&&year%100)||year%400==0)a[2]=29;
for(i=0;i<month;i++)
n+=a[i];n+=day;
printf("%d%s",n,b[((year-1)+(year-1)/4-(year-1)/100+(year-1)/400+n)%7]);
}