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

c语言知输入年积日取年月日

发布时间: 2022-06-30 22:06:05

A. 用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;

}

程序运行结果如下:



(1)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;

}

B. C语言中如何把月日年输出为年月日

这要看原来的程序中,月日年是怎么组织的?如果分别存放在三个变量中,那么只要把这三个变量的输出顺序交换一下就可以了。
例如,
int y,m,dm,d;
printf("请输入月 日 年:");
scanf("%d%d%d",&m,&d,&y);
printf("%d年%d月%d日",y,m,d);

C. c语言输入任一年、月、日,计算该年月日为星期几

不必用 switch. 以前编过一个. 现在找出来配了个主程序. 你试试吧.

---输入年,月,日:2000,3,1
答: 2000年3月1日是星期三.

---输入年,月,日:2008,4,20
答: 2008年4月20日是星期日.

---输入年,月,日:0

年月日数字用逗号隔开. 想结束的时候输入一个0就可以了.

int Ymd2Wday(int year, int month, int days)
{
static int mdays[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 };
int i, y = year - 1;
for (i=0; i<month; ++i) days += mdays[i];
if (month>2) { // Increment date if this is a leap year after February
if (((year%400)==0) || ((year&3)==0 && (year%100))) ++days;
}
return (y+y/4-y/100+y/400+days)%7;
}

int main()
{
int y,m,d,w;
static char* wday[]={ "日","一","二","三","四","五","六" };
printf("---输入年,月,日:");
while (scanf("%d,%d,%d", &y, &m, &d)==3) {
w = Ymd2Wday(y,m,d);
printf("答: %d年%d月%d日是星期%s.\n\n---输入年,月,日:", y, m, d, wday[w]);
}
return 0;
}

D. C语言:输入年份和天数,输出对应的年、月、日

下面是这段代码,配合注释体会一下吧

#include <stdio.h>

void MonthDay(int year,int yearDay,int *pMonth,int *pDay);

int main()
{
int year,yearDay,month,day;
scanf("%d%d",&year,&yearDay);//输入年份和天数
MonthDay(year,yearDay,&month,&day);
printf("%d-%d-%d",year,month,day);
return 0;
}

void MonthDay(int year,int yearDay,int *pMonth,int *pDay)
{
int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};//这个数组保存每月的天数
if(year%4==0&&year%100!=0||year%400==0)//判断是否为闰年
days[1]=29;//闰年的二月有29天
*pMonth=1;//从一月开始看
while(yearDay>days[*pMonth-1])//如果哪一天超出这个月
{
yearDay-=days[*pMonth-1];//求出超出此月的天数
(*pMonth)++;//继续考虑下一月
}
*pDay=yearDay;
}

E. 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(" ");

}

(5)c语言知输入年积日取年月日扩展阅读

使用c语言编程结构tm格式化时间注意事项:

tm结构在C/C++中处理日期和时间相关的操作时,显得尤为重要。tm结构以C结构的形式保存日期和时间,大多数与时间相关的函数都使用了tm结构。

使用了tm结构和各种与日期和时间相关的函数。在练习使用结构之前,需要对C结构有基本的了解,并懂得如何使用箭头->运算符来访问结构成员。

F. C语言输入年份和天数输出对应的年月日

C语言输入年份和天数输出对应的年月日的源代码如下:

#include<iostream>

intday(int&year,int&month);

intmain()

{

intyear{};

intmonth{};

std::cout<<"请输入年和月(空格隔开):";

std::cin>>year>>month;

std::cout<<"该月天数:"<<day(year,month)<<' ';

return0;

}

(6)c语言知输入年积日取年月日扩展阅读

1、C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件。

2、有四个与时间相关的类型:clock_t、time_t、size_t和tm。类型 clock_t、size_t 和 time_t 能够把系统时间和日期表示为某种整数。

G. 【悬赏】程序编写,输入年月日和一个天数,再输出年月日,c语言

#include <stdio.h>
int days[]={31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int year , mon , day , num;
printf("input yyyy/mm/dd:");
scanf("%d/%d/%d" , &year , &mon , &day );
//请确保输入的数据是有效的日期,不然出错
//根据年份确定当年是否闰年
if ( (year%4==0 && year %100) || year %400==0 )
days[1]=29; //闰年二月29
else
days[1]=28;//平年二月28
printf( "input days:" );
scanf( "%d" , &num );
//目前只支持正数
day += num ;
while ( day > days[mon-1] ) //天数超过当前月最大天数,要过月
{
day -= days[mon-1] ;
mon += 1 ;
if ( mon > 12 ) //月满则变年
{
mon=1;
year += 1 ; //年变后,要重新确认下一年是否闰年
if ( (year%4==0 && year %100) || year %400==0 )
days[1]=29;
else
days[1]=28;
}
}
printf("new day:%d/%d/%d\n" , year , mon , day );
return 0;
}

H. c语言问题 求年月日

这里要改一下:
if(year%4==0&&year%100!=0||year%400==0) {
a[1]=29;
}else{
a[1]=28;
}
最后要加个return 0;

I. 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;
}

J. C语言输出用户输入的年月日

void main()
{
int day;
int year;
char month[3];

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

}