C++程序设计教程(第二版),钱能著,课后练习题第二章

C++程序设计教程(第二版),钱能著,课后练习题

第二章 基本编程语句

1、对运行中输入的x,计算级数:

在这里插入图片描述
将所有绝对值不小于10e-8的数部都计入在内,要求输出精度为10e-8。分别用for和while语句各编写一个程序。

for循环

#include<iostream>
#include<iomanip>
#include<cmath>

int main() {
	int x;
	double sum=1,item=1;
	std::cout.precision(8);
	std::cout << "请输入x的值" << std::endl;
	std::cin >> x;
	for (int i = 1; abs(item) >= 1e-8; i++) {
		item = -item*x/i;
		sum -= item;
	}
	std::cout << "输出值为:" << std::fixed<<sum << std::endl;
	return 0;
}

while循环

#include<iostream>
#include<iomanip>
#include<cmath>

int main() {
	int x;
	double sum = 1, item = 1;
	int n = 1;
	std::cout.precision(8);
	std::cout << "请输入x的值" << std::endl;
	std::cin >> x;
	while (abs(item) >= 1e-8) {
		item = -item * x / n;
		sum -= item;
		n += 1;
	}
	std::cout << "输出值为:" << std::fixed << sum << std::endl;
	return 0;
}

以下懒得打题目了,直接附上代码

2

#include<iostream>
using namespace std;

int main() {
	int i=0, j = 1, n = 1;
	while (n <= 12) {
		j *= n;
		i += j;
		n++;
	}
	cout << "1!+2!+...+12!=" << i << endl;
	return 0;
}

3

#include<iostream>
#include<cmath>
using namespace std;

int main(){
	int num = 100;
	int b, s, g;
	cout << "水仙数有:" << endl;
	for (num; num < 1000; num++) {
		g = num % 10;
		s = num / 10 % 10;
		b = num / 100;
		if (num == pow(g, 3) + pow(s, 3) + pow(b, 3))
			cout << num<<" ";
	}
	return 0;
}

4

#include<iostream>
using namespace std;

int main() {
	cout << "完数有:" << endl;
	int num = 1;
	int sum , i;
	for (num; num < 1000; num++) {
		for (i=2,sum=1; i <= num / 2; i++)
			if (num % i == 0)
				sum += i;
		if (sum == num)
			cout << num << " ";
	}
	return 0;
}

5

#include<iostream>
using namespace std;

int main() {
	cout << "1000以内的3位对称素数有:" << endl;
	for (int num = 100; num < 1000; num++) {
		int buff = 1;
		for (int i = 2; i < num / 2; i++) 
			buff *= num % i;
		if (buff != 0) {
			if ((num / 100) == (num % 10))
				cout << num << " ";
		}
		else
			continue;
	}
	return 0;
}

6

#include<iostream>
using namespace std;

extern int Digui(int n);
int Digui(int n) {
	if (n == 10)
		return 1;
	else
		return 2*(Digui(n+1)+1);
}



int main() {
	cout << "(递归写法)第一天桃子总数为:" << endl;
	int m = Digui(1);
	cout << m << endl;
	cout << "迭代写法" << endl;
	int sum = 1;
	for (int n = 9; n >= 1; n--) {
		sum = 2 * (sum + 1);
	}
	cout << sum << endl;
	return 0;
}

7

#include<iostream>
using namespace std;

int main() {
	for (int i = 1; i < 20; i++) {
		if (i < 10) {
			for (int m = 1; m <= 10-i; m++)
				cout << " ";
			for (int m = 1; m <= 2*i-1; m++)
				cout << "%";
			for (int m = 1; m <= 10 - i; m++)
				cout << " ";
			cout << endl;
		}
		else {
			for (int m = 1; m <= i-10; m++)
				cout << " ";
			for (int m = 1; m <= 39-2*i; m++)
				cout << "%";
			for (int m = 1; m <= i-10; m++)
				cout << " ";
			cout << endl;
		}
	}
	return 0;
}

8(1)

#include<iostream>
using namespace std;

int main() {
	for (int i = 1; i <= 10; i++) {
		for (int m = 1; m <= 10-i; m++) 
			cout << " ";
		for (int m = 1; m <= i; m++) 
			cout << "#";
		for (int m = 1; m < 5; m++)
			cout << " ";
		for (int m = 1; m <= i; m++)
			cout << "$";
		cout << endl;
	}
	return 0;
}

8(2)

#include<iostream>
using namespace std;

int main() {
	for (int i = 1; i <= 10; i++) {
		cout << string(i - 1, ' ');
		for (int j = 1; j <= 21 - 2 * i; ++j) {
			cout << (j & 1 ? 'S' : 'T');
		}
		cout << endl;
	}
	return 0;
}``

9

#include<iostream>
using namespace std;

int main() {
	cout << "请输入多少年后:" << endl;
	int c = 1, n;
	cin >> n;
	for (int i = 1, a = 1, b = 1, temp; i <= n; i++) {
		temp = a + c;
		a = b;//a的值是当年产出的牛,c是前一年牛的总数,经过四个循环传递过来
		b = c;//b是工具,数据传递用的
		c = temp;
	}
	cout << n << "年后有母牛" << c << "头" << endl;
	return 0;
}

10

#include<iostream>
using namespace std;

int main() {
	double sum = 100, height = 100;
	for (int i = 1; i < 10; i++, height /= 2) {
		sum += height;
	}
	cout << "共经历" << sum << "米" << endl;
	cout << "第10次反弹后的高度是" << height/2 << endl;
	return 0;
}

11

#include<iostream>
using namespace std;

int main() {
	int ten, five, one, n=0, m;
	m = 100 - 10 - 5 - 1;
	for (ten = 0; ten <= m / 10; ten++) {
		n += (m - 10 * ten) / 5 + 1;
	}
	cout << "100元分成10、5、1元共有" << n << "种" << endl;
	return 0;
}

12(1)

#include<iostream>
#include<iomanip>
using namespace std;

int main() {
	for (int i = 1; i < 6; i++) {
		cout << i << setfill(' ')<<setw(2)<<" ";
		for (int j = 1; j <= 7; j++) {
			cout << setfill(' ') << setw(3) << " " << (i + j - 2) % 7;		
		}
		cout << endl;
	}
	return 0;
}

12(2)

#include<iostream>
using namespace std;

int main() {
	for (int i = 1; i <= 6; i++) {
		for (int j = 1; j <= 7; j++) {
			cout << "(" << i << "," << j << ")"<<" ";
		}
		cout << endl;
	}
	return 0;
}

13(1)

#include<iostream>
#include<string>
#include<iomanip>

using namespace std;

int main() {
	cout << "*";
	for (int j = 1; j <= 9; j++) {
		cout << setw(5) << setfill(' ') << j;
	}
	cout << endl;
	cout << string(46, '-') + "\n";
	for (int i = 1; i <= 9; i++) {
		cout << i;
		for (int k = 1; k <= i; k++) {
			cout << setw(5) << setfill(' ') << i * k;
		}
		cout << endl;
	}

	return 0;
}

13(2)

#include<iostream>
#include<string>
#include<iomanip>

using namespace std;

int main() {
	cout << "*";
	for (int j = 1; j <= 9; j++) {
		cout << setw(5) << setfill(' ') << j;
	}
	cout << endl;
	cout << string(46, '-') + "\n";
	for (int i = 1; i <= 9; i++) {
		cout << i;
		int k = i - 1;
		while (k) {
			cout << setw(5) << setfill(' ') << " ";
			k--;
		}
		for (int k = i; k <= 9; k++) {
			cout << setw(5) << setfill(' ') << i * k;
		}
		cout << endl;
	}

	return 0;
}
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值