编程:要求输入某一年月日,判断其为该年的第几天?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程:要求输入某一年月日,判断其为该年的第几天?相关的知识,希望对你有一定的参考价值。

要考虑输入日期的有效性,如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下调试通过 (嘻嘻嘻 好多软件都有这句话)

判断某一天是一年的第几天

1.键盘录入年月日,并判断是否准确,年大于0,月大于0 小于=12  ,日大于0 小于等于31

2.判断是不是瑞年,如果是瑞年判断2月是不是小于等于29,还有其他小月是否小于等于30  ;如果不是瑞年判断2月是不是小于等于28.否则提示输入错误

3.判断瑞年和小月的日期,累加求和即可

package com.test;

import java.util.Scanner;

public class Days {
public static void main(String[] args) {
for (;true;) {
boolean b =false;
int sum=0;int days=0;
Scanner sc = new Scanner(System.in);
System.out.println("請輸入年份");
int year=sc.nextInt();
if (year<=0) {
System.out.println("您输入的年份有误");
break;
}
System.out.println("请输入月份");
int month=sc.nextInt();
if (month>12||month<0) {
System.out.println("您输入的月份有误");
break;
}
System.out.println("请输入日期");
int day = sc.nextInt();
if (day>31||day<0) {
System.out.println("您输入的日期有误");
break;
}
//判断是不是瑞年
if ((year%4==0&&year%100!=0)||year%400==0) {
b=true;
}
if ((b&&month==2&&day>29)||((month==4||month==6||month==9||month==11)&&day>30)) {
System.out.println("日期错误");
break;
}else if (month==2&&day>28) {
System.out.println("日期错误");
break;
}
//判断闰年和小月的日期
for (int i = 1; i < month; i++) {//计算天数
switch (i) {
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;
case 2:
if (b) {
days=29;
}else {
days=28;
}
break;
default:
break;
}
sum+=days;
}
if (b) {
System.out.println("这天是地"+(sum+day)+"天");
}else {
System.out.println("这天是地"+(sum+day)+"天");

}


}
}
}

以上是关于编程:要求输入某一年月日,判断其为该年的第几天?的主要内容,如果未能解决你的问题,请参考以下文章

c语言编程:输入某年某月某日,计算出这一天是该年的第几天?该怎么解答啊

判断某一天是一年的第几天

求输出此日期是该年的第几天

用C语言写一个函数,给出年月日,计算该日是该年的第几天

输入年月日判断这一天是这一年的第几天 ?(C语言编写)!

Python练习题 004:判断某日期是该年的第几天