《第二周CSDN题目及代码》

1. (编程题)下列乘法算式中:每个汉字代表1个数字(1~9)。相同的汉字代表相同的数字,不同的汉字代表不同的数字。

赛软件 * 比赛 = 软件比拼

试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。


【参考结果】
465 * 14 = 6510


2. 有10个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。


3. 625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。除了625,还有其它的3位数有这个特征吗?还有一个!该数是:_____________


4. 输入类是abcd的字符串,要求使用递归实现反转字符串,使输出结果为dcba


5. π值计算
我国古代数学家对圆周率方面的研究工作,成绩是突出的。三国时期的刘徽、南北朝时期的祖冲之都在这个领域取得过辉煌成绩。有了计算机,圆周率的计算变得十分容易了。如今,人们创造了上百种方法求π的值。其中比较常用且易于编程的是无穷级数法。
π/4=1-1/3+1/5-1/7+1/9-...
是初学者特别喜欢的一个级数形式,但其缺点是收敛太慢。
π/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/9+1/3*2/5*3/7+4/9+...
是收敛很快的一个级数方法。

请编程序用这两种方法计算π的值。


代码答案:


//1
#include "iostream"

using namespace std;

int main()
{
	int s, r, j, b, p;

	for (s = 1; s < 10; ++s)
		for (r = 1; r < 10; ++r)
			for (j = 0; j < 10; ++j)
				for (b = 1; b < 10; ++b)
					for (p = 0; p < 10; ++p)
					{
						if ((s*100 + r*10 + j)*(b*10 + s) == (r*1000 + j*100 + b*10 +p))
							cout <<s<<r<<j<<"*"<<b<<s<<"="<<r<<j<<b<<p<< endl;
					}
}

//2
#include "iostream"

using namespace std;
//定义结构体
struct Children
{
	long num;
	struct Children *next;
};
	
Children *head = NULL, *p, *q;

void get_num();//运用动态链表赋值
void find_num();//按要求输出

int main()
{
	get_num();
	find_num();

	return 0;
}
void get_num()
{
	for (int i = 1; i < 11; ++i)
	{
		p = new Children;
		
		p->num = i;
		p->next = NULL;
		
		if (i == 1)
			head = p;
		else
			q->next = p;
		q = p;
	}
	q->next = head;
}
void find_num()
{
	Children *p1, *p2;
	int i = 2, turn = 0;//此处的i是p2->num对应的号码

	p1 = head;
	p2 = p1->next;

	while(1)
	{
		if (i == 3)
		{
			cout << p2->num << endl;
			p1->next = p2->next;
			p2 = p2->next;
			i = 1;
			++turn;	
		}
		else
		{
			p1 = p1->next;
			p2 = p2->next;
			++i;
		}
		if (turn ==	10)
			break;
	}
}

//3

#include "iostream"

using namespace std;

int main()
{
	int d_i;

	for (int i = 101; i <= 999; ++i)
	{
		d_i = i*i;

		if (d_i%1000 == i)
			cout << i << endl;
	}

	return 0;
}

//4
#include "iostream"

using namespace std;

void turn(int);
char str[81];//储存一行字符

int main()
{
	gets(str);
	turn(0);

	cout << endl;

	return 0;
}
void turn(int i)
{
	if (str[i] == '\0')
		return;
	else
		turn(i+1);
	
	cout << str[i];
	return;
}

//5-1
#include <iostream>

using namespace std;

int main()
{
	long double pi = 0, x = 1;
	int sign = 1;

	while(1/x > 0.00000001)
	{
		pi = pi + sign/x;
		x = x + 2;
		sign = -sign;
	}

	pi = 4*pi;

	cout << pi << endl;

	return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值