输入年月日,判断是这年的第几天
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入年月日,判断是这年的第几天相关的知识,希望对你有一定的参考价值。
首先要判断这一年是闰年还是平年,直接用年除以四没有余数就是闰年,在闰年里一共三百六十六天,除二月多一天其他都没什么变化,在平年里,二月一号就是这一年第三十二天,三月一号是第六十天,四月一号就是第九十一天,十月一号就是这一年第二百七十四天。就这样 参考技术A #include<stdio.h>int main()
int day,month,year,sum=0,leap;
printf("输入年月日如2019 7 12\n");
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))&&month>2)
sum++;
printf("这是这一年的第%d天。",sum);
return 0;
方法2
#include<stdio.h>
int day_of_year(int (*p)[13],int year,int month,int day)
int i,leap;
leap=(year%100!=0 && year%4 ==0||year%400 ==0);
for(i=1;i<month;i++)
day+=*(*(p+leap)+i);
return day;
main()
static int day_tab[][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 a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%d\n",day_of_year(day_tab,a,b,c));
参考技术B 说实话,数学不好,不知道
编程:要求输入某一年月日,判断其为该年的第几天?
要考虑输入日期的有效性,如2月31日显然不对...
参考技术A 晕!~C到C++,轻微改一下不就得了,C++的补在C的后下面了很简单,用C写的,可以用
数组
,我没用,
代码
也可以更简单,不过这样便于你理解,我没有调试,你看一下有没有错误
main
()
int
year,moon=13,week=0,day=32,c=0,
m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12;
while(moon>12
||
moon<1
||
day>31
||
day<1)
printf("请输入年,月,日:");
scanf("%d,%d,%d",&year,&moon,&day);
/*
检验输入数据的合法性
*/
printf("\n*
%d
\\
%d
\\
%d\n",year,moon,day);
if
(year%4==0
&&
year%100!=0
||
year%400==0)
/*
检验输入年份是否为闰年
*/
m2=29;
else
m2=28;
m1=m3=m5=m7=m8=m10=m12=31;
m4=m6=m9=m11=30;
switch(moon)
case
1:
c=0;
break;
case
2:
c=m1;
break;
case
3:
c=m1+m2;
break;
case
4:
c=m1+m2+m3;
break;
case
5:
c=m1+m2+m3+m4;
break;
case
6:
c=m1+m2+m3+m4+m5;
break;
case
7:
c=m1+m2+m3+m4+m5+m6;
break;
case
8:
c=m1+m2+m3+m4+m5+m6+m7;
break;
case
9:
c=m1+m2+m3+m4+m5+m6+m7+m8;
break;
case
10:
c=m1+m2+m3+m4+m5+m6+m7+m8+m9;
break;
case
11:
c=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10;
break;
case
12:
c=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11;
break;
default:
printf("Error");
break;
printf("这日为该年的第
%d
天",c+day);
==================================
C++的
#include
<iostream>
using
namespace
std;
void
main
()
int
year,moon=13,week=0,day=32,c=0,
m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12;
while(moon>12
||
moon<1
||
day>31
||
day<1)
cout<<"请输入年,月,日:";
cin
>>
year
>>
moon
>>
day;
//
检验输入数据的合法性
if
(year%4==0
&&
year%100!=0
||
year%400==0)
//
检验输入年份是否为闰年
m2=29;
else
m2=28;
m1=m3=m5=m7=m8=m10=m12=31;
m4=m6=m9=m11=30;
switch(moon)
case
1:
c=0;
break;
case
2:
c=m1;
break;
case
3:
c=m1+m2;
break;
case
4:
c=m1+m2+m3;
break;
case
5:
c=m1+m2+m3+m4;
break;
case
6:
c=m1+m2+m3+m4+m5;
break;
case
7:
c=m1+m2+m3+m4+m5+m6;
break;
case
8:
c=m1+m2+m3+m4+m5+m6+m7;
break;
case
9:
c=m1+m2+m3+m4+m5+m6+m7+m8;
break;
case
10:
c=m1+m2+m3+m4+m5+m6+m7+m8+m9;
break;
case
11:
c=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10;
break;
case
12:
c=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11;
break;
default:
cout<<"Error";
break;
cout<<"是这一年的第"<<c+day<<"天"<<endl;
参考技术B 晕!~C到C++,轻微改一下不就得了,C++的补在C的后下面了
很简单,用C写的,可以用数组,我没用,代码也可以更简单,不过这样便于你理解,我没有调试,你看一下有没有错误
main
()
int
year,moon=13,week=0,day=32,c=0,
m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12;
while(moon>12
||
moon<1
||
day>31
||
day<1)
printf("请输入年,月,日:");
scanf("%d,%d,%d",&year,&moon,&day);
/*
检验输入数据的合法性
*/
printf("\n*
%d
\\
%d
\\
%d\n",year,moon,day);
if
(year%4==0
&&
year%100!=0
||
year%400==0)
/*
检验输入年份是否为闰年
*/
m2=29;
else
m2=28;
m1=m3=m5=m7=m8=m10=m12=31;
m4=m6=m9=m11=30;
switch(moon)
case
1:
c=0;
break;
case
2:
c=m1;
break;
case
3:
c=m1+m2;
break;
case
4:
c=m1+m2+m3;
break;
case
5:
c=m1+m2+m3+m4;
break;
case
6:
c=m1+m2+m3+m4+m5;
break;
case
7:
c=m1+m2+m3+m4+m5+m6;
break;
case
8:
c=m1+m2+m3+m4+m5+m6+m7;
break;
case
9:
c=m1+m2+m3+m4+m5+m6+m7+m8;
break;
case
10:
c=m1+m2+m3+m4+m5+m6+m7+m8+m9;
break;
case
11:
c=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10;
break;
case
12:
c=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11;
break;
default:
printf("Error");
break;
printf("这日为该年的第
%d
天",c+day);
==================================
C++的
#include
<iostream>
using
namespace
std;
void
main
()
int
year,moon=13,week=0,day=32,c=0,
m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12;
while(moon>12
||
moon<1
||
day>31
||
day<1)
cout<<"请输入年,月,日:";
cin
>>
year
>>
moon
>>
day;
//
检验输入数据的合法性
if
(year%4==0
&&
year%100!=0
||
year%400==0)
//
检验输入年份是否为闰年
m2=29;
else
m2=28;
m1=m3=m5=m7=m8=m10=m12=31;
m4=m6=m9=m11=30;
switch(moon)
case
1:
c=0;
break;
case
2:
c=m1;
break;
case
3:
c=m1+m2;
break;
case
4:
c=m1+m2+m3;
break;
case
5:
c=m1+m2+m3+m4;
break;
case
6:
c=m1+m2+m3+m4+m5;
break;
case
7:
c=m1+m2+m3+m4+m5+m6;
break;
case
8:
c=m1+m2+m3+m4+m5+m6+m7;
break;
case
9:
c=m1+m2+m3+m4+m5+m6+m7+m8;
break;
case
10:
c=m1+m2+m3+m4+m5+m6+m7+m8+m9;
break;
case
11:
c=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10;
break;
case
12:
c=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11;
break;
default:
cout<<"Error";
break;
cout<<"是这一年的第"<<c+day<<"天"<<endl;
参考技术C '我用VB写的程序
'新建一个窗体,画一个命令按钮(Command1)
'然后粘贴下列代码
Private Sub Command1_Click()
Dim A As String '定义字符串A,整个程序通过判断A的各个部分来确定输出结果
Dim Ye(1 To 12)'定义一个数组,用来放每个月的天数
For i = 1 To 12
If i = 1 Or i = 3 Or i = 5 Or i = 7 Or i = 8 Or i = 10 Or i = 12 Then '定义每个月的天数
Ye(i) = 31
Else
Ye(i) = 30
End If
Next i
A = InputBox("输入年月日,用空格隔开." & vbCrLf & "月份和天数要用双位数输入" & vbCrLf & "比如2005年1月1日,输入 2005 01 01"): If A = "" Then Exit Sub
If Len(A) > 10 Then
MsgBox "输入有误,请从新输入"
Exit Sub
ElseIf Val(Mid(A, 6, 2)) > 12 Then '校对月份输入
MsgBox "月份输入有误"
Exit Sub
ElseIf Val(Mid(A, 9, 2)) > 31 Then '校对日期输入
MsgBox "日期输入有误"
Exit Sub
Else
If Val(Mid(A, 1, 4)) Mod 400 = 0 Or (Val(Mid(A, 1, 4)) Mod 4 = 0 And Val(Mid(A, 1, 4)) Mod 100 > 0) Then '判断是否是闰年
Ye(2) = 29
Else
Ye(2) = 28 '定义二月的天数
End If
If Ye(2) = 28 And Mid(A, 6, 2) = 02 And Val(Mid(A, 9, 2)) > 28 Then
MsgBox "日期输入有误"
Exit Sub
ElseIf Ye(2) = 29 And Mid(A, 6, 2) = 02 And Val(Mid(A, 9, 2)) > 29 Then '校对二月天数
MsgBox "日期输入有误"
Exit Sub
End If
If Val(Mid(A, 1, 4)) = 0 Or Val(Mid(A, 6, 2)) = 0 Or Val(Mid(A, 9, 2)) = 0 Then '检查输入是否有0
MsgBox "输入有误,请重新输入"
Exit Sub
End If
'从这里真正开始计算天数,前面的都是判断过程
For H = 1 To Val(Mid(A, 6, 2)) - 1
Moon = Moon + Ye(H)
Next H
Days = Moon + Mid(A, 9, 2)
End If
'计算结束
Print Days '最终输出结果
End Sub
'***********************************
'其实整个程序就是对字符串A的操作,通过A里的前4位数判断是否是闰年,判断第六、七位确定月份,判断九、十位确定日期。
'这段程序在WinXp、VB6下调试通过 (嘻嘻嘻 好多软件都有这句话)
以上是关于输入年月日,判断是这年的第几天的主要内容,如果未能解决你的问题,请参考以下文章
Python练习代码——输入年月日,判断这一天是这一年的第几天?