① c语言中输入年月日,判断这一天是一年的第几天……
以2月10日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
源代码:
#include "stdio.h"
#include "stdlib.h"
int main()
{
int day,month,year,sum,leap;
printf(" please input year,month,day ");
scanf("%d,%d,%d",&year,&month,&day);
switch(month) /*先计算某月以前月份的总天数*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error
");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("It is the %dth day.
",sum);
return 0;
}
输出
please input year,month,day
2019,02,10
It is the 41th day.
(1)用c语言推测年月日扩展阅读
c语言编写程序根据输入的时间分别输出问候语
#include <stdio.h>
int main()
{
int a;
printf("请输入时间,例如:17");
scanf("%d",&a);
if(a<=12&&a>=0) printf("早");
else if(a>12&&a<=14) printf("午");
else printf("晚");
printf("%d",s);
return 0;
② c语言输入年,月,日,判断该日期是当年的第几天
#include<stdio.h>
intrun(intyear)//判断闰年
{
if((year%4==0&&year%100!=0)||year%400==0)
return2;
else
return1;
}
intjisuan(intyear,intmonth)//计算当月之前度过的日子
{
intx,i,s=0;
intdate[2][12]=
{
{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}
};
x=run(year);
for(i=1;i<month;i++)
s+=date[x-1][i];//下标越界
returns;
}
voidmain()
{
intyear,month,day,tian;
scanf("%d%d%d",&year,&month,&day);
tian=day+jisuan(year,month);//总天数
printf("%d",tian);
}
注释部分存在问题,测试结果:
③ 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;
}
④ c语言(根据今天的日期推算明天的日期)
不用else?
这程序要多麻烦啊
#include
<stdio.h>
void
main()
{
int
y,m,d;
int
x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("输入年
月
日,用空格分开:");
scanf("%d%d%d",&y,&m,&d);
if(y%4==0&&y%100!=0||y%400==0)x[2]=29;//闰年
if(m<1||m>12)
{printf("月份错误\n");return;}
if(d<1||d>x[m]){printf("日期错误\n");return;}
if(m==12&&d==31){y++;m=1;d=1;}
//12月31日
if(d==x[m]&&!(m==12&&d==31))m++,d=1;
//某月最后一天,但不是12月31日
if(d!=x[m]&&!(m==12&&d==31))
d++;
//不是某月最后一天,也不是12月31日
printf("下一天是%d年%d月%d日\n",y,m,d);
}
⑤ 用c语言编写程序查询日期
YMD_2_JD() 计算年月日 是 该年的第几天。
YMD_2_WeekDay()计算某年月日 是 星期几,用 WeekDayName[] 显示星期几的字符串。
#include<stdio.h>
int YMD_2_JD(int Y, int M, int D){
const short MonthDay[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int JD,i;
JD=D;
for (i=0;i<M;i++) JD+=MonthDay[i];
if (((Y%4==0)&&(Y%100!=0)||(Y%400==0)) && (M>2)) JD++;
return JD;
}
int YMD_2_WeekDay(int Y, int M, int D){
int offset,jd,weekD;
offset = ((Y-1)+(Y-1)/4-(Y-1)/100+(Y-1)/400) % 7 ;
jd = YMD_2_JD(Y,M,D);
weekD = (jd + offset) % 7;
return weekD;
}
char *WeekDayName[]={" ","Mon","Tue","Wen","Thu","Fri","Sat","Sun"};
main(){
int Y,M,D;
printf("input year month day, for example 2015 3 31:\n");
scanf("%d %d %d",&Y,&M,&D);
printf("It is %dth day\n",YMD_2_JD(Y,M,D));
printf("It is %s.\n",WeekDayName[YMD_2_WeekDay(Y,M,D)]);
return 0;
}
⑥ c语言 输入某年某月某日,判断这一天是这一年的第几天
#include<stdio.h>
//输入某年某月某日,判断这一天是这一年的第几天?
int getDaysByMonth(int m,int d,char flag)
{
int c;
if(flag=='r'){//闰年
if(m==2){//2月是29天
return(31+d);
}else if(m>2){
c=0;
m=m-1;
for(;m>0;m--)
{
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
c+=31;
}else if(m==2){
c+=29;
}else{
c+=30;
}
}
return c+d;
}else{
return d;
}
}else{//平年
if(m==2){//2月是28天
return(31+d);
}else if(m>2){
c=0;
m=m-1;
for(;m>0;m--)
{
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
c+=31;
}else if(m==2){
c+=28;
}else{
c+=30;
}
}
return c+d;
}else{
return d;
}
}
}
void main()
{
int y,m,d,count=1;
printf("请输入年月日(例如2017-01-01):");
scanf("%d-%d-%d",&y,&m,&d);
while(((((y%4==0&&y%100!=0)||(y%400==0))&&(m==2))&&d>29)||
(y%400!=0&&y%4!=0&&m==2&&d>28)||
((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&d>31)||
((m==4||m==6||m==9||m==11)&&d>30)){
printf("请输入年月日(例如2017-01-01):");
scanf("%d-%d-%d",&y,&m,&d);
}
//先判断是否为闰年
if((y%4==0&&y%100!=0)||(y%400==0)){//闰年
count=getDaysByMonth(m,d,'r');
}else{//平年
count=getDaysByMonth(m,d,'n');
}
printf("%d-%02d-%02d是今年的第%d天 ",y,m,d,count);
putchar(' ');
}
(6)用c语言推测年月日扩展阅读:
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#include<math.h>//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。如下例所示:
#include"myproject.h"//用在当前项目中的函数原型、类型定义和宏
可以在#include命令中使用宏。如果使用宏,该宏的取代结果必须确保生成正确的#include命令。例1展示了这样的#include命令。
【例1】在#include命令中的宏
#ifdef _DEBUG_
#define MY_HEADER"myProject_dbg.h"
#else
#define MY_HEADER"myProject.h"
#endif
#include MY_HEADER
当上述程序代码进入预处理时,如果_DEBUG_宏已被定义,那么预处理器会插入myProject_dbg.h的内容;如果还没定义,则插入myProject.h的内容。
⑦ 用C语言写一个函数,给出年月日,计算该日是该年的第几天
//说明:你的程序存在几个语法错误,1、find(x,y,z)应改成find(int x,int y,int z)函数的定义语法;2、//int find(x,y,z);此处声明多余了,因为函数是在前面定义的,就无需再声明了,而且声明语法不对,应为find(int x,int y,int z);要加分号。3、格式控制符号用错了,应该是没有“,”的scanf("%d%d%d",&year,&month,&date);即在%d%d之间没有逗号;//另外我也编了一个仅供参考,编译成功的,在后面。
//此为我对你的代码的改正,都做了注释说明。
#include
int x,y,z;
int find(int x,int y,int z)//find(x,y,z)应改成find(int x,int y,int z)
{int i,t,s,days=0;
if(x%4==0)t=1;
else t=0;
for(i=1;i<y;i++)
{if(i==2)s=2-t;
else s=0;
days=days+30+i%2-s;
}
days=days+z;
return(days);
}
void main()
{//int find(x,y,z);此处声明多余了,因为函数是在前面定义的,就无需再声明了
int year,month,date,day;
scanf("%d%d%d",&year,&month,&date);//格式控制符号用错了,应该是没有“,”的
day=find(year,month,date);
printf("THE DATE IS THE %dth DAYS\n",day);
}
//另外我也编了一个仅供参考,编译成功的
#include
void main()
{
int year,month,day,sum;
scanf("%d%d%d",&year,&month,&day);
int p(int year);
int monday(int m);
int find(int y,int m,int d);
sum=find(year,month,day);
printf("THE DATE IS THE %dth DAYS\n",sum);
}
int p(int year){//判断是否为闰年
int leap;
if((year%4==0&&year%100!=0)||(year%400==0)) leap=1;
else leap=0;
return leap;
}
int mon_day(int y,int m){//判断月份的日子总数
int num;
switch (m)
{ case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:num=31;break;
case 4:
case 6:
case 9:
case 11:num=30;break;
case 2:{if (y&&(m=2)) num=29;
else num=28;
}break;
}
return num;
}
int find(int y,int m,int d){//计算日子,用遍历的方法,因为每个月份的天数是不同的,闰年时2月天数也不同
int sum=d;
while (m>1){
m=m-1;
sum=sum+mon_day(y,m);}
return sum;
}