输入日期算天数c语言
1. 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;
}
2. 用c语言编程计算输入出生日期可计算出到现在存活时间天数
使用time.h,首先使用mktime函数将出生日期换算成time_t,也就是秒数。然后再使用time函数获取当时时间的秒数,两者相减,就是相差的秒数,再除以一天的秒数换算成天数就可以了。
全部源码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
main()
{
intyear,mon,mday;
time_tt1,t2;
intdays;
structtmtm;
printf("Pleaseinputyear,mon,day:");
scanf("%d,%d,%d",&year,&mon,&mday);
memset(&tm,0,sizeof(tm));
tm.tm_year=year-1900;
tm.tm_mon=mon-1;
tm.tm_mday=mday;
t1=mktime(&tm);
t2=time(NULL);
days=(t2-t1)/(24*3600);
printf("%d ",days);
}
3. 从键盘输入一个年月日,编程求这一天到年底的天数
假设输入日期格式为:yyyy-mm-dd,如2022-1-1,C语言代码如下:
#include <stdio.h>
int main() {
int y, m, d, i;
scanf("%d-%d-%d", &y, &m, &d); // 要求输入日期格式为yyyy-mm-dd
姿漏桥 int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) // 闰年
month[2] = 29; // 闰年2月为29天
if (m <= 0 || m > 12) {
printf("月份%d不属于[1,12],程序退出 ", m);
return -1;
}
int days = month[m] - d; // 距当月月底的天数
if (days < 0) {
printf("%d年%d月最多%d天,程序退出 ", y, m, month[m]);
return -1;
}
for (i = m + 1; i <= 12; i++)
days += month[i]; // 下月开始距年底的天数
printf("%d ", days);
return 0;
}
运行结果如下:
输入2022-1-1,2022年为平年搜颂,一年共365天迹猛,所以2022年第一天距年底还有364天
输出为364,符合题意,望采纳~
4. 怎么用C语言输入一个日期,求该日期是该年的第几天
我大概给个思路,顷橡世代码是现写的 没调如租试
先定义每个月的天数,2月按28天算
输入雀肢年月日后,根据年判断是否闰年(闰年加1天),再从1月加到当月的前一月,再加上日期就可以了
#include <stdio.h>
int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
main()
{int yy,mm,dd, days;
int i;
printf("input year:"); scanf("%d", &yy);
printf("input month:"); scanf("%d", &mm);
printf("input day:"); scanf("%d", &dd);
/* 如果大于2月,要做闰年的判断,忘了,不一定准 */
if( mm > 2 && ((year%4==0 && year%100!=0) || year%400==0) ) days = 1;
else days = 0;
/* 加上前面各整月的天数 */
for(i = 0; i < mm-1; i++) days += month[i];
/* 加上日数 */
days += dd;
printf("This is the %d day of year %d!!
", days, yy);
}
比如输入 1999 2 1
应该输出:This is the 32 day of year 1999!!
5. c语言关于计算天数
m[12]=(31,28,31,30,31,30,31,31,30,31,30,31);
这句的写法是错的
一、初始化应该在数组定义时
二、括号应该用{}
修改如下:
int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
具体到其它问题,请LZ自行查阅处理,你的算法逻辑好麻烦,看的不是很懂
6. c语言编写程序,输入某年某月,求该月的天数
#include<iostream.h>
voidmain()
{
intYear,Month,Day;
cout<<"Pleaseenterthecurrentdate(年月以空格分隔):";
cin>>Year>>Month;
while(Month<=0||Month>12)
{
cout<<"输入时间有误,请重新输入:";
cin>>Year>>Month;
}
switch(Month)
{
case4:
case6:
case8:
case9:
case11:
Day=30;
break;
case2:
if(Year%400==0||Year%4==0&&nYear%100!=0)
Day=29;
else
Day=28;
break;
default:Day=31;
}
cout<<"该月天数为:"<<Day<<"天";
}
7. c语言编程:输入年月日,求出该天是该年的第几天
#include<stdio.h>
intmain()
{intday,month,year,sum,leap;
printf(" 请输入年、月、日,格式为:年,月,日(2015,12,10) ");
scanf("%d%d%d",&year,&month,&day);//格式为:20190510
switch(month)//先计算某月以前月份的总天数
{case1:sum=0;break;
case2:sum=31;break;
case3:sum=59;break;
case4:sum=90;break;
case5:sum=120;break;
case6:sum=151;break;
case7:sum=181;break;
case8:sum=212;break;
case9:sum=243;break;
case10:sum=273;break;
case11:sum=304;break;
case12:sum=334;break;
default:printf("dataerror");break;}
sum=sum+day;//再加上某天的天数
if(year%400==0||(year%4==0&&year%100!=0))
{//判断是不是闰年
leap=1;
}
else
{leap=0;
}
if(leap==1&&month>2)
{//*如果是闰年且月份大于2,总天数应该加一天
sum++;
}
printf("这是这一年的第%d天。",sum);
printf(" ");
}
(7)输入日期算天数c语言扩展阅读
使用c语言编程结构tm格式化时间注意事项:
tm结构在C/C++中处理日期和时间相关的操作时,显得尤为重要。tm结构以C结构的形式保存日期和时间,大多数与时间相关的函数都使用了tm结构。
使用了tm结构和各种与日期和时间相关的函数。在练习使用结构之前,需要对C结构有基本的了解,并懂得如何使用箭头->运算符来访问结构成员。
8. 急求!C语言计算天数
#include<stdio.h>
int main()
{
int yyyy,mm,dd,a,b;
scanf("%d/%d/%d",&yyyy,&mm,&dd);
a=31*(mm>1)+28*(mm>2)+31*(mm>3)+30*(mm>4)+31*(mm>5)+30*(mm>6)+31*(mm>7)+31*(mm>8)+30*(mm>9)+31*(mm>10)+30*(mm>11)+dd;
b=((yyyy%4==0)*(yyyy%100!=0)+(yyyy%400==0))*(mm>2);
printf("%d\n",a+b);
return 0;
}
9. 输入年,月,计算该月的天数 C语言程序
#include"stdio.h"
#include"stdlib.h"
intmain()
{inty,m,days;//存放年、月、天数的变量
printf("请输入年、月(逗号隔开):
");//输入提示
scanf("%d,%d",&y,&m);//输入边长(输入时用逗号隔开)
printf("%d%d
",y,m);
switch(m)
{case1:case3:case5:case7:case8:case10:case12:days=31;break;
case4:case6:case9:case11:days=30;break;
case2:{if(y%4==0&&y%100!=0||y%400==0)days=29;//闰年
elsedays=28;
break;
}
default:days=0;//输入月份不对
}
printf("%d年%d月有%d天
",y,m,days);
system("pause");
}
10. C语言输入年月日计算该日是该年第几天,
//根据用户输入的日期计算出该日期是该年的第多少天。
#include
#include
//system("pause")
main()
{
int year,month,day,total,leap; //total总天数 ,leap用于闰年的2月天数
printf("请输入年 月 日(按顺序,中间用空格隔开):");
scanf("%d%d%d",&year,&month,&day);
if((year%4==0 && year%100!=0) || year%400==0) //判断是否闰年,闰年2月多一天,所以闰年leap为1,平年为leap为0。
{
leap=1;
}
else
{
leap=0;
}
switch(month) //根据月份计算对应的最终天数。
{
case 1: total=day;break;
case 2: total=31*1+day;break;
case 3: total=31*1+28+leap+day;break;
case 4: total=31*2+28+leap+day;break;
case 5: total=31*2+28+leap+30*1+day;break;
case 6: total=31*3+28+leap+30*1+day;break;
case 7: total=31*3+28+leap+30*2+day;break;
case 8: total=31*4+28+leap+30*2+day;break;
case 9: total=31*5+28+leap+30*2+day;break;
case 10: total=31*5+28+leap+30*3+day;break;
case 11: total=31*6+28+leap+30*3+day;break;
case 12: total=31*6+28+leap+30*4+day;break; //12月之前的11个月中有6个31天,4个30天,2月为28天+leap。
}
if(year>=1 && year<=9999 && month>=1 && month<=12 && day>=1 && day<=31) //判断输入是否正解,年份最大为9999,可自行更改。
{
printf("\n\t%d月%d日止,%d年已过去%d天。\n\n",month,day,year,total);
system("pause"); //按任意键继续...
}
else
{
printf("\n\t错误\n\n");
system("pause"); //按任意键继续...
}
return 0;
}