应用题示例
应用题 1: 找出数组中的最大值
题目:
编写一个函数,该函数接受一个整数数组作为输入,并返回数组中的最大值。
答案:
#include <iostream>
#include <vector>
#include <algorithm> // 用于 std::max_element
int findMaxInArray(const std::vector<int>& arr) {
if (arr.empty()) {
throw std::invalid_argument("数组不能为空");
}
return *std::max_element(arr.begin(), arr.end());
}
int main() {
std::vector<int> numbers = {4, 2, 9, 7, 5, 1};
try {
int maxNum = findMaxInArray(numbers);
std::cout << "数组中的最大值是:" << maxNum << std::endl;
} catch (const std::invalid_argument& e) {
std::cout << e.what() << std::endl;
}
return 0;
}
应用题 2: 字符串反转
题目:
编写一个函数,该函数接受一个字符串作为输入,并返回反转后的字符串。
答案:
#include <iostream>
#include <string>
#include <algorithm> // 用于 std::reverse
std::string reverseString(std::string str) {
std::reverse(str.begin(), str.end());
return str;
}
int main() {
std::string original = "hello";
std::string reversed = reverseString(original);
std::cout << "反转后的字符串是:" << reversed << std::endl;
return 0;
}
应用题 3: 斐波那契数列
题目:
编写一个函数,该函数接受一个整数 n
作为输入,并返回斐波那契数列中的第 n
个数。斐波那契数列的定义是:F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n > 1)。
答案:
#include <iostream>
int fibonacci(int n) {
if (n <= 1) {
return n;
}
int a = 0, b = 1, c;
for (int i = 2; i <= n; ++i) {
c = a + b;
a = b;
b = c;
}
return b;
}
int main() {
int n = 10;
std::cout << "斐波那契数列中的第 " << n << " 个数是:" << fibonacci(n) << std::endl;
return 0;
}
应用题 4: 冒泡排序
题目:
实现冒泡排序算法,对一个整数数组进行排序。
答案:
#include <iostream>
#include <vector>
void bubbleSort(std::vector<int>& arr) {
int n = arr.size();
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// 交换 arr[j] 和 arr[j+1]
std::swap(arr[j], arr[j+1]);
}
}
}
}
int main() {
std::vector<int> numbers = {64, 34, 25, 12, 22, 11, 90};
bubbleSort(numbers);
std::cout << "排序后的数组是:";
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
应用题 5: 圆的面积(C++)
题目:
已知一个圆的半径为5,求该圆的面积。
代码示例答案:
#include <iostream>
#include <cmath> // 用于math.h库中的常量PI
using namespace std;
int main() {
const double PI = 3.14159; // 圆周率π
double radius = 5.0; // 半径
// 计算面积
double area = PI * radius * radius;
// 输出结果
cout << "该圆的面积为:" << area << endl;
return 0;
}
应用题6. 最大公约数
题目:给定两个正整数a和b,求它们的最大公约数。
#include <iostream>
using namespace std;
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
int main() {
int a, b;
cin >> a >> b;
cout << gcd(a, b) << endl;
return 0;
}
应用题7. 素数判定
题目:判断一个正整数是否为素数。
#include <iostream>
using namespace std;
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; ++i) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int n;
cin >> n;
if (isPrime(n)) cout << n << " 是素数" << endl;
else cout << n << " 不是素数" << endl;
return 0;
}
应用题8. 冒泡排序
题目:使用冒泡排序算法对给定的整数数组进行排序。
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
}
int main() {
int n;
cin >> n;
int arr[n];
for (int i = 0; i < n; ++i) cin >> arr[i];
bubbleSort(arr, n);
for (int i = 0; i < n; ++i) cout << arr[i] << " ";
cout << endl;
return 0;
}