C++编程问题。求大神

一个整数。它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少,提示:10w以内判断
输入某年某月某日,半段遮天是这一年的第几天。注意要有计算闰年的算法
有一对兔子,从出生后第三个月开始,每个月都生一对兔子,小兔子第三个月又开始生一对兔子。假如兔子都不死。问每个月兔子总数是多少。提示:计算兔子的规律数列

(1)

#include<iostream>

#include<cmath>

using namespace std;


bool isSqrt(int n)             //判断是否为完全平方数

{    

double x;

x=sqrt(n);

if((int)x==x)                       //判断n开方后是否为整数,(int)是对前一个x强制类型转换

return true;

return false;

}

int main()

{

int n;

for(n=0;n<100000;n++)

{

int m=n+100;

int p=m+168;

if(isSqrt(m)&&isSqrt(p))  

cout<<n<<' ';

}

cout<<endl;

}


(2)

#include<iostream>

using namespace std;

int days_month(int y,int m)

{              //返回这个月的天数

if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

return 31;

else if(m==4||m==6||m==9||m==11)

return 30;

else if(y%4==0&&y%100!=0||y%400==0)     //判断是否为闰年

return 29;

else

return 28;

}

int main()

{

int year,month,day;

cout<<"Input the date:";

cin>>year>>month>>day;

int d=0;

for(int i=month-1;i>=1;i--)    //例如输入month为3月,就先算出1月2月的天数,并计算和

{

d+=days_month(year,i); 

}

d+=day;                              //将3月5日那个5天加上去。

cout<<"输入日期是该年的第"<<d<<"天."<<endl;

return 0;

}


(3)兔子的规律为数列1,1,2,3,5,8,13,21....

#include<iostream>

using namespace std;

int main() 

int m,p,n1=1,n2=1;

cout<<"输入月数:";

cin>>m;

for(int i=3;i<=m;i++)

{

p=n2;

n2+=n1;

n1=p;

cout<<i<<"月的兔子总数为:"<<n2<<endl;

return 0;

}


如有不懂,欢迎提问!

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-01-22
#include <math.h>
//最笨的方法
int NumPick()
{
int num1 = 0, num2 = 0;
int i = 0;
for(i=0; i<100000; i++)
{
num1 = i + 100;
num2 = (int)sqrt(num1);
if(num2*num2 == num1)
{
num1 += 168;
num2 = (int)sqrt(num1);
if(num2*num2 == num1)
{
break;
}
}
}
return i;
}

//第2题
//记录每一个月的天数
int m_nDay[2][13]={
{365,31,28,31,30,31,30,31,31,30,31,30,31},
{366,31,29,31,30,31,30,31,31,30,31,30,31}
};

//判断是否闰年
int Isnonleapyear(int year){
if (year%100 == 0) {
if (year%400 == 0) return 1;
   else return 0 ;
}
else if (year%4 == 0) return 1;
         else return 0;
}

//计算是哪一天
int GetTheDayOfYear(int year, int month, int day)
{
int dayCount = 0;
int i=0;
if(Isnonleapyear(year) == 1)
{
for(i=1; i<13; i++)
{
dayCount += m_nDay[1][i];
}
dayCount += day;
}
else if(Isnonleapyear(year) == 0)
{
for(i=1; i<13; i++)
{
dayCount += m_nDay[0][i];
}
dayCount += day;
}
return dayCount;
}

//第3题
//假设他们近亲结婚,然后从一而终啊
int HowManyRabbit(int month)
{
int cnt = month / 3 + 1;//有多少个3个月
return pow(2,cnt-1)*2;
}

本回答被提问者采纳
第2个回答  2014-05-18
 #include <stdlib.h>
#include <math.h>
//-----------------------------------------------------
//第一题
//判断是否是完全平方数
bool IsSquare(unsigned int num)
{
         doubledblNum = num;
         unsignedint nSqrtVal = sqrt(dblNum);
         if(nSqrtVal*nSqrtVal == num)
                   returntrue;
         nSqrtVal++;
         if(nSqrtVal*nSqrtVal == num)
                   returntrue;
         returnfalse;
}
 
void FindTheNums(const unsigned intnMaxNum)
{
         for(unsignedint n=0; n<=nMaxNum; n++)
         {
                   if(IsSquare(n+100) && IsSquare(n+168))
                            printf("符合条件的数:%d\n",n);
         }
}
 
//-----------------------------------------------------
//第二题
void CalcTotalRabbits(const unsigned intnMonths)
{
         unsignedint nOneMonthRabbits = 1;
         unsignedint nTowMonthsRabbits = 0;
         unsignedint nAdultRabbits = 0;
 
         for(intnMonth=2; nMonth<=nMonths; nMonth++)
         {
                   nAdultRabbits+= nTowMonthsRabbits;
                   nTowMonthsRabbits= nOneMonthRabbits;
                   nOneMonthRabbits= nAdultRabbits;
                   printf("%d个月时兔子共有%d对\n",nMonth, nOneMonthRabbits+nTowMonthsRabbits+nAdultRabbits);
         }
}
 
//-----------------------------------------------------
//第三题
//                       1   2  3   4   5  6    7   8  9   10  11  12
const int daysArray[] = {31, 28, 31, 30,31, 30,  31, 31, 30, 31, 30, 31};
bool IsLeapYear(int nYear)
{
         return(nYear%4==0&&nYear%100!=0||nYear%400==0);
}
 
int GetDaysOfMonth(int nYear, int nMonth)
{
         if(nMonth==2  &&  IsLeapYear(nYear))
                   return29;
         returndaysArray[nMonth-1];
}
 
int CalcDay(int nYear, int nMonth, intnDay)
{
         intnRet = 0;
         if(nMonth>=1 && nMonth<=12)
         {
                   if(nDay <= GetDaysOfMonth(nYear, nMonth))
                   {
                            for(intm=1; m<nMonth; m++)
                                     nRet+= GetDaysOfMonth(nYear, m);
                            nRet+= nDay;
                            printf("%d年%d月%d日是当年的第%d天\n",nYear, nMonth, nDay, nRet);
                   }
         }
         if(nRet==0)
                   printf("错误的日期参数,%d年%d月%d日:\n",nYear, nMonth, nDay);
         returnnRet;
 
}
 
//主函数 
int main(int argc, char* argv[])
{
         printf("第一题:\n");
         FindTheNums(100000);
 
         printf("\n第二题:\n");
         CalcTotalRabbits(8);
         
         printf("\n第三题:\n");
         CalcDay(2014,5, 18);
 
         printf("\n\n");
         system( "pause" ) ;
         return0 ;
}

  以下是执行结果:
第一题:
  符合条件的数:156
第二题:
  2个月时兔子共有1对
  3个月时兔子共有2对
  4个月时兔子共有3对
  5个月时兔子共有5对
  6个月时兔子共有8对
  7个月时兔子共有13对
  8个月时兔子共有21对
第三题:
  2014年5月18日是当年的第138天

第3个回答  2014-05-17
类的多态性和虚函数,代码没问题,你想问什么追问

整个代码写出来= =。
我们老师疯了

相似回答