当前位置:首页 » 编程语言 » c语言输出前一天日期
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言输出前一天日期

发布时间: 2022-09-13 12:07:46

Ⅰ 用c语言编程,输入一个日期,系统输出第二天的日期。求解。

//输入年月日,再输入天数,求这些天之后的日期是多少
#include
<stdio.h>
int
main()
{
int
s[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,
0,31,29,31,30,31,30,31,31,30,31,30,31,};
int
year=0;
int
month=0;
int
day=0;
int
n,i,daytemp;
int
flag=0;
int
nyear=0,nmonth=0,nday=0;
printf("输入年月日\n");
scanf("%d%d%d",&year,&month,&day);
//printf("输入天数\n");
//scanf("%d",&n);
n=1;
if(year<0||month<0||month>12||day<1||n<0)
{
printf("输入数据错误\n");
return
1;
}
daytemp=day+n;//累加天数
if((year%4==0&&year%100!=0)||year%400==0)//闰年置1
flag=1;
if(day>s[flag][month])
{
printf("输入日期与年月不符.\n");
return
1;
}
if(daytemp<=s[flag][month])//当前日期加天数在本月
{
nyear=year;
nmonth=month;
nday=daytemp;
}
else
{
i=month;
nyear=year;
while(daytemp>s[flag][i])//循环递减,直到当前日期加天数在本月
{
daytemp=daytemp-s[flag][i];
i++;
if(i>12)//超过一年,年累加
{
nyear++;
if((nyear%4==0&&nyear%100!=0)||nyear%400==0)
flag=1;
else
flag=0;
i=i-12;
}
}
nmonth=i;
nday=daytemp;
}
printf("%d年%d月%d日第%d天后是:\n",year,month,day,n);
printf("%d年%d月%d日\n",nyear,nmonth,nday);
return
0;
}

Ⅱ c语言中如何获取系统日期的前一天

#include<stdio.h>
#include<time.h>

char*GetDate(char*curdate){
inty,m,d;
time_tT;
structtm*timeinfo;
time(&T);
timeinfo=localtime(&T);
y=timeinfo->tm_year+1900;
m=timeinfo->tm_mon+1;
d=timeinfo->tm_mday;
sprintf(curdate,"%04d年%02d月%02d日",y,m,d);
returncurdate;
}

char*GetTime(char*curtime){
inth,m,s;
time_tT;
structtm*timeinfo;
time(&T);
timeinfo=localtime(&T);
h=timeinfo->tm_hour;
m=timeinfo->tm_min;
s=timeinfo->tm_sec;
sprintf(curtime,"%02d:%02d:%02d",h,m,s);
returncurtime;
}

intmain(){
chars[50];
printf("%s ",GetDate(s));
printf("%s ",GetTime(s));
return0;
}

Ⅲ c语言题目,急求!!!要求利用函数,输入一个日期字符串,然后输出该日期的前一天!

typedefstruct{
inty;
intm;
intd;
}Date;

voidpre_date(Date*s,Date*p){
*p=*s;
if(p->d>1){
p->d--;
return;
}
p->m--;
switch(p->m){
case0:
p->y--;
p->m=12;
case1:case3:case5:case7:case8:case10:
p->d=31;
break;
case2:
p->d=28;
if(((p->y%4==0))&&!(p->y%100==0&&p->y%400!=0))
p->d++;
break;
case4:case6:case9:case11:
p->d=30;
break;
}

}
voidget_date(char*s,Date*d){
constcharfmt[]="YYYYMMDD";
constchar*m=fmt;
d->y=d->m=d->d=0;
while(*s){
int*c;
switch(*m){
case'Y':c=&d->y;break;
case'M':c=&d->m;break;
case'D':c=&d->d;break;
}
*c=*c*10+(*s-'0');
m++;
s++;
}
}
intmain(){
charstr[512];
Dated1,d2;
gets(str);
get_date(str,&d1);
pre_date(&d1,&d2);
printf("%d-%02d-%02d",d2.y,d2.m,d2.d);
return0;
}

Ⅳ C语言输出昨天日期

#include<stdio.h>

typedefstruct{
intyear;
intmonth;
intday;
}Date;

intmain(void)
{
Datetoday,yesterday;

printf("inputthedate(eg.2014-5-20): ");
scanf("%d-%d-%d",&today.year,&today.month,&today.day);


intstandard_day[12]={31,28,31,30,31,30,31,31,30,31,30,31};//非闰年每月份的天数

if((today.year%4==0&&today.year%100!=0)||(today.year%400==0))
standard_day[1]+=1;//表示如果是闰年,二月份为29天

if(today.year<0||
today.month<0||today.month>12||
today.day<0||today.day>standard_day[today.month-1])//判断输入是否有误
{
printf("theinputdateisERROR! ");
return0;
}

if(today.day==1)//如果日期是1号
{
if(today.month==1)//如果月份是1月,年-1,月为12,天为31
{
yesterday.year=today.year-1;
yesterday.month=12;
yesterday.day=standard_day[11];
}
else//如果不是12月
{
yesterday.year=today.year;
yesterday.month=today.month-1;
yesterday.day=standard_day[today.month-1-1];
}
}
else//正常日期,年月不变,天-1
{
yesterday.year=today.year;
yesterday.month=today.month;
yesterday.day=today.day-1;
}

printf("Yesterdayis: %04d-%02d-%02d ",yesterday.year,yesterday.month,yesterday.day);//输出结果

return0;
}

Ⅳ 用C语言 编写如下函数,求出并设置y年m月d天的前一天或后一天的日期(能正确判断闰年)

//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
void yesterday(int *y,int *m,int *d){
int month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(--*d==0){
if(--*m==2)
*d=28+(*y%400==0 || *y%4==0 && *y%100!=0);
else if(*m==0){
(*y)--;
*m=12;
*d=31;
}
else *d=month[*m];
}
}
void tomorrow(int *y,int *m,int *d){
int month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
month[2]+=(*y%400==0 || *y%4==0 && *y%100!=0);
if(++*d>month[*m]){
*d=1;
if(++*m>12){
*m=1;
(*y)++;
}
}
}
void main(void){
int y,m,d,yy,mm,dd;
printf("Input y,m,d(such as xxxx xx xx)...\n");
scanf("%d%d%d",&y,&m,&d);
yy=y,mm=m,dd=d;
yesterday(&y,&m,&d);
printf("The yesterday is %d-%d-%d.\n",y,m,d);
tomorrow(&yy,&mm,&dd);
printf("The tomorrow is %d-%d-%d.\n",yy,mm,dd);
}

Ⅵ 用c语言从键盘任意输入一个日期(年月日),输出第二天的日期(年月日)。

源程序如下:

#include "pch.h"

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

using namespace std;

int main()

{

int s[2][13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31,

0,31,29,31,30,31,30,31,31,30,31,30,31, };

int year = 0;

int month = 0;

int day = 0;

int n, i, daytemp;

int flag = 0;

int nyear = 0, nmonth = 0, nday = 0;

printf("输入年月日 ");

scanf("%d%d%d", &year, &month, &day);

//printf("输入天数 ");

//scanf("%d",&n);

n = 1;

if (year < 0 || month < 0 || month>12 || day < 1 || n < 0)

{

printf("输入数据错误 ");

return 1;

}

daytemp = day + n;//累加天数

if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)//闰年置1

flag = 1;

if (day > s[flag][month])

{

printf("输入日期与年月不符. ");

return 1;

}

if (daytemp <= s[flag][month])//当前日期加天数在本月

{

nyear = year;

nmonth = month;

nday = daytemp;

}

else

{

i = month;

nyear = year;

while (daytemp > s[flag][i])//循环递减,直到当前日期加天数在本月

{

daytemp = daytemp - s[flag][i];

i++;

if (i > 12)//超过一年,年累加

{

nyear++;

if ((nyear % 4 == 0 && nyear % 100 != 0) || nyear % 400 == 0)

flag = 1;

else

flag = 0;

i = i - 12;

}

}

nmonth = i;

nday = daytemp;

}

printf("%d年%d月%d日第%d天后是: ", year, month, day, n);

printf("%d年%d月%d日 ", nyear, nmonth, nday);

return 0;

}

程序运行结果如下:



(6)c语言输出前一天日期扩展阅读:

其他实现方式:

int monthsize(int year, int month) {

int days;

if (month == 2) {

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)

return 29;

return 28;

}

switch (month) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:days = 31; break;

case 4:

case 6:

case 9:

case 11: days = 30; break;

}

return days;

}

int main()

int year, month, day, days;

printf("年 月 日:");

while (scanf("%d%d%d", &year, &month, &day) == 3) {

days = monthsize(year, month);

if (days == day) {

if (month == 12) {

++year;

month = 1;

day = 1;

}

else ++month;

}

else ++day;

printf("第二天是:%d/%02d/%02d ", year, month, day);

printf("年 月 日(q to quit):");

}

return 0;

}

Ⅶ 输入一个日期(*年*月*日),通过计算返回该日期的前一天日期值。C语言

#include<stdio.h>

typedef struct TDate{
int year,month,day;
} MyDate;

int isLeapyear(int y){
int r=y%400==0 || y%4==0 && y%100!=0;
return r;
}

MyDate input(){
MyDate d;
scanf("%d%d%d", &d.year, &d.month, &d.day);
return d;
}

void display(MyDate d){
printf("%4d-%02d-%02d\n", d.year, d.month, d.day);
}

MyDate PreDate(MyDate date){
MyDate td=date;
td.day--;
if(td.day==0){
td.month--;
if(td.month==0){
td.day=31;
td.month=12;
td.year--;
}else{
switch(td.month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
td.day=31; break;
case 4:
case 6:
case 9:
case 11:
td.day=30; break;
case 2:
td.day=( isLeapyear(td.year) ? 29 : 28 );
break;
}
}
}
return td;
}

void main(){
MyDate d1,d2;
d1=input();
display(d1);
d2=PreDate(d1);
display(d1);
display(d2);
}