C程序给出年月日计算该日是该年的第几天程序代码_第1页
C程序给出年月日计算该日是该年的第几天程序代码_第2页
C程序给出年月日计算该日是该年的第几天程序代码_第3页
C程序给出年月日计算该日是该年的第几天程序代码_第4页
C程序给出年月日计算该日是该年的第几天程序代码_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C程序:给出年、月、日,计算该日是该年的第几天。用户从键盘中输入年、月、日,在屏幕上输出显示该日期是该年的第几天。思路:1、判断输入的年份是否是闰年。闰年的判别条件是能被4整除,但不能被100整除;或者能被400整除。2、求此日期是该年的第几天。这里将12个月每个月的天数存在数组中,并且采用两个数组分别保存平年和闰年的每个月的天数。计算日期是第几天时,只需要累计月份之前每个月的天数,再加上输入的日数。代码:intleap(inta) /*自定义函数leap用来指定年份是否为闰年*/{if(a%4==0&&a%100!=0||a%400==0) /*闰年判定条件*/{return1; /*是闰年返回1*/}return0; /*不是闰年返回0*/}intnumber(intyear,intm,intd)/*自定义函数number计算输入日期为该年第几天*/{intsum=0,i;inta[12]={31,28,31,30,31,30,31,31,30,31,30,31}; /*数组a存放平年每月的天数*/intb[12]={31,29,31,30,31,30,31,31,30,31,30,31}; /*数组b存放闰年每月的天数*/if(leap(year)==1) /*判断是否为闰年*/{for(i=0;i<m-1;i++){sum+=b[i]; /*是闰年,累加数组b前m-1个月份天数*/}}else{for(i=0;i<m-1;i++){sum+=a[i]; /*不是闰年,累加数组a钱m-1个月份天数*/}}sum+=d; /*将前面累加的结果加上日期,求出总天数*/returnsum; /*将计算的天数返回*/}intmain(){intyear,month,day,n; /*定义变量为基本整型*/cout<<"请输入年月日:";cin>>year;cin>>month;cin>>day; /*输入年月日*/n=number(year,month,day); /*调用函数number*/cout<<"第"<<n<<"天"<<endl2;return0;}

计算某日在本年中的第几天问题前言:这是C语言程序设计第五版【谭浩强】章节对应的习题,从第十章开始,逆序回写。力求程序思路简明,会比参考答案更加通俗易懂且易上手,代码更加规范的同时也会标上相关注释。若有纰漏,请指正。本文为第九章课后习题(9.1-9.2)。本系列累计已完成代码行数:6789.1定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。解题思路:正常年份每个月中的天数是已知的,只要给出日期,算出该日在本年中是第几天是不困难的。用一个日期数组保存每一月的天数,二月的天数记为28天,后面根据输入的时间确定是否是闰年的二月,如果是,天数在加1。判断闰年还是平年:能被4或400整除但不能被100整除的都是闰年,其余的年份均为平年。例如2000年是闰年,2100年不是闰年。#include"stdio.h"#include"string.h"#include"stdlib.h"structDate{intyear;intmonth;intday;};intmain(intargc,char*argv[]){fun9_1();return0;}voidfun9_1(void){structDatedata;inti=0;intdays=0;//统计的天数intDays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};/*用一个日期数组保存每一月的天数,二月的天数记为28天1月份:Days[1]=312月份:Days[2]=283月份:Days[3]=314月份:Days[4]=30以此类推*/printf("pleaseinputdata(eg:2022/04/02):\n");scanf("%d/%d/%d",&data.year,&data.month,&data.day);//统计整月的天数for(i=0;i<data.month;i++){days+=Days[i];//等价于days=days+Days[i]}days+=data.day;//加上偏移的天数if((data.year%4==0||data.year%400==0)&&(data.year%100!=0)){if(data.month>2)//月份大于2才加1{days+=1;//等价于days=days+1}}printf("It'sday%dintheyear.\n",days);}结果检验:图片9.2写一个函数days,实现第1题的计算。由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出解题思路:用结构体做参数传递,在9.1题的基础上改一下即可#include"stdio.h"#include"string.h"#include"stdlib.h"structDate{intyear;intmonth;intday;};intmain(intargc,char*argv[]){intdays=0;structDatedata;printf("pleaseinputdata(eg:2022/04/02):\n");scanf("%d/%d/%d",&data.year,&data.month,&data.day);days=Days(data);printf("It'sday%dintheyear.\n",days);return0;}intDays(structDatedata){inti=0;intdays=0;//统计的天数intDays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};/*用一个日期数组保存每一月的天数,二月的天数记为28天1月份:Days[1]=312月份:Days[2]=283月份:Days[3]=314月份:Days[4]=30以此类推*///统计整月的天数for(i=0;i<data.month;i++){days+=Days[i];//等价于days=days+Days[i]}days+=data.day;//加上偏移的天数if((data.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论