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;
}