#include <iostream>
// 统计函数:通过引用返回结果
void countNumber(int &odd, int &even) {
int val;
while (std::cin >> val && val != 0) {
if (val % 2 == 0) even++;
else odd++;
}
}
int main()
{
int oddCount = 0, evenCount = 0;
std::cout << "请输入一列整数(0结束): " << std::endl;
countNumber(oddCount, evenCount);
std::cout << "奇数: " << oddCount << " 个,偶数: " << evenCount << " 个" << std::endl;
return 0;
}
3 带默认参数的阶乘
定义一个带默认参数值的函数求 n ! n! n!,在主函数中调用两次该函数,一次给出实参,另一次不给实参,体会默认值的意义。
cpp复制代码
#include <iostream>
long long factorial(int n = 5) {
long long res = 1;
for (int i = 1; i <= n; ++i) res *= i;
return res;
}
int main()
{
// 给出实参
std::cout << "3! = " << factorial(3) << std::endl;
// 不给实参,使用默认值 5
std::cout << "默认(5!) = " << factorial() << std::endl;
return 0;
}
4 求 a ! + b ! + c ! a! + b! + c! a!+b!+c!
求 a ! + b ! + c ! a!+b!+c! a!+b!+c! 的值,要求用两个函数实现:函数 fac 求 n ! n! n!,函数 add 求三者之和。 a a a、 b b b、 c c c 的值由主函数输入,最终得到的值在主函数中输出。
cpp复制代码
#include <iostream>
long long fac(int n) {
long long res = 1;
for (int i = 1; i <= n; ++i) res *= i;
return res;
}
long long add(long long x, long long y, long long z) {
return x + y + z;
}
int main()
{
int a, b, c;
std::cout << "输入 a, b, c: ";
std::cin >> a >> b >> c;
std::cout << "结果: " << add(fac(a), fac(b), fac(c)) << std::endl;
return 0;
}
用递归函数求斐波那契数列中的第 n ( n = 1 , 2 , 3 , ... ) n (n=1,2,3,\dots) n(n=1,2,3,...) 个数。斐波那契数列的特点是:第1、2个数为1,从第3个数开始,每个数是其前两个数之和。即 F 1 = 1 ( n = 1 ) F_1=1 \quad (n=1) F1=1(n=1) F 2 = 1 ( n = 2 ) F_2=1 \quad (n=2) F2=1(n=2) F n = F n − 1 + F n − 2 ( n ≥ 3 ) F_n=F_{n-1}+F_{n-2} \quad (n \ge 3) Fn=Fn−1+Fn−2(n≥3)
cpp复制代码
#include <iostream>
int fib(int n) {
if (n == 1 || n == 2) return 1;
return fib(n - 1) + fib(n - 2);
}
int main()
{
int n;
std::cout << "输入 n: ";
std::cin >> n;
std::cout << "第 " << n << " 个数是: " << fib(n) << std::endl;
return 0;
}
7 验证哥德巴赫猜想
写一个函数验证哥德巴赫猜想:一个不小于6的偶数可以分解为两个素数之和。要求:在主函数中输入一个偶数 n n n,判定 n n n 与6的大小。如果 n n n 不小于6,则调用函数 gotbaha,在 gotbaha 函数中再调用判定素数的函数 prime,并在主函数中输出"6=3+3"形式的结果。如果 n n n 小于6,则程序结束。
cpp复制代码
#include <iostream>
#include <cmath>
bool prime(int n) {
if (n < 2) return false;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) return false;
}
return true;
}
void gotbaha(int n) {
for (int i = 2; i <= n / 2; i++) {
if (prime(i) && prime(n - i)) {
std::cout << n << "=" << i << "+" << (n - i) << std::endl;
return;
}
}
}
int main()
{
int n;
std::cout << "输入一个偶数: ";
std::cin >> n;
if (n >= 6 && n % 2 == 0) gotbaha(n);
else std::cout << "程序结束" << std::endl;
return 0;
}
8 函数重载 add
使用 add 作为重载函数名,分别定义求3个整数之和的函数和求两个浮点数之和的函数,并编程实现。
cpp复制代码
#include <iostream>
int add(int a, int b, int c) { return a + b + c; }
float add(float a, float b) { return a + b; }
int main()
{
std::cout << "3个整数和: " << add(1, 2, 3) << std::endl;
std::cout << "2个浮点数和: " << add(1.5f, 2.5f) << std::endl;
return 0;
}
9 内联函数求和
在主函数中输入两个数 m , n m, n m,n,用内联函数求和,并输出结果。
cpp复制代码
#include <iostream>
inline int getSum(int m, int n) { return m + n; }
int main()
{
int m, n;
std::cin >> m >> n;
std::cout << "和为: " << getSum(m, n) << std::endl;
return 0;
}