求解一个C++问题,需要详细的解答,谢谢! 10
题目是:C++编程:定义一个结构体变量(包括年月日),编写程序,要求输入年、月、日,程序能计算并输出该日在本年中是第几天。主意闰年问题。我的答案:#include<ios...
题目是:C++编程:定义一个结构体变量(包括年月日),编写程序,要求输入年、月、日,程序能计算并输出该日在本年中是第几天。主意闰年问题。
我的答案:
#include <iostream>
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";
cin>>date.year>>date.month>>date.day;
if ((date.year%4==0 && date.year%100!=0) || (date.year%400==0))
{
leap=true;
month[12]=month1[12];
}
else
{
leap=false;
month[12]=month2[12];
}
for(i=0;i<date.month;i++)
count_day=count_day+month[i];
cout<<"该日是本年第"<<count_day<<"天"<<endl;
return 0;
}、
可是却有问题,执行出来答案很奇怪,求解!!!!!!! 展开
我的答案:
#include <iostream>
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";
cin>>date.year>>date.month>>date.day;
if ((date.year%4==0 && date.year%100!=0) || (date.year%400==0))
{
leap=true;
month[12]=month1[12];
}
else
{
leap=false;
month[12]=month2[12];
}
for(i=0;i<date.month;i++)
count_day=count_day+month[i];
cout<<"该日是本年第"<<count_day<<"天"<<endl;
return 0;
}、
可是却有问题,执行出来答案很奇怪,求解!!!!!!! 展开
展开全部
自己比较着看吧。
//#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<month;i++)
k+=m[i];
cout << year << "年" << month+1 << "月" << day << "日是该年的第" << k+day << "天.\n";
}
//#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<month;i++)
k+=m[i];
cout << year << "年" << month+1 << "月" << day << "日是该年的第" << k+day << "天.\n";
}
展开全部
#include <iostream>
#include <algorithm>
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、闰年判断方式有没有错我没检查。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
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<date.month-1;i++) //此处i从0开始变到。。。。
count_day=count_day+month[i];
cout<<"该日是本年第"<<count_day<<"天"<<endl;
return 0;
}
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<date.month-1;i++) //此处i从0开始变到。。。。
count_day=count_day+month[i];
cout<<"该日是本年第"<<count_day<<"天"<<endl;
return 0;
}
追问
请问为何要“for(i=0;i<12;i++) //数组赋值 ”?
追答
我不好给你说,在这个程序中,数组要逐个元素赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询