求解一个C++问题,需要详细的解答,谢谢!

2025-04-03 23:39:08
推荐回答(3个)
回答1:

自己比较着看吧。
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
void main(void){
int year,month,day,i,k,m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
cout << "Type Year, Month & Day\n";
while(1){
cin >> year >> month >> day;
if(year>0){
if(!(year%100) || !(year%4) && year%100) m[1]++;
if(month>0 && month<13 && day>0 && day <=m[month-1])
break;
}
cout << "Error! redo...\n";
}
for(k=i=0,month--;i k+=m[i];
cout << year << "年" << month+1 << "月" << day << "日是该年的第" << k+day << "天.\n";
}

回答2:

#include 
#include 
using namespace std;
struct Date
{
int month;
int day;
int year;
};
int main()
{
Date date;
int count_day = 0, i;
int month[12];
int month1[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int month2[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
bool leap;
cout << "please enter month day and year";
cin >> date.year >> date.month >> date.day;
if ((date.year % 4 == 0 && date.year % 100 != 0) || (date.year % 400 == 0))
{
leap = true;
copy_n(month1, 12, month);
}
else
{
leap = false;
copy_n(month2, 12, month);
}
for (i = 1; i < date.month; i++)
count_day = count_day + month[i - 1];
count_day = count_day + date.day;
cout << "该日是本年第" << count_day << "天" << endl;
return 0;
}

1、整个数组之间的赋值不能直接用一个等号这样完成。可以使用algorithm头文件里的copy_n从一个数组复制到另一个数组

2、count_day没有初始化为0

3、count_day没有加上日期的天数

4、month的第i个元素并不代表第i个月的天数,因为下标从0开始的。i-1才是该月份天数

5、因为没有第0月,所以i要从1开始

6、闰年判断方式有没有错我没检查。

回答3:

#include
using namespace std;
struct Date
{int month;
int day;
int year;
};
int main()
{
Date date;
int count_day,i;
int month[12];
int month1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int month2[12]={31,29,31,30,31,30,31,31,30,31,30,31};
bool leap;
cout <<"please enter month day and year\n";
cin>>date.year>>date.month>>date.day;
count_day=date.day; //起始天数
if ((date.year%4==0 && date.year%100!=0) || (date.year%400==0))
{
leap=true;
for(i=0;i<12;i++) //数组赋值
month[i]=month1[i];
}
else
{
leap=false;
for(i=0;i<12;i++) //数组赋值
month[i]=month2[i];
}
for(i=0;i count_day=count_day+month[i];
cout<<"该日是本年第"< return 0;
}