第一道写一个function来求圆周率的值,写的时候卡在了,double(1/5),改了很长时间也没有改对,后来发现,是因为int/int 还为int 如果想让(1/5)为double型,需要令分母或者分子为int型,这是从这道练习题中学到的
#include <iostream>
#include <string>
using namespace std;
double arc (double);
double arc (double x)
{
long double result = 0;
int i = 1;
long double up = x;
while (up/i > 1e-15)
{
if(i%4 == 1)
{
result = result + up/i;
}
else
{
result = result - up/i;
}
i = i+2;
up = up * x * x;
}
return result;
}
int power(int, int);
int main()
{
long double result;
result = 16 * arc(double(1)/5) - 4* arc(double(1)/239);
cout<<16 * arc(0.5)<<endl;
cout<<"The value of pi is: "<< result <<endl;
}
第二道练习题是一道求回文数字问题,主要纠结的问题在于,只写了一个if函数,并没有在下面加上else,导致考虑结果并不完善,若出现不等于if后续函数的情况,不知道怎么处理,同时了解到 return(m==n)的意思是,若m=n 则返回true,若不等于,则返回false。表示学到了,因为之前以为这个函数是和if 函数一样的
#include <iostream>
#include <string>
using namespace std;
bool reverse(int n)
{
int result = 0;
int start = n;
while(start > 0)
{
result = result *10 + start % 10 ;
start = start/10;
}
if(result == n)
return 1;
else
return 0;
}
bool back(int n)
{
if(reverse(n) && reverse(n*n) && reverse(n*n*n))
return 1;
else
return 0;
}
bool reverse(int);
bool back(int);
int main()
{
cout<<"The back word is: ";
for(int i = 11; i<=999; i++)
{
//if(reverse(i) && reverse(i*i) && reverse(i*i*i))
if(back(i))
{
cout<<i<<endl;
}
}
//if(back(33))
//cout<<"22 is back"<<endl;
}