C++程序设计实践》实验4
-
【描述】
计算数列1+1/3+1/5+…的前n项之和。
【输入】
输入一个正整数n。
【输出】
输出数列前n项的和。
【输入示例】10
【输出示例】2.13326
(10分)我的答案:
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { int n; double sum=0.0; cin>>n; for(int i=1;i<=2*n-1;i+=2){ sum+=1.0/i; } cout<<sum<<endl; return 0; } -
【描述】
计算如下式子:
的值,计算到最后一项的值小于给定的阈值时为止。
【输入】
输入在一行中给出小于1的阈值。
【输出】
在一行中输出满足阈值条件的式子值,结果保留6位小数。
【输入示例】0.000001
【输出示例】2.718282
(10分)我的答案:
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { double n; double result = 0, lastone = 1, k = 1, i = 1; cin >> n; while (lastone >= n) { result += 1.0 / k; k *= i; i++; lastone = 1.0 / k; } cout << fixed << setprecision(6) << result << endl; return 0; } -
【描述】
输入若干个整数,如果输入0,输入即终止。判定读入的整数中有多少个正整数、多少个负整数,并计算这些整数的总和和平均值(0不计算在内)。平均值结果保留2位小数。
【输入】
输入若干个整数,如果输入0,输入即终止。
【输出】
分行输出这些整数中的正整数个数、负整数个数、总和、平均值(0不计算在内)。
若只输入0,则输出:No input。
【输入示例】-1 -2 -3 -4 -5 6 7 8 9 0
【输出示例】4 5 15 1.67
(10分)我的答案:
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { int n; int cnt = 0, zzs = 0, fzs = 0, total = 0; while (cin >> n) { if (n == 0) { break; } else if (n > 0) zzs += 1; else if (n < 0) fzs += 1; total += n; cnt += 1; } if (cnt == 0) cout << "No input" << endl; else { cout << zzs << endl; cout << fzs << endl; cout << total << endl; cout << fixed << setprecision(2) << total * 1.0 / cnt << endl; } return 0; } -
【描述】
某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。用45人正好搬45块砖,问有多少种搬法?
【输入】
没有输入。
【输出】
输出搬砖的男人、女人和小孩数。
【输出示例】A,B,C A、B、C分别表示男人、女人、小孩数。
【来源】《程序设计基础——以C++为例》第2章实验14。
(10分)我的答案:
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { int i, j, k; for ( i = 0; i <= 15; i++) { for ( j = 0; j <= 22; j++) { for ( k = 0; k <= 45; k += 2) { if ((3 * i + 2 * j + k / 2 == 45) && (i + j + k == 45)) { cout << i << "," << j << "," << k << endl; } } } } return 0; } -
【描述】
计算数列1+(1+2)+(1+2+3)+(1+2+3+4)+…的前n项之和。
【输入】
输入一个正整数n。
【输出】
输出数列前n项的和。
【输入示例】3
【输出示例】10
(10分)我的答案:
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int sum(int n){ int total=0; for (int i=0;i<=n;i++){ total+=i; } return total; } int main() { int n; int h=0; cin>>n; for(int j=0;j<=n;j++){ h+=sum(j); } cout<<h<<endl; return 0; } -
【描述】
给定一个十进制正整数,求其对应的二进制数中1的个数。
【输入】
第一个正整数表示有n(n > 0)个测试数据,其后n行是对应的测试数据,每行为一个正整数。
【输出】
分行输出n个正整数对应的二进制数中1的个数。
【输入示例】4 2 100 1000 66
【输出示例】1 3 6 2
(10分)我的答案:
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { int n; cin>>n; while(n--){ int x,cnt=0; cin>>x; while(x){ cnt+=x%2; x=x/2; } cout<<cnt<<endl; } return 0; } -
【描述】
在校园里,没有自行车,上课办事会很不方便。但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,骑车快还是走路快。
【输入】
第一个正整数表示有n(n > 0)个测试数据,其后n行是对应的测试数据,每行为一次办事要行走的距离,单位为米。
【输出】
对应每个办事要行走的距离,如果骑车快,输出一行“Bike”;如果走路快,输出一行“Walk”;如果一样快,输出一行“All”。
【输入示例】4 50 90 120 180
【输出示例】Walk Walk Bike Bike
(10分)我的答案:
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { int n; double x; cin >> n; for (int i = 1; i <= n; i++) { cin >> x; if (x == 100) cout << "All" << endl; else if (x > 100) cout << "Bike" << endl; else cout << "Walk" << endl; } return 0; } -
【描述】
编写程序,用迭代法求立方根
求立方根的迭代公式为:
当满足如下条件时:
迭代停止。
【输入】
输入一个数。
【输出】
输出该数的立方根。
【输入示例】27
【输出示例】3
(10分)我的答案:
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { double num, x; const double EPSILON = 0.000001; cin >> num; x = num; while (fabs(num - (x * x * x)) > EPSILON) { x = (2 * x + num / (x * x)) / 3.0; } cout << x << endl; return 0; } -
【描述】
输入一个正整数,从小到大输出该数所有的质因子。
质因数(质因数)是指能整除给定正整数的质数(素数)。
【输入】
输入一个正整数。
【输出】
分行从小到大输出该数所有的质因子。
【输入示例】120
【输出示例】2 2 2 3 5(10分)
我的答案:
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { int x, i; cin >> x; int n = x; for (i = 2; i <= n; i++) { while (x % i == 0) { cout << i << endl; x /= i; } } return 0; } - 【描述】
编写程序,根据输入的字符以及棱形的边长,输出以该字符为填充字符的棱形。
【输入】
输入在一行中给出字符和边长。
【输出】
输出以该字符为填充字符,相应边长的棱形。
【输入示例】A 5
【输出示例】A AAA AAAAA AAAAAAA AAAAAAAAA AAAAAAA AAAAA AAA A我的答案:
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { char c; int n; cin>>c>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=n-i;j++)cout<<" "; for(int j=1;j<=2*i-1;j++)cout<<c; cout<<"\n"; } for(int i=n-1;i>=1;i--){ for(int j=1;j<=n-i;j++)cout<<" "; for(int j=1;j<=2*i-1;j++)cout<<c; cout<<"\n"; } return 0; }
本文提供了一系列C++编程实践题目的解决方案,包括数列求和、二进制转换、立方根计算等,通过实际例子展示了C++语言的应用技巧。
1829

被折叠的 条评论
为什么被折叠?



