【C语言】练习5-8
生活随笔
收集整理的這篇文章主要介紹了
【C语言】练习5-8
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
- ?題目來(lái)源:《The C programming language》中的習(xí)題P92
- ?練習(xí)5-8:?一個(gè)日期轉(zhuǎn)換的問(wèn)題,把某月某日這種日期表示形式轉(zhuǎn)換為某年中第幾天的表示形式,反之亦然。例如,3月1日是非閏年的第60天,是閏年的第61天。在這里,我們定義下列兩個(gè)函數(shù)以進(jìn)行日期轉(zhuǎn)換:函數(shù)day_of_year將某月某日的日期表示形式轉(zhuǎn)換為某一年中的第幾天的表示形式,函數(shù)month_day則執(zhí)行相反的轉(zhuǎn)換。
代碼實(shí)現(xiàn):
#include<stdio.h>int daytab[2][13] = {{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, // 平年的月份{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, // 閏年的月份 }; /* 把某月某日這種日期表示形式轉(zhuǎn)換為某年中第幾天 */ int day_of_year(int year, int month, int day){int result = 0;int flag = year%4 == 0 && year%100 != 0 || year%400==0; //判斷是否為閏年。是則返回1,否則返回0int i = 0;// 錯(cuò)誤檢查if (year < 1752 || month < 1 || month > 12 || day < 1)return -1;if(day > daytab[flag][month]){return -1;}// 循環(huán)for(; i < month; i++){result += daytab[flag][i];}result += day;return result; }/* 把某年中第幾天表示形式轉(zhuǎn)換為某月某日這種日期形式 */ int month_day(int year, int theDays, int *pmonth, int *pday){int flag = year%4 == 0 && year%100 != 0 || year%400==0; //判斷是否為閏年。是則返回1,否則返回0int i = 0;// 錯(cuò)誤檢查if (year < 1752 || theDays < 1){return -1;}if ((flag && theDays > 366) || (!flag && theDays > 365)){return -1;}for(; theDays > daytab[flag][i] && i <= 12 ; i++){theDays -= daytab[flag][i];}*pmonth = i;*pday = theDays;return 0; }/* 主函數(shù) */ void main(){int month, day;printf("%d\n",day_of_year(1988, 3, 1));month_day(1988, 61, &month, &day);printf("month = %d, day = %d\n", month, day); }?
總結(jié)
以上是生活随笔為你收集整理的【C语言】练习5-8的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: IDC:中国IT安全硬件、软件和服务全景
- 下一篇: ndk-gdb