C语言:键盘输入年月日,计算这一天是这一年的第几天

您所在的位置:网站首页 判断是否是闰年的ns图 C语言:键盘输入年月日,计算这一天是这一年的第几天

C语言:键盘输入年月日,计算这一天是这一年的第几天

2023-09-03 09:10| 来源: 网络整理| 查看: 265

键盘输入年月日,计算这一天是这一年的第几天

          对一维字符串数组按照字典顺序排序输出

         C语言简单练习题之键盘输入一个字符数组,将其中的大写字母删除

比如输入20201010,计算10号这一天是2020年的第几天

首先要考虑这一年是平年还是闰年,其次考虑所有的月份有多少天,最后是考虑怎么去把所有的天数加在一起。

平年的二月份有28天,闰年的二月有29天,所以要判断这一年是平年还是闰年;而判断是不是闰年的标准就是这一年除以400能除尽或者这一年除以4和除以100都能除尽,即year%4==0 && year%100!=0 || year%400==0。

要计算天数之和,就要按月分开计算,既然要分情况计算天数,就要考虑使用switch来进行循环判断。

月份都是随着天数逐渐递增的,所以当月天数必定占一个分支,而且switch必须要经过这个分支,所以case的值就应该是1,这样才能保证switch一定经过case1来计算当月天数;

当月之前的天数一定在1-11月之间,因为当月是12月的话,在case1中就已经加上了;

此时还有一个问题,就是二月份到底应该写多少天?可以先按28天来算。其实不管是28还是29都可以,只不过最后结果进行一步修正,采用29天那就判断一下,当年不是闰年那就在结果上减去一天,是闰年就直接输出打印结果。

如果当月在二月之前,或者在二月月末之前是不是就不用考虑需不需对结果进行修正,对结果进行加一操作了呢?

所以if判断条件还需要加上一个判断:month>=3,此判断和前一个年份判断必须是“与”的关系,即这两个判断条件必须同步成立if才为真,才对结果进行加一操作。

日期输入范例:2020 10 10;不要漏掉空格(标志位);

输出结果范例:输入的年份为:2020

输入的月份为:10

输入的日期为:10

***(总数量)

代码如下: #include int main() { int year, month, day; int s=0; scanf("%d%d%d", &year,&month,&day); printf("输入的年份为:%d\n",year); printf("输入的月份为:%d\n",month); printf("输入的日期为:%d\n",day); switch(month) { case 12: s+=30; //加上11月的30天 case 11: s+=31; //加上10月的31天 case 10: s+=30; //加上 9月的30天 case 9: s+=31; case 8: s+=31; case 7: s+=30; case 6: s+=31; case 5: s+=30; case 4: s+=31; case 3: s+=28; //先按平年算,加上2月的28天 case 2: s+=31; //加上 1月的31天 case 1: s+=day; //加上当月天数 } if((year%4==0 && year%100!=0 || year%400==0) && month>=3) s++; printf("%d\n",s); return 0; }

如果你觉得这对你有一些帮助,请记得关注本宝宝,后续还会更新一些其他的C习题,包括判断选择题。

C语言:递归求前N项的和,采用递归调用

C语言:从键盘输入一个整数,打印出指定的菱形



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3