《C语言程序设计》一3.4 案例学习——计算一年中某月份的总天数

3.4 案例学习——计算一年中某月份的总天数

【例3-8】 从键盘上输入年和月份,打印出相应年中某月份的总天数。
1.问题分析
这个问题要求从键盘上输入年份和月份,根据年份和月份计算出当月的总天数。年份和月份要考虑输入是否合法,并且二月份要考虑是否是闰年,如果是闰年则是29天,否则是28天。
2.算法设计

显示一个请求用户输入年份和月份的提示
接收用户的输入
假如年份和月份不合法
输出提示信息
否则

假如月份是1,3,5,7,8,10,12,则是31天;
假如月份是4,6,9,11,则是30天;
   假如是2月份,则需要判断是否是闰年,如果是闰年则是29天,否则是28天;

3.程序实现

/*
程序名:prg3-8.c
功能:从键盘上输入年份和月份,打印出相应年中某月份的总天数
*/

#include<stdio.h>

int main()
{
  int year,month,day;
 
  printf("Enter year and month ");
  scanf("%d %d", &year, &month);
  
  if(year < 1 || month > 12 || month < 1)             //判断非法年份或月份
  {
      printf("input a wrong year or month ");
  }
  else
  {  
     switch(month)
     {

        case 1: case 3: case 5: case 7: case 8: case 10: case 12:  
            day = 31;                          //31天的月份
            break;
        case 4: case 6: case 9: case 11:  
            day = 30;                            //30天的月份
            break;
        case 2:  
           if((year % 4 == 0 && year % 100 != 0) || year % 400 ==0 )//判断是不是闰年
               day = 29;
           else
               day = 28;
     }

  printf("%d year %d month has %d days",year,month,day);
  }  

  return 0;
}

程序prg3-8.c根据不同的月份来决定天数,2月份要判断是否为闰年,如果是闰年,则2月份有29天,否则是28天。
4.测试结果
测试应包含各种情况的数值输入,下面是4种情况的测试结果:

Enter year and month 2004,2
2004 year 2 month has 29 days

Enter year and month 2011,2
2011 year 2 month has 28 days

Enter year and month 2011,3
2011 year 3 month has 31 days

Enter year and month 2011,4
2011 year 4 month has 30 days
上一篇:dom scrollX scrollY innerWidth cilentWidth


下一篇:springBoot相关