GitBook

这里写图片描述

又是一个涉及到闰年判断的题目 不过现在看 应该已经难不倒我了

#include<stdio.h>
int main() {
	int T;
	scanf("%d",&T);
	while(T--) {
		int month[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
		int y,m,d;
		scanf("%d %d %d",&y,&m,&d);
		if(y%400==0||(y%100&&y%4==0))
			month[1]++;
		int sum=0;
		for(int i=0; i<m-1; i++) {
			sum+=month[i];
		}
		printf("%d\n",sum+d);
	}
	return 0;
}

标程的亮点是通过 switch运行到底的特性 (不遇到break;便会继续运行下一个case) 巧妙地区分了31天与30天的年份

#include<stdio.h>
int main() {
	int a,b=0,c,y,m,d,fib;
	scanf("%d",&a);
	while(a--) {
		scanf("%d %d %d",&y,&m,&d);
		if(y%400==0||y%100!=0&&y%4==0)
			fib=29;
		else fib=28;
		for(c=1; c<=m; c++)
			switch(c-1) {
				case 1:
				case 3:
				case 5:
				case 7:
				case 8:
				case 10:
					b+=31;
					break;
				case 2:
					b+=fib;
					break;
				case 4:
				case 6:
				case 9:
				case 11:
					b+=30;
					break;
			}
		b+=d;
		printf("%d\n",b);
		b=0;
	}
	return 0;
}

题目地址:【NYOJ】[75]日期计算