| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 433 人关注过本帖
标题:[求助]简化代码 日期问题
取消只看楼主 加入收藏
菜鸟笨鸟
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-9-2
收藏
 问题点数:0 回复次数:2 
[求助]简化代码 日期问题

题目:用户输入一个year(年)一个month(月)和一个day(日)
用函数实现求出这个日期是这一年的第几天
函数的原型为 int getDay(int year,int month,int day)
函数的返回值为第几天.
红色部分是对用户输入的限制 比如用户输入了 某年13月38日就是非法的 这个部分
我感觉自己做的麻烦了 有没有简单点的

#include<stdio.h>
int getDay(int year,int month,int day);
void main()
{
int year,month,day,s,leap;
printf("请您输入您要查询的年月日:\n");

printf("请您输入年:");//输入年
scanf("%d",&year);
if(year%400==0||(year%4==0)&&(year%100==0))//判断是否是闰年
leap=1;
else
leap=0;

printf("请您输入月:");//输入月
scanf("%d",&month);
if(month<1||month>12)//判断月份合法性
printf("月份无效\n");

printf("请您输入日:");//输入日
scanf("%d",&day);
switch(month)//判断天数的合法性
{

case 4: //这些月份每月对多30天
case 6:
case 9:
case 11:
if(day<1||day>30)
printf("本月份最多30天\n");
else
{
s=getDay(year,month,day);
printf("%d年%d月%d日是这一年中的第%d天!\n",year,month,day,s);
}
break;
case 2: //2月份闰年最多29天
if(leap==1)
{
if(day<1||day>29)
printf("闰年本月份是最多29天\n");
else
{
s=getDay(year,month,day);
printf("%d年%d月%d日是这一年中的第%d天!\n",year,month,day,s);
}
}
if(leap==0) //2月份非闰年最多28天
{
if(day<1||day>28)
printf("非闰年本月份最多28天\n");
else
{
s=getDay(year,month,day);
printf("%d年%d月%d日是这一年中的第%d天!\n",year,month,day,s);
}
}
break;
default: //剩下的月份最多31天
if(day<1||day>31)
printf("本月份最多31天\n");
else
{
s=getDay(year,month,day);
printf("%d年%d月%d日是这一年中的第%d天!\n",year,month,day,s);
}
}

}

int getDay(int year,int month,int day)//判断这个日期是第几天
{
int n;
switch(month)
{
case 1:n=0;break;
case 2:n=31;break;
case 3:n=59;break;
case 4:n=90;break;
case 5:n=120;break;
case 6:n=151;break;
case 7:n=181;break;
case 8:n=212;break;
case 9:n=243;break;
case 10:n=273;break;
case 11:n=304;break;
case 12:n=334;break;
default:printf("您输入的月份有错误!\n");
}

if((month>2)&&(year%400==0||(year%4==0)&&(year%100==0)))//输入的月份大于2同时又是闰年多加一天
return(n+day+1);
else
return(n+day);
}

[此贴子已经被作者于2006-10-15 23:13:38编辑过]

搜索更多相关主题的帖子: 代码 
2006-10-15 23:02
菜鸟笨鸟
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-9-2
收藏
得分:0 
我试一下哈~!!~!

偶是大菜鸟~!
2006-10-15 23:26
菜鸟笨鸟
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-9-2
收藏
得分:0 
有个问题输入 2月30也可以算出来

偶是大菜鸟~!
2006-10-15 23:37
快速回复:[求助]简化代码 日期问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031380 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved