C程序給出年月日計算該日是該年的第幾天程序代碼_第1頁
C程序給出年月日計算該日是該年的第幾天程序代碼_第2頁
C程序給出年月日計算該日是該年的第幾天程序代碼_第3頁
C程序給出年月日計算該日是該年的第幾天程序代碼_第4頁
C程序給出年月日計算該日是該年的第幾天程序代碼_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

C程序:給出年、月、日,計算該日是該年的第幾天。用戶從鍵盤中輸入年、月、日,在屏幕上輸出顯示該日期是該年的第幾天。思路:1、判斷輸入的年份是否是閏年。閏年的判別條件是能被4整除,但不能被100整除;或者能被400整除。2、求此日期是該年的第幾天。這里將12個月每個月的天數(shù)存在數(shù)組中,并且采用兩個數(shù)組分別保存平年和閏年的每個月的天數(shù)。計算日期是第幾天時,只需要累計月份之前每個月的天數(shù),再加上輸入的日數(shù)。代碼:intleap(inta) /*自定義函數(shù)leap用來指定年份是否為閏年*/{if(a%4==0&&a%100!=0||a%400==0) /*閏年判定條件*/{return1; /*是閏年返回1*/}return0; /*不是閏年返回0*/}intnumber(intyear,intm,intd)/*自定義函數(shù)number計算輸入日期為該年第幾天*/{intsum=0,i;inta[12]={31,28,31,30,31,30,31,31,30,31,30,31}; /*數(shù)組a存放平年每月的天數(shù)*/intb[12]={31,29,31,30,31,30,31,31,30,31,30,31}; /*數(shù)組b存放閏年每月的天數(shù)*/if(leap(year)==1) /*判斷是否為閏年*/{for(i=0;i<m-1;i++){sum+=b[i]; /*是閏年,累加數(shù)組b前m-1個月份天數(shù)*/}}else{for(i=0;i<m-1;i++){sum+=a[i]; /*不是閏年,累加數(shù)組a錢m-1個月份天數(shù)*/}}sum+=d; /*將前面累加的結(jié)果加上日期,求出總天數(shù)*/returnsum; /*將計算的天數(shù)返回*/}intmain(){intyear,month,day,n; /*定義變量為基本整型*/cout<<"請輸入年月日:";cin>>year;cin>>month;cin>>day; /*輸入年月日*/n=number(year,month,day); /*調(diào)用函數(shù)number*/cout<<"第"<<n<<"天"<<endl2;return0;}

計算某日在本年中的第幾天問題前言:這是C語言程序設(shè)計第五版【譚浩強】章節(jié)對應(yīng)的習題,從第十章開始,逆序回寫。力求程序思路簡明,會比參考答案更加通俗易懂且易上手,代碼更加規(guī)范的同時也會標上相關(guān)注釋。若有紕漏,請指正。本文為第九章課后習題(9.1-9.2)。本系列累計已完成代碼行數(shù):6789.1定義一個結(jié)構(gòu)體變量(包括年、月、日)。計算該日在本年中是第幾天,注意閏年問題。解題思路:正常年份每個月中的天數(shù)是已知的,只要給出日期,算出該日在本年中是第幾天是不困難的。用一個日期數(shù)組保存每一月的天數(shù),二月的天數(shù)記為28天,后面根據(jù)輸入的時間確定是否是閏年的二月,如果是,天數(shù)在加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;//統(tǒng)計的天數(shù)intDays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};/*用一個日期數(shù)組保存每一月的天數(shù),二月的天數(shù)記為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);//統(tǒng)計整月的天數(shù)for(i=0;i<data.month;i++){days+=Days[i];//等價于days=days+Days[i]}days+=data.day;//加上偏移的天數(shù)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);}結(jié)果檢驗:圖片9.2寫一個函數(shù)days,實現(xiàn)第1題的計算。由主函數(shù)將年、月、日傳遞給days函數(shù),計算后將日子數(shù)傳回主函數(shù)輸出解題思路:用結(jié)構(gòu)體做參數(shù)傳遞,在9.1題的基礎(chǔ)上改一下即可#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;//統(tǒng)計的天數(shù)intDays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};/*用一個日期數(shù)組保存每一月的天數(shù),二月的天數(shù)記為28天1月份:Days[1]=312月份:Days[2]=283月份:Days[3]=314月份:Days[4]=30以此類推*///統(tǒng)計整月的天數(shù)for(i=0;i<data.month;i++){days+=Days[i];//等價于days=days+Days[i]}days+=data.day;//加上偏移的天數(shù)if((data.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論