周末练习

1.项目名称:时光飞逝
        happy newyear!

2.项目描述:
     根据用户输入的年月日 时分秒,计算出下一秒并输出。
3.项目分析
3.1 保存用户的输入
     定义六个变量去接收用户的输入
    int year,month,day,hour,minute,seconds;
        年   月 日 小时  分  秒

3.2  计项下一秒
    seconds++;
4.项目架构
    C语言项目中 ->函数是主体
4.1主要模块:
    (1)接收用户的输入
    (2)计算
            每个月的天数不定相同
            闰年和平年中2月的天数不一样
            当秒数满60,分钟满60等等
4.2模块的设计
    (1)输入模块的设计
            input()
    (2)计算模块
        void nextSecond();
    (3)计算出每个月对应的天数
        int dayMonth();
    (4)是否润年来确定二月的天数。
   int isRuiNian(int year);
    (5)主函数
            int main();
5.编写代码
    根据设计去编写代码
6.测试

复制代码
  1 #include<stdio.h>
  2 /*============================================== *
      名称:时光飞逝               功能:无
  3  *日期:2013-05-11             by:ant
  4  *备注:根据用户输入的年月日 时分秒,计算出下一秒并输出
  5  *============================================= */
  6 //void input();//用户输入,放main函数中实现。
  7 //===================函数的显示声明=================================
  8 int  nextDay(int arr[6]);//计算下一秒:
  9 int  dayMonth(int year,int month);//计算出每个月对应的天数
 10 int  isRuinNian(int year);//是否润年来判数2月的天数,1是,0否
 11 //====================================================================
 12 int main()
 13 {
 14     int next_is=0;
 15     int arr[6]={0,1,2,3,4,5};
 16     int year,month,day,hour,minute,seconds;
 17     printf("请输入一个日期,格式为:1999 9 9 13 20 50\n");
 18     scanf("%d%d%d%d%d%d",&year,&month,&day,&hour,&minute,&seconds);
 19     printf("你输入的日期为:%d年%d月%d日%d时%d分%d秒\n",year,month,day,hour,minute,seconds);
 20     arr[0]=year;arr[1]=month;arr[2]=day;arr[3]=hour;arr[4]=minute,arr[5]=seconds;
 21     next_is =  nextDay(arr);
 22     printf("你输出的日期为:%d年%d月%d日%d时%d分%d秒\n",arr[0],arr[1],arr[2],arr[3],arr[4],arr[5]);
 23     printf("是否进位天的结果是:%d\n",next_is);
 24 }
 25 /*功能:如果需进位天数返回1,否则为0,参数为数组,返回下一秒
 26  *说明:秒到59分进1,否则秒++,分时雷同,时大于23时清零并向天数进位 */
 27 int  nextDay(int arr[6])//计算下一天
 28 {
 29     int ret=0;
 30     int hour=arr[3],minute=arr[4],second=arr[5],year=arr[0],month=arr[1],day=arr[2];
 31     if(second==59)//如果秒为59向分进位
 32     {
 33         minute++;//分加1
 34         second = 0;//秒清零
 35     }else
 36     {
 37         second++;
 38     }
 39     if(minute >= 59)
 40     {
 41         hour++;//小时加1
 42         minute = 0;//分钟清零
 43     }
 44     if(hour >= 23)
 45     {
 46         hour = 0;//小时清零
 47         day++;//要求天数进位
 48     }
 49     if(day>=dayMonth(year,month))//如果进位时天数等于本月最大天数
 50     {
 51         day = 1;//天数清零
 52         month++;//要求月进位
 53     }
 54     if(month>=12)//月份己满
 55     {
 56         month = 1;
 57         year++;
 58     }
 59     printf("这是textDay函数打印的输出%d年%d月%d日%d时%d分%d秒\n",year,month,day,hour,minute,second);
 60     arr[0] = year;
 61     arr[1] = month;
 62     arr[2] = day;
 63     arr[3] = hour;
 64     arr[4] = minute;
 65     arr[5] = second;
 66     return ret;
 67 }
 68 /*================判断是否为润年是返回1,否则返回0========================*/
 69 int  isRuinNian(int year)//是否润年来判数2月的天数,1是,0否
 70 {
 71     if(year % 4 == 0 || year % 400 ==0 && year % 100 !=0)
 72     {
 73         return 1;//是润年
 74     }else
 75     {
 76         return 0;//不是润年
 77     }
 78 }
 79 int  dayMonth(int year,int month)//计算出每个月对应的天数
 80 {
 81     int dayNum;//该月的天数
 82     switch(month)
 83     {
 84         //31天的月份
 85         case 1:
 86         case 3:
 87         case 5:
 88         case 7:
 89         case 8:
 90         case 10:
 91         case 12:
 92             dayNum = 31;
 93             break;
 94         //30天的月份
 95         case 4:
 96         case 6:
 97         case 9:
 98         case 11:
 99             dayNum = 30;
100             break;
101         //特殊的二月份的处理
102         case 2:
103             dayNum = 28 + isRuinNian(year);//润年加一天否则28天
104             break;
105         default:
106             printf("由函数报错:你输入的月份不正常");
107             return 0;
108     }
109     return dayNum;
110 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值