关于两道练习题的一些回顾(计算圆周率以及回文)

第一道写一个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;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值