C++用结构体实现:要求输入年、月、日、时、分、秒。输出该时间的下一秒

例子:输入2007年12月31日23时59分59秒输出2008年1月1日0时0分0秒用结构体实现,这是我的程序....但是输出的结果不正确#include<iostrea... 例子:
输入2007年12月31日23时59分59秒
输出2008年1月1日0时0分0秒
用结构体实现,这是我的程序....
但是输出的结果不正确

#include <iostream>
using namespace std;
struct datatime
{
int year;
int month;
int day;
int hour;
int minute;
int second;
};
struct datatime data_1;
struct datatime *p;
int main()
{
int days[13]={365,31,28,31,30,31,30,31,31,30,31,30,31};
p=&data_1;
cout<<"请依次输入年、月、日、时、分、秒:"<<endl;
cin>>p->year>>p->month>>p->day>>p->month>>p->hour>>p->day;
if(p->second<59)
p->second++;
else
{
p->second=0;
cout<<p->second<<endl;
if(p->minute<59)
p->minute++;
else
{
p->minute=0;
if(p->hour<23)
p->hour++;
else
{
p->hour=0;
if(2==p->month&&(p->year%400==0)||(p->year%4==0&&p->year%400!=0))
days[p->month]=29;
if(p->day<days[p->month])
p->day++;
else
{
p->day=1;
if(p->month<12)
p->month++;
else
{
p->month=1;
p->year++;
}
}
}
}
}
cout<<p->year<<" "<<p->month<<" "<<p->day<<" "<<p->hour<<" "<<p->minute<<" "<<p->second<<endl;
system ("pause");
return 0;
}
展开
 我来答
cjj796
2013-09-27 · TA获得超过8702个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3372万
展开全部

赋值语句变量名字有问题:

 cin>>p->year>>p->month>>p->day>>p->month>>p->hour>>p->day;
                                   月改时             日改秒

改成:

 cin>>p->year>>p->month>>p->day>>p->hour>>p->minute>>p->second;

 试过了吗,还有什么问题

光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
lampzhou
2013-09-26 · TA获得超过707个赞
知道小有建树答主
回答量:1208
采纳率:56%
帮助的人:619万
展开全部
cin>>p->year>>p->month>>p->day>>p->month>>p->hour>>p->day;
最后一个应该是秒。。其他问题没发现,你先看看
追问
改了,还是不行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金牛菜刀一哥
2013-09-26
知道答主
回答量:12
采纳率:0%
帮助的人:15.4万
展开全部
#include<stdio.h>
#include<stdlib.h>

int year;
int month;
int day;
int hour;
int minute;
int second;

void InputTime();
void UpdateTime();
void OutputTime();
int TimeCheck();
int LeapYear();
int DayBound();//返回一个月的日期上限

void InputTime()
{
system("clear");
printf("请按提示输入一个时间\n");
printf("请输入年份\n");
scanf("%d",&year);
printf("请输入月份\n");
scanf("%d",&month);
printf("请输入日期\n");
scanf("%d",&day);
printf("请输入小时数\n");
scanf("%d",&hour);
printf("请输入分钟数\n");
scanf("%d",&minute);
printf("请输入秒数\n");
scanf("%d",&second);
}

int TimeCheck()
{
if(month >0 && month <=12)//月份检查
{
if(day >0 && day <= DayBound())//日期检查
{
if(hour >=0 && hour <=23)//小时检查
{
if(minute >=0 && minute <=59)//分钟检查
{
if(second >=0 && second <=59)//秒数检查
return 1;
else
return 0;
}
else
return 0;
}
else
return 0;
}
else
return 0;
}
else
return 0;
}

int DayBound() //返回一个月的日期上限
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:return 31;break;
case 4:
case 6:
case 9:
case 11:return 30;break;
case 2:{
switch(LeapYear())
{
case 1:return 29;break;
case 0:return 28;break;
}
}
}
}

int LeapYear() //判断闰年的函数
{
if(0 == year%4)
{
if(0 == year%100)
{
if(0 == year%400)
return 1;
else
return 0;
}
else
return 1;
}
else
return 0;
}

void UpdateTime()
//得到输入时间的下一秒
{
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
{
hour=0;
day++;
if(day > DayBound())
{
day =1;
month++;
if(month==13)
{
month=1;
year++;
}
}
}
}
}
}

void OutputTime()//输出所得的时间
{
printf("所输入的时间的下一秒是:\n");
printf("%d年 %d月 %d日 %02d:%02d:%02d\n",year,month,day,hour,minute,second);
}

int main()
{
do
{
InputTime();
} while(0 ==TimeCheck()); //检查输入时间的合法性
UpdateTime(); //得到输入时间的下一秒
OutputTime(); //输出得到的结果
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式