问题及代码
/*
烟台大学计算机学院 2016
作者: 马春澎
完成日期:2016年10月29日
问题描述:
Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY-MM-DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
2000-01-01
Sample Output
1
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c;
while((scanf("%d-%d-%d",&a,&b,&c)!=EOF))
{
if((a%4==0)&&(a%100!=0)||(a%400==0))
{
switch(b)
{
case 1:
printf("%d\n",c);
break;
case 2:
printf("%d\n",31+c);
break;
case 3:
printf("%d\n",31+29+c);
break;
case 4:
printf("%d\n",31+29+31+c);
break;
case 5:
printf("%d\n",31+29+31+30+c);
break;
case 6:
printf("%d\n",31+29+31+30+31+c);
break;
case 7:
printf("%d\n",31+29+31+30+31+30+c);
break;
case 8:
printf("%d\n",31+29+31+30+31+30+31+c);
break;
case 9:
printf("%d\n",31+29+31+30+31+30+31+31+c);
break;
case 10:
printf("%d\n",31+29+31+30+31+30+31+31+30+c);
break;
case 11:
printf("%d\n",31+29+31+30+31+30+31+31+30+31+c);
break;
case 12:
printf("%d\n",31+29+31+30+31+30+31+31+30+31+30+c);
break;
}
}
else
{
switch(b)
{
case 1:
printf("%d\n",c);
break;
case 2:
printf("%d\n",31+c);
break;
case 3:
printf("%d\n",31+28+c);
break;
case 4:
printf("%d\n",31+28+31+c);
break;
case 5:
printf("%d\n",31+28+31+30+c);
break;
case 6:
printf("%d\n",31+28+31+30+31+c);
break;
case 7:
printf("%d\n",31+28+31+30+31+30+c);
break;
case 8:
printf("%d\n",31+28+31+30+31+30+31+c);
break;
case 9:
printf("%d\n",31+28+31+30+31+30+31+31+c);
break;
case 10:
printf("%d\n",31+28+31+30+31+30+31+31+30+c);
break;
case 11:
printf("%d\n",31+28+31+30+31+30+31+31+30+31+c);
break;
case 12:
printf("%d\n",31+28+31+30+31+30+31+31+30+31+30+c);
break;
}
}
}
return 0;
}
运行结果
知识点总结
循环结构的综合应用并且考察闰年平年的知识。
学习心得
这样做思路虽然清晰但却很复杂,效率不高,也很容易写错,以后要学会找简便方法进行计算。