本人是C++初学者,请C++高手们帮忙讲解以下问题应该怎样编写程序,只讲一下具体方法也行。 谢谢!

我在C++中定义了一个日期类,现在需定义一个日期与整数间的相互转换函数,即输入一个日期(包括年月日)和一个整数x,要输出这个日期加上x天后得到的日期。请问具体应该怎样编程呢?
还有一个是输入两个日期,计算出两个日期之间相差的天数。这个又应该怎样编程呢?
谢谢!

就是进制和判断闰年的问题。
day相当于是30或者31进制(二月是28或者29),由月份和是否是闰年来决定。
month是固定的12进制。
year不知道要不要涉及公元前后,假设不涉及。
日期+天数:可以是先加了再判断日期是否合法,直到调整到合法;也可以是day+1就判断一次,循环“天数”次。关键就是要写个函数判断日期是否合法,以及如何调整。
year就不用管了,先判断month是否小于1,大于12,再根据month和year(2月时判断是否为闰年)判断day是否在合法范围:month为1、3、5、7、8、10、12不能大于31;month为4、6、9、11不能大于30;month为2再判断year为闰年不能大于29,否则不能大于28。不满足上述条件,说明输入错了或者需要调整。一般month需要输入正确,因为day的判断依赖与month。
调整的话是对day进行的,先判断day是否合法,合法的话看month,也合法的话就直接返回日期了,如果month不合法“month=month-12,year++;”,再判断直到合法;如果day不合法根据month来决定除数(mun),”day=day-mun,month++;“,还要看month是否合法不合法就调整,直到从day,month都合法。
大概就这样吧,说的我都晕了。。。。。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-10
#include<iostream>
#include<cmath>
using namespace std;
int isprime(int n);

int main()
{
int i,s=0;
for(i=4;i<=100;i++)
{

cout<<isprime(i)<<endl;
s+=isprime(i);
}
cout<<"1—100素数之和为:"<<s+2+3<<endl;
return 0;
}
int isprime(int n)
{
int k=int(sqrt(n));
for(int i=2;i<=k;i++)
{ if(n%i==0)
return 0;

else if(i==k)
return n;
}
}

函数isprime没有给n 赋值。

改了,应该是这样才对,你的方法不能对2,3进行判断,只能从4开始了。
相似回答