553C++笔试题目(持续更新)

总目录

1.rand()随机数函数

是C标准库 <cstdlib> 中的一个随机数生成函数,用于生成伪随机数。它返回一个在0到RAND_MAX之间的整数,RAND_MAX是一个预定义的常量,通常是一个较大的整数值(至少32767)。

使用 rand() 函数之前,通常需要调用 srand() 函数来初始化随机数种子,以确保每次程序运行时都能生成不同的随机数序列。srand() 函数的参数是一个整数,通常使用当前时间作为种子,例如:

cpp 复制代码
#include <cstdlib>
#include <ctime>

int main() {
    // 使用当前时间作为随机数种子
    srand(time(0));

    // 生成一个随机数
    int random_number = rand();

    return 0;
}

需要注意的是,rand() 函数生成的随机数序列是伪随机的,因为它是根据种子值计算的,而种子值通常是由系统时间提供的,所以在同一秒钟内调用 rand() 生成的随机数是相同的。如果需要更复杂的随机数生成算法,可以考虑使用 <random> 头文件中的更高级的随机数库。

先用随机函数(rand)按列优先初始化一个3行4列的数组(数组中元素的范围是【1,9】),然后判断该数组中是否有鞍点(即是否存在既是行上最大又是列上最小的元素)

cpp 复制代码
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

// 初始化数组
void initializeArray(int array[][4], int rows, int cols) {
    srand(time(0)); // 使用当前时间作为随机数种子

    for (int j = 0; j < cols; ++j) {
        for (int i = 0; i < rows; ++i) {
            array[i][j] = rand() % 9 + 1; // 生成范围在1到9之间的随机数
        }
    }
}

// 判断是否为鞍点
bool isSaddlePoint(int array[][4], int rows, int cols, int rowIndex, int colIndex) {
    int element = array[rowIndex][colIndex];
    
    // 检查是否为行上最大值
    for (int j = 0; j < cols; ++j) {
        if (array[rowIndex][j] > element) {
            return false; // 不是行上最大值,不是鞍点
        }
    }
    
    // 检查是否为列上最小值
    for (int i = 0; i < rows; ++i) {
        if (array[i][colIndex] < element) {
            return false; // 不是列上最小值,不是鞍点
        }
    }
    
    return true; // 既是行上最大又是列上最小,是鞍点
}

int main() {
    int array[3][4];
    initializeArray(array, 3, 4);

    // 打印数组
    cout << "Array:" << endl;
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            cout << array[i][j] << " ";
        }
        cout << endl;
    }

    // 判断是否存在鞍点
    bool hasSaddlePoint = false;
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            if (isSaddlePoint(array, 3, 4, i, j)) {
                cout << "Saddle point found at position (" << i << ", " << j << "): " << array[i][j] << endl;
                hasSaddlePoint = true;
            }
        }
    }

    if (!hasSaddlePoint) {
        cout << "No saddle point found." << endl;
    }

    return 0;
}

2.函数模板(19年写一个二分查找函数模板用递归)

当然,请看下面的函数模板示例:

cpp 复制代码
#include <iostream>
using namespace std;

// 定义一个函数模板
template <typename T>
T maximum(T x, T y) {
    return (x > y) ? x : y;
}

int main() {
    // 在模板函数中使用整数
    cout << "Maximum of 5 and 10 is: " << maximum(5, 10) << endl;
    
    // 在模板函数中使用浮点数
    cout << "Maximum of 3.5 and 7.8 is: " << maximum(3.5, 7.8) << endl;
    
    // 在模板函数中使用字符
    cout << "Maximum of 'a' and 'z' is: " << maximum('a', 'z') << endl;

    return 0;
}

这个例子中,maximum() 是一个函数模板,它可以比较不同类型的参数,并返回两者中的最大值。在 main() 函数中,我们分别使用了整数、浮点数和字符来调用 maximum() 函数模板,并输出了结果。在调用时,编译器会根据实参的类型自动生成对应的函数实例。

二分查找函数模板

以下是一个二分查找函数模板的示例:

cpp 复制代码
#include <iostream>
#include <vector>
using namespace std;

// 定义一个函数模板
template<typename T>
int binarySearch(const vector<T>& sortedArray, const T& key) {
    int left = 0;
    int right = sortedArray.size() - 1;

    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (sortedArray[mid] == key) {
            return mid; // 找到了
        } else if (sortedArray[mid] < key) {
            left = mid + 1; // 在右半部分继续查找
        } else {
            right = mid - 1; // 在左半部分继续查找
        }
    }

    return -1; // 没有找到
}

int main() {
    vector<int> numbers = {1, 3, 5, 7, 9, 11, 13, 15};
    int key = 7;
    
    int index = binarySearch(numbers, key);
    if (index != -1) {
        cout << "Element found at index: " << index << endl;
    } else {
        cout << "Element not found." << endl;
    }

    return 0;
}

这个示例中,binarySearch() 函数模板接受一个已排序的数组和一个要查找的关键字,并返回关键字在数组中的索引(如果存在),否则返回 -1。在 main() 函数中,我们使用一个已排序的整数向量调用了 binarySearch() 函数模板,并输出了结果。

相关推荐
2401_857439692 小时前
SSM 架构下 Vue 电脑测评系统:为电脑性能评估赋能
开发语言·php
SoraLuna3 小时前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos
xlsw_3 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
Dream_Snowar4 小时前
速通Python 第三节
开发语言·python
唐诺4 小时前
几种广泛使用的 C++ 编译器
c++·编译器
XH华4 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生5 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_5 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
高山我梦口香糖5 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
落魄君子5 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘