题目:输入某年某月某日,判断这一天是这一年的第几天?
题目解析:很基础的一道练习题,可以用数组、if-else和switch case来实现
要点注意:注意闰年时候需要将二月的天数+1
闰年的条件:(year%4==0&&year%100!=0 || year%400==0)
能被4整除却不能被100整除或能被400整除的年份
具体代码(数组实现):
#include <stdio.h>
int main(){
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int y,m,d,day=0;
scanf("%d%d%d",&y,&m,&d);
if(y%4==0 && y%100!=0 || y%400==0)
a[1]++;
for(int i=0 ; i<m-1 ; i++)
day+=a[i];
printf("%d",day+d);
}
具体代码(if-else实现):
#include <stdio.h>
int main() {
int y,m,d;
int day=0;
int isLeap=0;
scanf("%d %d %d",&y,&m,&d);
if(y%4==0&&y%100!=0 || y%400==0){
isLeap=1;
}
if(m==1)
day=d;
else if(m==2)
day=d+31;
else if(m==3)
day=d+59;
else if(m==4)
day=d+90;
else if(m==5)
day=d+120;
else if(m==6)
day=d+151;
else if(m==7)
day=d+181;
else if(m==8)
day=d+212;
else if(m==9)
day=d+243;
else if(m==10)
day=d+273;
else if(m==11)
day=d+304;
else if(m==12)
day=d+334;
printf("%d",day+isLeap);
}
具体代码(switch case实现):
#include <stdio.h>
int main() {
int y,m,d;
int day=0;
int isLeap=0;
scanf("%d %d %d",&y,&m,&d);
if(y%4==0&&y%100!=0 || y%400==0){
isLeap=1;
}
switch(m){
case 1: day=d; break;
case 2: day=d+31; break;
case 3: day=d+59; break;
case 4: day=d+90; break;
case 5: day=d+120; break;
case 6: day=d+151; break;
case 7: day=d+181; break;
case 8: day=d+212; break;
case 9: day=d+243; break;
case 10: day=d+273; break;
case 11: day=d+304; break;
default: day=d+334;
}
printf("%d",day+isLeap);
}