谭浩强C++课后习题8——猴子吃桃,计算根号a,输出图案

谭浩强C++课后习题8——猴子吃桃,计算根号a,输出图案

题目一:猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个,到第10天早上想再吃时,就只剩一个桃子了。求第1天共摘了多少桃子。

算法思路:设前一天的桃子数位x1,现在的桃子数为x2,根据关系有:x1/2-1=x2,则x2=(x1+1)*2,吃了9天,因此循环9次。

#include<iostream>
using namespace std;
int main() {
	int number = 1, day = 9;
	for (int i = 0;i < day;i++) {
		number = (number + 1) * 2;
	}
	cout << number << endl;
	return 0;
}

运行结果:
在这里插入图片描述
题目二:用迭代法求x=根号a。求平方根的迭代公式为:x=(x+a/x)/2,要求前后两次求出的x的差的绝对值小于10^-5。

算法思路:用temp存储上一个x的值,fabs函数是绝对值函数,当fabs(x-temp)>1e-5时结束循环。

#include<iostream>
#include<cmath>
using namespace std;
int main() {
	double x, a;
	cout << "输入a:";
	cin >> a;
	x = a / 2;
	double temp;
	do
	{
		temp = x;
		x = (x + a / x) / 2;
	} while (fabs(x-temp)>=1e-5);
	cout << x << endl;
	return 0;
}

运行结果:
在这里插入图片描述
题目三:输出以下图案。
在这里插入图片描述
算法思路:先输出前四行再输出后三行,观察得:前四行星号的个数为行号2-1,后三行的行号从1开始,每行星号的个数为7-行号2.

#include<iostream>
using namespace std;
int main() {
	for (int i = 1;i <= 4;i++)
	{
		for (int j = 1;j <= 2 * i - 1;j++)
			cout << "*";
		cout << endl;
	}
	for (int i = 1;i <= 3;i++) {
		for (int j = 1;j <= 7 - 2 * i;j++)
			cout << "*";
		cout << endl;
	}
	return 0;
}

运行结果:
在这里插入图片描述

发布了35 篇原创文章 · 获赞 35 · 访问量 626

猜你喜欢

转载自blog.csdn.net/weixin_45295612/article/details/105197354
今日推荐