| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 456 人关注过本帖
标题:[求助]继续项目题,昨天的我已经解决啦~
只看楼主 加入收藏
ting6love
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-9-27
收藏
 问题点数:0 回复次数:2 
[求助]继续项目题,昨天的我已经解决啦~

创建一个结构体date,包括year,month,day三个成员,分别代表日期的年,月,日。

1.在主函数中输入一个日期,要对输入的日期有效性进行验证,在日期合法的情况下调用下面3个函数实现对应的功能
1)调用nextday()函数,求输入日期的下一天日期,求得结果在nextday()函数中显示
2)调用prevday()函数,求输入日期的前一天日期,求得结果在prevday()函数中显示
3)调用howmanydays()函数,求输入的日期是该年的第几天,求得结果返回到主函数中显示

2.输入一个日期之后要同时完成以上三个功能,显示完结果之后,询问用户是否继续,如果用户同意继续,则再次提示用户输入一个日期,再次完成以上的三个功能。

3.完成以上功能时,要考虑闰年的情况.

#include<stdio.h>
#define N 200
struct date
{
int year;
int month;
int day;
};
void nextday(struct date next[]);
void prevday(struct date prev[]);
void howmanyday(struct date many[]);
void main()
{
struct date day[N];
int i;
char ans;
do
{
printf("请输入%d年%d月%d日",day.year,day.month,day.day);
scanf("%d %d %d",&day.year,&day.month,&day.day);
if(day.year>0)
if(day.month<1 || day.month>12)
if(date.day<1 || day.day>31)
printf("输入错误,请重新输入!");




printf("是否继续输入?(y or n):");
scanf(" %c",&ans);
}while(ans=='y' || ans=='Y')
}

小弟这道题只写了一个框架,请指点,我迷糊了。。。有好多错的地方!~!!!

搜索更多相关主题的帖子: 项目 
2007-10-19 17:13
zxc1998
Rank: 1
等 级:新手上路
威 望:1
帖 子:133
专家分:0
注 册:2007-3-21
收藏
得分:0 
if(day.year>0)
if(day.month<1 || day.month>12)
if(date.day<1 || day.day>31)
printf("输入错误,请重新输入!");


这3个判断不应该嵌套起来,
2007-10-19 23:08
ting6love
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-9-27
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 200
struct date
{
int year;
int month;
int day;
}dates;
//void nextday(struct date next[]);
//void prevday(struct date prev[]);
void howmanyday(struct date many[]);
void main()
{
struct date days[N];
char ans;
do
{
while(1)
{
printf("请输入年,月,日:");
scanf("%d,%d,%d",&dates.year,&dates.month,&dates.day);
if(dates.year>=0 && dates.month>0 && dates.month<=12 && dates.day>0 && dates.day<=31)
break;
else
printf("输入错误,请重新输入!\n");
if((dates.year%4==0 && dates.year%100!=0) || dates.year%400==0 && (dates.month>=3 && dates.day<29))
{
dates.day++;
}
}
// prevday(days);
howmanyday(days);
// nextday(days);
printf("是否继续输入?(y or n):");
scanf(" %c",&ans);
}while(ans=='y' || ans=='Y');
}
void howmanyday(struct date many[])
{
int days;
switch(dates.month)
{
case 1:days=dates.day; break;
case 2:days=dates.day+31; break;
case 3:days=dates.day+59; break;
case 4:days=dates.day+90; break;
case 5:days=dates.day+120; break;
case 6:days=dates.day+151; break;
case 7:days=dates.day+181; break;
case 8:days=dates.day+212; break;
case 9:days=dates.day+243; break;
case 10:days=dates.day+273; break;
case 11:days=dates.day+304; break;
case 12:days=dates.day+334; break;
}
if((dates.year%4==0 && dates.year%100!=0 || dates.year%400==0) && dates.month>=3)
days+=1;
printf("%d年%d月%d日,是该年的%d天\n",dates.year,dates.month,dates.day,days);
}
/*void nextday(struct date next[])
{
int nday;
}*/


让我改成这个样子了。。。可是没有办法判断闰年的情况了,例如2000年2月30日。。这个都能提醒,,,怎么办呀~
2007-10-20 17:30
快速回复:[求助]继续项目题,昨天的我已经解决啦~
数据加载中...
 
   



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

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