这是今年的第几天鸭

输入年月日 判断这是一年中的第几天

对于求某日为一年中第几天的问题,在解决过程中,我很受启发,本篇博客用于记录一些简单的思路,并对这一问题做一个简单笔记。
所用知识点:分支结构、循环的嵌套、条件 关系运算符

#include<stdio.h>
int main()
{
	int year,month,day,sum,i;
	scanf("%d %d %d",&year,&month,&day);
	if(year%4!=0)*//确定以下年份不是闰年*
	{
		sum=0;
		for(i=1;i<=month;i++)
		{
			sum=sum+31;*//把月份小于month的按31天累加*
		}
		if(month==1)
		sum=sum-31+day;*//月数为一个月时 减去首先加的31天 加上日数*
		else
		sum=sum-month/2-(month>2)*2-30+day;*//月数不为一月时,每两月减去一天,当月份数大于二时减去两天*
		printf("日数为%d天",sum);
	}
	if(year%4==0&&year%100!=0)*//确认年份为闰年*
	{
		sum=0;
		for(i=1;i<=month;i++)
		{
			sum=sum+31;
		}
		if(month==1)
		sum=sum-31+day;
		else
		sum=sum-month/2-(month>2)*1-30+day;*//当月份数大于二时仅减去一天*
		printf("日数为%d天",sum);
	}
	return 0;
} 

通过以上代码可以解决求任意日期为该年的多少天的问题,在完善本代码的过程中受到较多困扰的是在数字运算的逻辑分析及分类讨论上。

知识点启示:

  1. 利用关系运算符如(month>2)作为一个非0即1的量,用来判断,同时可以作为一个值被利用起来。
  2. 利用除号将整型数值作为被除数,以保留其商的整数部分

反思:在此代码中,我更多地注重步骤性而在精简性方面考虑较少,数字运算的易理解性不强。
在灵活掌握数值运算的基础之后应该多考虑代码的精简程度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值