⑴ 輸入年月日判斷這一天是這一年的第幾天 (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(' ');
}
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語言輸入一個日期,求該日期是該年的第幾天
我大概給個思路,代碼是現寫的 沒調試
先定義每個月的天數,2月按28天算
輸入年月日後,根據年判斷是否閏年(閏年加1天),再從1月加到當月的前一月,再加上日期就可以了
#include <stdio.h>
int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
main()
{int yy,mm,dd, days;
int i;
printf("input year:"); scanf("%d", &yy);
printf("input month:"); scanf("%d", &mm);
printf("input day:"); scanf("%d", &dd);
/* 如果大於2月,要做閏年的判斷,忘了,不一定準 */
if( mm > 2 && ((year%4==0 && year%100!=0) || year%400==0) ) days = 1;
else days = 0;
/* 加上前面各整月的天數 */
for(i = 0; i < mm-1; i++) days += month[i];
/* 加上日數 */
days += dd;
printf("This is the %d day of year %d!!
", days, yy);
}
比如輸入 1999 2 1
應該輸出:This is the 32 day of year 1999!!
⑶ 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(' ');
}
網路-運算符優先順序
⑷ c語言求日期是這一年的第幾天的最簡便寫法是什麼
#include<stdio.h>
structDate{
inty;
intm;
intd;
};
voidmain()
{
Datedate;
intmonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d%d%d",&date.y,&date.m,&date.d);
intflag=0; //閏年且月份大於2就改為1
if(((date.y%100!=0)&&(date.y%4==0))||(date.y%400==0)&&date.m>2){
flag=+1;
}
inti;
intwhatday=0; //存放第幾天
for(i=0;i<date.m;i++)
{
whatday+=month[i];
}
whatday+=date.d+flag;
printf("%d ",whatday);
}
等著啊,立馬給你敲出來!
⑸ 用c語言編寫一程序,用戶輸入日期,計算該日是今年的第幾天
#include"stdio.h"
#include"stdlib.h"
intmain()
{
intday,month,year,sum,leap;
printf(" pleaseinputyear,month,day ");
scanf("%d,%d,%d",&year,&month,&day);
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("Itisthe%dthday. ",sum);
return0;
}
(5)c語言輸入日期判斷第幾天較簡便的方法擴展閱讀
C語言輸入任意一個日期的年、月、日的值,求出是星期幾並輸出。
#include<stdio.h>
voidmain()
{
inty,m,d,c,s,w;
printf("請輸入8位年月日,以空格隔開:");
scanf("%d%d%d",&y,&m,&d);
if(m==1)c=d;
elseif(m==2)c=31+d;
elseif(m==3)c=31+28+d;
elseif(m==4)c=31+28+31+d;
elseif(m==5)c=31+28+31+30+d;
elseif(m==6)c=31+28+31+30+31+d;
elseif(m==7)c=31+28+31+30+31+30+d;
elseif(m==8)c=31+28+31+30+31+30+31+d;
elseif(m==9)c=31+28+31+30+31+30+31+31+d;
elseif(m==10)c=31+28+31+30+31+30+31+31+30+d;
elseif(m==11)c=31+28+31+30+31+30+31+31+30+31+d;
elseif(m==12)c=31+28+31+30+31+30+31+31+30+31+30+d;
if(m>2)
{if(y%100==0){if(y%400==0)c=c+1;}
elseif(y%4==0)c=c+1;}
s=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+c;
w=s%7;
switch(w)
{
case0:printf("星期日");break;
case1:printf("星期一");break;
case2:printf("星期二");break;
case3:printf("星期三");break;
case4:printf("星期四");break;
case5:printf("星期五");break;
case6:printf("星期六");break;
printf(" ");
}
}
⑹ C語言中輸入一個日期計算他是今年的第幾天
輸入年月日三個值,先累加該年之前各個月的每月天數,最後累加日期天數即可獲取結果。
一、演算法設計:
1、輸入年月日三個值;
2、為保證程序健壯性,可以對三個值的合法性進行判斷,只對合法數據進行操作;
3、累加之前各月天數;
4、累加當前日值;
5、輸出結果。
二、注意點:
可以使用數組存儲各個月份的天數,用循環累加。需要注意的是閏年的判斷。對於閏年,2月要多加一天。
三、參考代碼:
#include<stdio.h>
intmain()
{
intmdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};//十二個月的天數。
inty,m,d,r=0,i;
scanf("%d%d%d",&y,&m,&d);
if(y%400==0||(y%4==0&&y%100!=0))//閏年。
mdays[1]=29;//設置閏年二月值。
if(y<0||m<=0||m>12||d<=0||d>mdays[m-1])//輸入非法。
{
printf("輸入年月日不合法 ");//提示並退出。
return-1;
}
for(i=0;i<m-1;i++)//累加之前各個月。
r+=mdays[i];
r+=d;//累加日期值。
printf("%d ",r);//輸出結果。
return0;
}
⑺ 編寫一個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)以及超級電腦等作業平台。
⑻ C語言輸入年月日計算該日是該年第幾天,
//根據用戶輸入的日期計算出該日期是該年的第多少天。
#include
#include
//system("pause")
main()
{
int year,month,day,total,leap; //total總天數 ,leap用於閏年的2月天數
printf("請輸入年 月 日(按順序,中間用空格隔開):");
scanf("%d%d%d",&year,&month,&day);
if((year%4==0 && year%100!=0) || year%400==0) //判斷是否閏年,閏年2月多一天,所以閏年leap為1,平年為leap為0。
{
leap=1;
}
else
{
leap=0;
}
switch(month) //根據月份計算對應的最終天數。
{
case 1: total=day;break;
case 2: total=31*1+day;break;
case 3: total=31*1+28+leap+day;break;
case 4: total=31*2+28+leap+day;break;
case 5: total=31*2+28+leap+30*1+day;break;
case 6: total=31*3+28+leap+30*1+day;break;
case 7: total=31*3+28+leap+30*2+day;break;
case 8: total=31*4+28+leap+30*2+day;break;
case 9: total=31*5+28+leap+30*2+day;break;
case 10: total=31*5+28+leap+30*3+day;break;
case 11: total=31*6+28+leap+30*3+day;break;
case 12: total=31*6+28+leap+30*4+day;break; //12月之前的11個月中有6個31天,4個30天,2月為28天+leap。
}
if(year>=1 && year<=9999 && month>=1 && month<=12 && day>=1 && day<=31) //判斷輸入是否正解,年份最大為9999,可自行更改。
{
printf("\n\t%d月%d日止,%d年已過去%d天。\n\n",month,day,year,total);
system("pause"); //按任意鍵繼續...
}
else
{
printf("\n\t錯誤\n\n");
system("pause"); //按任意鍵繼續...
}
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);
}
注釋部分存在問題,測試結果: