按如下函数原型用函数编程解决如下的日期转换问题(要求考虑闰年的问题)

问题描述

按如下函数原型用函数编程解决如下的日期转换问题(要求考虑闰年的问题)

解决方案

 #include <stdio.h>int mt[13] = { 0 31 28 31 30 31 30 31 31 30 31 30 31 };void set2(int y){    if (y % 4 != 0)    {        mt[2] = 28;    }    else    {        if (y % 100 == 0 && y % 400 != 0)            mt[2] = 28;        else            mt[2] = 29;    }}void showmenu(){    printf(""1. y/n/d -> ydn"");    printf(""2. yd -> y/n/dn"");    printf(""3. exitn"");    }int ymd2yd(int y int m int d){    set2(y);    int r = 0;    for (int i = 0; i < m; i++)        r += mt[i];    r += d;    return r;}void yd2ymd(int yd int * r){    set2(r[0]);    int m = 0;    while (yd > mt[m])    {        yd -= mt[m++];    }    r[1] = m;    r[2] = yd;}int main(){       char c;    showmenu();    while (scanf(""%c"" &c) 1)    {        switch (c)        {        case '1':            int y int m int d;            scanf(""%d"" &y);            scanf(""%d"" &m);            scanf(""%d"" &d);            printf(""%dn"" ymd2yd(y m d));            showmenu();            break;        case '2':            int yd;            int r[3];            scanf(""%d"" &r[0]);            scanf(""%d"" &yd);            yd2ymd(yd r);            printf(""%d %d %dn"" r[0] r[1] r[2]);            showmenu();            break;        case 'n':            break;        default:            return 0;        }    }    return 0;}

解决方案二:

  1. y/n/d -> yd
  2. yd -> y/n/d
  3. exit 12016 3 161
  4. y/n/d -> yd
  5. yd -> y/n/d
  6. exit 12016 7 18200
  7. y/n/d -> yd
  8. yd -> y/n/d
  9. exit 12015 12 31365
  10. y/n/d -> yd
  11. yd -> y/n/d
  12. exit 22016 612016 3 1
  13. y/n/d -> yd
  14. yd -> y/n/d
  15. exit 22015 612015 3 2
  16. y/n/d -> yd
  17. yd -> y/n/d
  18. exit 22015 2252015 8 13
  19. y/n/d -> yd
  20. yd -> y/n/d
  21. exit 3Press any key to continue

解决方案三:

 1. y/n/d -> yd2. yd -> y/n/d3. exit 12016 3 11. y/n/d -> yd2. yd -> y/n/d3. exit 12016 7 181. y/n/d -> yd2. yd -> y/n/d3. exit 12015 12 311. y/n/d -> yd2. yd -> y/n/d3. exit 22016 612016 3 11. y/n/d -> yd2. yd -> y/n/d3. exit 22015 612015 3 21. y/n/d -> yd2. yd -> y/n/d3. exit 22015 2252015 8 131. y/n/d -> yd2. yd -> y/n/d3. exit 3Press any key to continue
时间: 2024-11-05 16:37:51

按如下函数原型用函数编程解决如下的日期转换问题(要求考虑闰年的问题)的相关文章

EXCEL2007 vlookup函数公式#N/A解决方法

  办公软件EXCEL2007 vlookup函数公式提示#N/A错误,说明当在函数或公式中没有可用数值,那我们很明确的是这个函数公式是错误的,我现在用=VLOOKUP(A:A,Sheet3!A:B,2,0)这个错误公式ishikawa.给大家分析下,为什么是错误? 如果是输入公式造成的错误符号的话,我们只需要修改下我们的公式就可以啦.如图,这个工作表我们所使用的是vlookup函数公式,原公式是:=VLOOKUP(A:A,Sheet3!A:B,2,0). 那么我们如何修改这个公式呢,那就是将原

strcpy函数原型跪求答案

问题描述 strcpy函数原型跪求答案 ⒈strcpy的实现代码 char * strcpy(char * strDest,const char * strSrc) { if ((NULL==strDest) || (NULL==strSrc)) //[1] throw "Invalid argument(s)"; //[2] char * strDestCopy = strDest; //[3] while ((*strDest++=*strSrc++)!=''); //[4] re

udp-Linux下socket通信函数原型玄机?(UDP)

问题描述 Linux下socket通信函数原型玄机?(UDP) 编写UDP通讯的程序时发现:ssize_t sendto(int sockfd const void *buf size_t len int flagsconst struct sockaddr *dest_addr socklen_t addrlen);ssize_t recvfrom(int sockfd void *buf size_t len int flagsstruct sockaddr *src_addr sockle

在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法_jquery

easyUI是jquery的一个插件,是民间的插件.easyUI使用起来很方便,里面有网页制作的最重要的三大方块:javascript代码.html代码和Css样式.我们在导入easyUI库后,可以直接复制粘贴里面的代码,从而简单轻便地初步设置网页. 首先导入easyUI函数库: <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css">

log_stdout和log_message的区别是什么,这两个函数原型在哪定义?

问题描述 log_stdout和log_message的区别是什么,这两个函数原型在哪定义? 服务器程序里有很多的打印语句,想添加log文件,请问log_stdout和log_message的区别是什么,这两个函数原型在哪定义? 解决方案 http://blog.csdn.net/barebear/article/details/23692697 解决方案二: 从名字可以看到,一个是打印到控制台,一个是打印消息,这个你直接源码中搜索关键字应该能找到他们的实现.

《C和C++代码精粹》——1.4 函数原型

1.4 函数原型 C和C++代码精粹在C++中,函数原型不是可选的.事实上,在ANSI C委员会采用原型机制以前,它是为C++发明的.在你第一次使用函数前必须声明或定义每个函数,编译器将检查每个函数调用时正确的参数数目和参数类型.此外,在其应用时将执行自动转换.下列程序揭示一个在C中不使用原型时出现的普通错误. /* convert1.c */ #include <stdio.h> main( { dprint(123); dprint(123.0); return 0; } dprint(d

asp的日期转换星座函数

经过长时间学习ASP.NETWeb,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西.学习ASP.NETWeb时,你可能会遇到相关问题,这里将介绍ASP.NETWeb问题的解决方法. 该结构分三个层次:表示层.业务层.数据层.数据层:代表物理数据库.业务层:负责数据层与表示层之间的数据传输.表示层:应用程序的客户端,它通过业务层来访问数据库. 表示层所操作的是驻留在内存中的本地数据,当需要更新数据库数据时,要通过业务层提供的更新方法实现.这样可以大大提高应用程序的性能,而且

解决MindManager与Word转换慢、错误及死机问题

  MindManager特有的强大功能就是能够与office完美兼容,这在我们日常处理事务时提供了极大的帮助.但操作不当也会造成一些,麻烦,本文讲述了怎样解决MindManager与Word转换慢.错误及死机的问题. 我们在同时使用MindManager和Word的时候发现剪贴复制转换有时比较慢,还偶尔会出现死机.程序错误等状况,这些可能是我们操作不当或者系统错误造成的,在这里需要进行提醒的是,如果在同时进行MindManager和Word两者操作的时候,要记得保持经常性存盘,否则很有可能因为

“无法访问G: 函数不正确”的解决方法

符时总提示:无法访问G: 函数不正确.(如下图) 原来刻录机硬件是没有故障,而是系统的一些设置出了点问题.解决方法如下: 打开"运行"对话框,输入:services.msc,点击确定后打开"服务" 对话框,在"服务(本地)"列表中找到 "IMAPI CD-Burning COM Service"(如下图). 让我们先来看看此服务的描述:"用Image Mastering Applications Programmin