當前位置:編程學習大全網 - 編程語言 - C語言編程:輸入某年某月某日,判斷這壹天是這壹年的第幾天?

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天\n",y,m,d,count);

putchar('\n');

}

擴展資料:

在壹個表達式中條件比較多的時候,會使用不同運算符連接起來,根據優先級不同壹定要適當使用小括號。

在壹個表達式中可能包含多個有不同運算符連接起來的、具有不同數據類型的數據對象;由於表達式有多種運算,不同的結合順序可能得出不同結果甚至出現錯誤運算錯誤,因為當表達式中含多種運算時,必須按壹定順序進行結合,才能保證運算的合理性和結果的正確性、唯壹性。

優先級從上到下依次遞減,最上面具有最高的優先級,逗號操作符具有最低的優先級。表達式的結合次序取決於表達式中各種運算符的優先級。優先級高的運算符先結合,優先級低的運算符後結合,同壹行中的運算符的優先級相同。

參考資料:

百度百科-運算符優先級

  • 上一篇:串行通訊方式 spi和 i2c各有何優點(適合在何種場合使用),兩單片機板上相連,采用何種方式好.
  • 下一篇:怎樣使用西門子S7-300編程讀取PLC程序
  • copyright 2024編程學習大全網