C语言练习第四题

前言

其实上一个题是我在6天前先写好了草稿,还差一点完善,就没有发布。
这个题才是今天写的
害,没想到,三天的清明假期如此短暂,怎么就上课了QAQ,虚度光阴的时间真的过得空虚且快。
很久没和师父聊天,其实蛮想问候一下的,但怕问起我作业情况QAQ,还是先把作业补完有点底气了再去找师父。
新的一天,新的开始,废话不多说,下面开始第四题的练习。

第四题

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

我的思路
输入:年月日
输出:这一年的第几天
分析:
1、首先肯定要定义输入的格式为代码能识别的形式,这里可以用2021/4/5,或者2021年4月5日,便于所写代码的识别。
2、特别注意,闰年为366天,在写代码时要考虑进去。所以写代码时要先用if-else判断,再继续写。

我的过程
其实这题用函数要简单些,但这个进度肯定是用来练习switch语句。

#include<stdio.h>
int main(void)
{
	int year,month,day,sum,leap;
    printf("请按格式输入年/月/日:");
	scanf("%d/%d/%d",&year,&month,&day);
	switch(month)
	{
	    case 1:sum=0;break;
        case 2:sum=31;break;
		case 3:sum=31+28;break;
		case 4:sum=31+28+31;break;
		case 5:sum=31+28+31+30;break;
		case 6:sum=31+28+31+30+31;break;
		case 7:sum=31+28+31+30+31+30;break;
		case 8:sum=31+28+31+30+31+30+31;break;
		case 9:sum=31+28+31+30+31+30+31+31;break;
	    case 10:sum=31+28+31+30+31+30+31+31+30;break;
		case 11:sum=31+28+31+30+31+30+31+31+30+31;break;
		case 12:sum=31+28+31+30+31+30+31+31+30+31+30;break;
		default:printf("这都能打错,你眼瞎吧!");break;
	}
	    sum=sum+day;
		if(year%400==0||(year%4==0&&year%100!=0))
		{leap=1;} 
		else {leap=0;}
        if(leap==1&&month>2)
	    {sum++;}
    printf("这是这一年的第 %d 天。",sum);
    printf("\n");
    return 0;
}

输出结果
在这里插入图片描述
参考答案
我一开始想的是先判断闰年,再输出天数。但这样比较复杂,并且我我也卡壳了。
参考答案

总结
我 switch 语句真的忘的七七八八了,还好看书结合例题又重拾回来。建议大家在看例题的时候,也不妨看完用自己的思路敲一敲,会更加掌握要点。
1、这题不难,先在脑海里理清从什么地方开始,比如这里就是先从月-年输出天,我最开始想的是年-月输出天。考虑两种方案的复杂程度,合理选择。
2、default 语句在switch中并不是必须要的,但这个的出现可以提示操作人员出错了,在软件开发中也是蛮重要的吧。
3、若出现数据一定要用scanf语句,本质上这是个指针的存储。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北山雪初

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值