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);
}