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() 函数模板,并输出了结果。

相关推荐
懒大王爱吃狼30 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
劲夫学编程31 分钟前
leetcode:杨辉三角
算法·leetcode·职场和发展
毕竟秋山澪33 分钟前
孤岛的总面积(Dfs C#
算法·深度优先
秃头佛爷2 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
待磨的钝刨2 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
浮生如梦_3 小时前
Halcon基于laws纹理特征的SVM分类
图像处理·人工智能·算法·支持向量机·计算机视觉·分类·视觉检测
XiaoLeisj4 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
励志成为嵌入式工程师4 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉5 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer5 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法