當前位置:首頁 » 編程語言 » 用c語言推測年月日
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

用c語言推測年月日

發布時間: 2022-08-31 01:41:36

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&lt;stdio.h&gt;

//輸入某年某月某日,判斷這一天是這一年的第幾天?

int getDaysByMonth(int m,int d,char flag)

{

int c;

if(flag=='r'){//閏年

if(m==2){//2月是29天

return(31+d);

}else if(m&gt;2){

c=0;

m=m-1;

for(;m&gt;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&gt;2){

c=0;

m=m-1;

for(;m&gt;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&gt;29)||

(y%400!=0&&y%4!=0&&m==2&&d&gt;28)||

((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&d&gt;31)||

((m==4||m==6||m==9||m==11)&&d&gt;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&lt;文件名&gt;

2、#include"文件名"

如果需要包含標准庫頭文件或者實現版本所提供的頭文件,應該使用第一種格式。如下例所示:

#include&lt;math.h&gt;//一些數學函數的原型,以及相關的類型和宏

如果需要包含針對程序所開發的源文件,則應該使用第二種格式。

採用#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;
}