判断今天是今年的第几天(2)

来源:互联网 发布:左飞 算法之美 编辑:程序博客网 时间:2024/06/05 01:57
#include<stdio.h>
int count(int y,int m,int d);int leap(int y);int main(void){ int year = 0;//输入年份int month = 0;//输入月份int day = 0;//输入日期int cnt = 0;//记录总天数printf("请输入年 月 日\n");scanf("%d%d%d",&year,&month,&day);if(month>12){printf("**,一年最多12个月!\n");return 0;}//判断大月天数是否超过31天if((month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) && day>31){printf("**,%d月最多31天!\n",month);return 0;}//判断小月天数是否超过30天if((month==4 || month==6 || month==9 || month==11) && day>30 ){printf("**,%d月最多30天!\n",month);return 0;}if(month == 2){if(day>29 && leap(year)){printf("**,今年2月最多29天!\n");return 0;}else if(day>28 && !leap(year)){printf("**,今年2月最多28天!\n");return 0;}}cnt = count(year,month,day);printf("今天是今年第%d天!\n",cnt);return 0;}//判断是否为闰年int leap(int y){if(y%4 == 0 && y%100 != 0 || y%400 == 0)//真为闰年return 1;else return 0;}//计算总天数int count(int y,int m,int d){int a[12] = {31,29,31,30,31,30,31,31,30,31,30,31}; //a为闰年每月天数int b[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; //b为非闰年每月天数int i = 0;//循环标号int sum = 0;//记录总天数作为返回值//闰年计算方法if(leap(y))for(i = 0; i < m - 1; i++)sum += a[i];//非闰年计算方法elsefor(i = 0; i < m - 1; i++)sum += b[i];sum += d;return sum;}

原创粉丝点击