例题:输入某年某月某日,判断这一天是这一年的第几天

程序分析:以2020年8月8日为例,应该先把前八个月的加起来,然后再加上8天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

代码如下

#include<stdio.h>
int main()
{
	int day,month,year,sum,leap;
	printf("请按照这样的格式:2008年8月8日,输入您想查询的日期.\n");
	scanf("%4d年%2d月%d日",&year,&month,&day);
	switch(month)
	{
		case 1:sum=0;break;
		case 2:sum=31;break;
		case 3:sum=59;break;
		case 4:sum=90;break;
		case 5:sum=120;break;
		case 6:sum=151;break;
		case 7:sum=181;break;
		case 8:sum=212;break;
		case 9:sum=243;break;
		case 10:sum=273;break;
		case 11:sum=304;break;
		case 12:sum=334;break;
		default:printf("您输入的日期无效.");break;
	}
	sum=sum+day;
	if(day<=31)
	{
		if((year%400==0||(year%4==0&&year%100!=0))&&month>2)  //是闰年且月份大于2方加一 
		leap=1;
		else
		leap=0;
		if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
		sum++;
		printf("这一天是%4d年的第%d天\n",year,sum);
	}
	else
	printf("您输入的日期无效.");
	
	return 0;
}

例设输入的日期为2020年8月8日,则运行窗口如下:

本周其他练习

C语言程序设计专栏

C语言编程>第一周 ① 输入两个数,并使其从大到小输出(利用指针方式)。

C语言编程>第一周 ② 输入圆的半径r的值,输出其面积。

C语言编程>第一周 ③ 输入某年某月某日,判断这一天是这一年的第几天。

C语言编程>第一周 ④ 输出9*9乘法表。

C语言编程>第一周 ⑤ 有1、2、3、4,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

C语言编程>第一周 ⑥ 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

C语言编程>第一周 ⑦ 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

C语言编程>第一周 ⑧ 输入两个正整数m和n,求其最大公约数和最小公倍数。

越努力越幸运!
加油,奥力给!!!

更多推荐

C语言编程>第一周 ③ 输入某年某月某日,判断这一天是这一年的第几天