【C语言】练习5-8
生活随笔
收集整理的這篇文章主要介紹了
【C语言】练习5-8
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- ?題目來源:《The C programming language》中的習題P92
- ?練習5-8:?一個日期轉換的問題,把某月某日這種日期表示形式轉換為某年中第幾天的表示形式,反之亦然。例如,3月1日是非閏年的第60天,是閏年的第61天。在這里,我們定義下列兩個函數以進行日期轉換:函數day_of_year將某月某日的日期表示形式轉換為某一年中的第幾天的表示形式,函數month_day則執行相反的轉換。
代碼實現:
#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}, // 閏年的月份 }; /* 把某月某日這種日期表示形式轉換為某年中第幾天 */ 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;// 錯誤檢查if (year < 1752 || month < 1 || month > 12 || day < 1)return -1;if(day > daytab[flag][month]){return -1;}// 循環for(; i < month; i++){result += daytab[flag][i];}result += day;return result; }/* 把某年中第幾天表示形式轉換為某月某日這種日期形式 */ 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;// 錯誤檢查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; }/* 主函數 */ 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); }?
總結
以上是生活随笔為你收集整理的【C语言】练习5-8的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDC:中国IT安全硬件、软件和服务全景
- 下一篇: 分析Linux磁盘管理与文件系统专题三