循环输入日期(年月日),求出当前日期是这一年的第几天。
要求:1.年月日必须用结构体表示;
2.计算天数最好用swith语句;注意判断是否为闰年;
3.至少循环运行3次,输入3个不同日期(必须得有闰年),得出不同结果。
要求1.2都弄出来了,3弄不出来,哪位帮我看看怎么弄?
我写的代码
加循环控制就可以了。
第一种方法:执行3次,用个for循环控制一下就可以了,代码如下:
int main()
{
for (int x = 0; x < 3; x++)
{
//把原来的代码放在这里
}
return 0;
}
第二种方法:根据输入来判断是否继续,代码如下:
int main()
{
int op;
while (1)
{
//原来的代码放在这里
//新增代码,在这里根据用户的输入来判断是否继续输入年月日进行计算
cout << "是否继续(输入1继续)? ";
cin >> op;
if (op != 1)
break;
}
return 0;
}
如有帮助,望采纳,谢谢。
#include <iostream>
#define N 3
using namespace std;
struct Date
{
int year;
int month;
int day;
int days_count;
};
int is_leap(int year)
{
if((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
{
return 29;
}
return 28;
}
int count_days(int year, int month, int day)
{
int count;
switch(month-1)
{
case 0: count = day; break;
case 1: count = day + 31; break;
case 2: count = day + 31 + is_leap(year); break;
case 3: count = day + 31 * 2 + is_leap(year); break;
case 4: count = day + 31 * 2 + 30 + is_leap(year); break;
case 5: count = day + 31 * 3 + 30 + is_leap(year); break;
case 6: count = day + 31 * 3 + 30 * 2 + is_leap(year); break;
case 7: count = day + 31 * 4 + 30 * 2 + is_leap(year); break;
case 8: count = day + 31 * 5 + 30 * 2 + is_leap(year); break;
case 9: count = day + 31 * 5 + 30 * 3 + is_leap(year); break;
case 10: count = day + 31 * 6 + 30 * 3 + is_leap(year); break;
case 11: count = day + 31 * 6 + 30 * 4 + is_leap(year); break;
}
// cout<<count;
return count;
}
void input(struct Date date[])
{
int i;
cout<<"请输入日期:年 月 日:"<<endl;
for(i=0; i<N; i++)
{
cin>>date[i].year>>date[i].month>>date[i].day;
date[i].days_count = count_days(date[i].year, date[i].month, date[i].day);
cout<<date[i].year<<"-"<<date[i].month<<"-"<<date[i].day<<"是"<<date[i].year<<"年的第"<<date[i].days_count<<"天"<<endl;
}
}
//void print(struct Date date[])
//{
// int i;
// for(i=0; i<N; i++)
// {
// cout<<date[i].year<<"-"<<date[i].month<<"-"<<date[i].day<<"是"<<date[i].year<<"年的第"<<date[i].days_count<<"天"<<endl;
// }
//}
int main()
{
struct Date date[N], *p = date;
input(p);
// print(p);
}