編程年月日
#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(" ");
}
(1)編程年月日擴展閱讀
使用c語言編程結構tm格式化時間注意事項:
tm結構在C/C++中處理日期和時間相關的操作時,顯得尤為重要。tm結構以C結構的形式保存日期和時間,大多數與時間相關的函數都使用了tm結構。
使用了tm結構和各種與日期和時間相關的函數。在練習使用結構之前,需要對C結構有基本的了解,並懂得如何使用箭頭->運算符來訪問結構成員。
Ⅱ 給定年月日 怎樣用C語言編程計算2個日期之間的時間天數
1970 年以後的時間,可以用 time.h 里的函數計算。時間精度為秒。按題目要求,輸出時間單位用天。程序如下:
#include <stdio.h>
#include <time.h>
time_t YMD_hhmmss_2_s70(int Y, int M, int D, int hh, int mm, int ss){
struct tm *target_tm;
time_t tt;
time (&tt);
target_tm=localtime(&tt);
target_tm->tm_year = Y - 1900;
target_tm->tm_mon= M - 1;
target_tm->tm_mday = D;
target_tm->tm_hour = hh; // hour
target_tm->tm_min = mm;
target_tm->tm_sec = ss;
tt = mktime(target_tm); // from tm to time_t (s)
return tt;
}
int main()
{
int y1,m1,d1,y2,m2,d2;
time_t t1,t2;
int dt;
printf("input y1 m1 d1: ");
scanf("%d %d %d",&y1,&m1,&d1);
printf("\ninput y2 m2 d2: ");
scanf("%d %d %d",&y2,&m2,&d2);
t1 = YMD_hhmmss_2_s70(y1,m1,d1,0,0,0);
t2 = YMD_hhmmss_2_s70(y2,m2,d2,0,0,0);
dt = (t2-t1)/(24*3600);
printf("\ndt=%d\n",dt);
return 0;
}
這里未包含日期的合法性判斷。
1970 年以前 要另寫程序。某年的日子是當年的第幾天可用下面函數得出:
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;
}
整年的天數,涉及閏年的判斷:
某年是否閏年,用 (Y%4==0)&&(Y%100!=0)||(Y%400==0) 判斷。閏年366天,平年365天。 有了這些,寫程序不難。
未考慮公元前的年月日計算。
Ⅲ 編寫程序,輸入一個日期(年、月、日),計算並輸出該日是該年中的第幾天。要求編寫函數計算某日是該年中
代碼如下:
#include <stdio.h>
int main()
{ int day, month, year, sum, leap;
printf(" 請輸入年、月、日,格式為:年,月,日(2015,12,10) ");
scanf("%d%d%d", &year, &month, &day); // 格式為:2019 05 10
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("這是這一年的第 %d 天。", sum);
printf(" ");
}
(3)編程年月日擴展閱讀
結構體指針,可細分為指向結構體變數的指針和指向結構體數組的指針。
指向結構體變數的指針通過「結構體變數名.成員名」的方式引用結構體變數中的成員,除了這種方法之外還可以使用指針。
&student1 表示結構體變數 student1 的首地址,即 student1 第一個項的地址。如果定義一個指針變數 p 指向這個地址的話,p 就可以指向結構體變數 student1 中的任意一個成員。
在數值型數組的時候可以將數組名賦給一個指針變數,從而使該指針變數指向數組的首地址,然後用指針訪問數組的元素。結構體數組也是數組,所以同樣可以這么做。
結構體數組的每一個元素都是一個結構體變數。如果定義一個結構體指針變數並把結構體數組的數組名賦給這個指針變數的話,就意味著將結構體數組的第一個元素,即第一個結構體變數的地址,也即第一個結構變數中的第一個成員的地址賦給了這個指針變數。
Ⅳ C語言編程:給定一個日期(年/月/日)計算該日期是所在年的第幾天。
//1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊
//情況,閏年且輸入月份大於3時需考慮多加一天。
#include<stdio.h>
void
main(){
int
year,month,day,i,leap;
int
fleap(int
a);
printf("請輸入年月日如(2009,1,1):");
scanf("%d,%d,%d",&year,&month,&day);
//printf("%d,%d,%d\n",year,month,day);
switch(month){
case
1:i=0;break;
case
2:i=31;break;
case
3:i=31+28;break;
case
4:i=31+28+31;break;
case
5:i=31+28+31+30;break;
case
6:i=31+28+31+30+31;break;
case
7:i=31+28+31+30+31+30;break;
case
8:i=31+28+31+30+31+30+31;break;
case
9:i=31+28+31+30+31+30+31+31;break;
case
10:i=31+28+31+30+31+30+31+31+30;break;
case
11:i=31+28+31+30+31+30+31+31+30+31;break;
case
12:i=31+28+31+30+31+30+31+31+30+31+30;break;}
leap=fleap(year);
if(leap==1)
{
i=i+day+1;
printf("\n\n\n\n\n
%d年是潤年\n",year);}
else
{i=i+day;printf("\n\n\n\n\n
%d年不是潤年\n",year);}
printf("%d年%d月%d是%d年的第%d天",year,month,day,year,i);
getch();}
int
fleap(int
a){
int
leap;
if(a%4==0)
{
if(a%100==0)
{
if(a%400==0)
leap=1;
else
leap=0;
}else
leap=1;
}
else
leap=0;
return(leap);}//判斷潤年的
Ⅳ java中的年月日簡單編程
將這段代碼拷貝到UseBirthday類中和你的比較一下看看
public class UseBirthday {
public static void main(String[] args) {
Birthday a=new Birthday(2000,1,1);
a.GetBirthday();
a.Birthday(2008,5,12);
a.GetBirthday();
}
}
class Birthday {
private int Year, Month, Day;
Birthday(){
Year=2000;
Month=1;
Day=1;
}
Birthday(int y,int m,int d) {
Year = y;
Month = m;
Day = d;
}
public void Birthday(int y,int m,int d){
Year = y;
Month = m;
Day = d;
}
int Gety() {
return Year;
}
int Getm() {
return Month;
}
int Getd() {
return Day;
}
void GetBirthday() {
System.out.println(Gety() + "年" + Getm() + "月" + Getd() + "日");
}
}
Ⅵ 編寫一個c語言程序,輸入一個年月日,輸出這個日期是這一年的第幾天。(考慮閏年)
#include <stdio.h>
void main()
{
int year=0,month=0,day=0,i=0,sum=0;
while(1)
{
printf("請輸入年份:");
scanf("%d",&year);
printf("請輸入月份:");
scanf("%d",&month);
printf("請輸入日期:");
scanf("%d",&day);
i=0;//i變數是為了控制月和日的格式是否輸入正確;
switch(month)//判斷每個月的日期是否輸入正確;
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(day>0&&day<=31)
{
i=1;
}
break;
case 4:
case 6:
case 9:
case 11:
if(day>0&&day<=30)
{
i=1;
}
break;
case 2://2月閏年可以輸入29日;
if((year%4==0&&year%100!=0)||year%400==0)
{
if(day>0&&day<=29)
{
i=1;
}
}
else
{
if(day>0&&day<=28)
{
i=1;
}
}
break;
default://如果輸入不是1-12月份,那麼月份輸入有誤;
i=0;
break;
}
if(i)//如果i變數為1,那麼輸入正確,否則重新輸入;
{
break;
}
else
{
printf("請輸入正確的年月日!!! ");
}
}
i=0;
switch(month)//把每個月的日期累加;
{
case 12:
i=i+30;
case 11:
i=i+31;
case 10:
i=i+30;
case 9:
i=i+31;
case 8:
i=i+31;
case 7:
i=i+30;
case 6:
i=i+31;
case 5:
i=i+30;
case 4:
i=i+31;
case 3:
if((year%4==0&&year%100!=0)||year%400==0)
{
i=i+29;
}
else
{
i=i+28;
}
case 2:
i=i+31;
case 1:
;
}
sum=i+day;
printf("%d年%d月%d日是%d年的第%d天 !",year,month,day,year,sum);
}
拓展資料
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
Ⅶ 編寫程序,輸入年月日,輸出天數
#include<iostream>
using namespace std;
int main()
{
int year,month,day;
int days=0,i;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //定義一個數組 用來存放每個月的天數
cout<<"請輸入年月日,比如2014 12 9"<<endl;
cin>>year>>month>>day;
for(i=1;i<month;i++) //天數相加
{
days=days+a[i];
}
days=days+day;
if((((year%4==0)&&(year%100!=0))||(year%400==0))&&month>=3) //若是閏年的情況 月份在二月之後 天數加1
{
days=days+1;//daya+=1
}
cout<<month<<"月"<<day<<"月是"<<year<<"年中的第"<<days<<"天"<<endl; //輸出月 天數。
return 0;
}
Ⅷ C語言編程(程序怎樣編寫):給定年、月、日,計算該日是該年的第幾天,然後計算該日是星期幾。
/**
程序描述:給定年、月、日,計算該日是該年的第幾天,然後計算該日是星期幾。
*/
#include<stdio.h>
intmon[]={31,28,31,30,31,30,31,31,30,31,30,31};
intleap_year(intn)
{
if(n%400==0||(n%4==0&&n%100!=0))
return1;
else
return0;
}
intcal_dayCount(intyear,intmonth,intday)
{
inti,sum;
for(i=0,sum=0;i<month-1;i++)
sum+=mon[i];
if(month>2)
sum+=day+leap_year(year);
else
sum+=day;
returnsum;
}
intcal_weekday(intyear,intmonth,intday)
{
/**
蔡勒(Zeller)公式
歷史上的某一天是星期幾?未來的某一天是星期幾?關於這個問題,有很多計算公式(兩個通用計算公式和
一些分段計算公式),其中最著名的是蔡勒(Zeller)公式。
即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公式中的符號含義如下,
w:星期;
c:年的高兩位,即世紀-1
y:年的低兩位;
m:月(m大於等於3,小於等於14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計算,
比如2003年1月1日要看作2002年的13月1日來計算);
d:日;
[]代表取整,即只要整數部分。
算出來的W除以7,余數是幾就是星期幾。如果余數是0,則為星期日。
如果結果是負數,負數求余數則需要特殊處理:
負數不能按習慣的余數的概念求余數,只能按數論中的余數的定義求余。為了方便
計算,我們可以給它加上一個7的整數倍,使它變為一個正數,然後再求余數
以2049年10月1日(100周年國慶)為例,用蔡勒(Zeller)公式進行計算,過程如下:
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=49+[49/4]+[20/4]-2×20+[26×(10+1)/10]+1-1
=49+[12.25]+5-40+[28.6]
=49+12+5-40+28
=54(除以7餘5)
即2049年10月1日(100周年國慶)是星期5。
*/
inty,c,m,d;
intw;
if(month>=3)
{
m=month;
y=year%100;
c=year/100;
d=day;
}
else/*某年的1、2月要看作上一年的13、14月來計算*/
{
m=month+12;
y=(year-1)%100;
c=(year-1)/100;
d=day;
}
w=y+y/4+c/4-2*c+(26*(m+1))/10+d-1;
if(w<0)/*如果w是負數,則計算余數方式不同*/
{
w=7-(-w)%7;
}
else
{
w=w%7;//如果w等於0,表示為星期天
}
returnw;
}
intmain()
{
intyear,month,day;
intdayCount=0,i;
printf("請輸入當前的年,月,日:");
scanf("%d-%d-%d",&year,&month,&day);
printf("該日是該年的第幾天:%d ",cal_dayCount(year,month,day));
printf("該日是星期幾:%d ",cal_weekday(year,month,day));
return0;
}
示例運行結果:
Ⅸ 編程:要求輸入某一年月日,判斷其為該年的第幾天
暈!~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;
}