2016-2017学年第二学期C++第五章(2)

xiaoxiao2021-02-27  423

C++ 上机课参考答案

本系列文章供北京邮电大学信通院及数媒学院「C++高级程序语言设计」上机课学生参考。

2016-2017学年第二学期C++第五章(2)

1511.VC++实验5.3 斐波那契数列

//VC++实验5.3 斐波那契数列 /* 题目描述 用非递归函数,求Fibonacci数列第n项。键盘输入一个n,输出Fibonacci数列第n项的值。 输入 3 输出 2 */ #include <iostream> using namespace std; int fibonacci(int n) { int a = 1, b = 1, temp; if(n == 1 || n == 2) return 1; for(int i = 3; i <= n; i++) { temp = a + b; a = b; b = temp; } return b; } int main() { int n; cin >> n; cout << fibonacci(n) << endl; return 0; }

1512.VC++实验5.4 计算排列

//VC++实验5.4 计算排列 /* 题目描述 编写程序计算排列,排列的公式P(n,m)=n!/(n-m)!,其中n>=m。请使用两个函数分别实现计算阶乘和计算排列。键盘输入n和m的值,输出它们的排列值。 输入 4 3 输出 24 */ #include <iostream> using namespace std; int factorial(int x) { int factorial = 1; for(int i = 1; i <= x; i++) { factorial *= i; } return factorial; } int fun(int n, int m) { return factorial(n) / factorial(n - m); } int main() { int n, m; cin >> n >> m; cout << fun(n, m) << endl; return 0; }

1514.VC++实验5.6 分糖果

//VC++实验5.6 分糖果 /* 题目描述 有10个小朋友围成一圈分糖果,老师顺次分给每人一定数量糖果(初始值为偶数)然后按照下列规则调整,所有小朋友同时把自己的糖果分一半给右边的人,糖果数变为奇数的人,向老师补要一块糖果,问经过多少次调整后,大家糖果数一样多,且每人多少块。建立两个函数,一个负责传递糖果,一个负责判断所有人的糖果是否相等。 输入 12 2 8 22 16 4 10 6 14 20 输出 16 18 */ #include <iostream> using namespace std; static int a[10]; int pass() { int temp = a[9]; for(int i = 9; i > 0; i--) { a[i] = a[i] / 2 + a[i - 1] / 2; } a[0] = a[0] / 2 + temp / 2; for(int i = 0; i < 10; i++) if(a[i] % 2 != 0) a[i]++; } int judge() { int sum = 0, n = 0; while(1) { for(int i = 0; i < 10; i++) sum += a[0] - a[i]; if(sum == 0) { cout << n << " " << a[0] << endl; return 0; } pass(); n++; sum = 0; } } int main() { for(int i = 0; i < 10; i++) cin >> a[i]; judge(); return 0; }
转载请注明原文地址: https://www.6miu.com/read-2304.html

最新回复(0)