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

相关推荐
柠檬少少开发4 分钟前
图像拼接算法及实现(一)
人工智能·算法·计算机视觉
DreamByte8 分钟前
Python Tkinter小程序
开发语言·python·小程序
覆水难收呀17 分钟前
三、(JS)JS中常见的表单事件
开发语言·前端·javascript
阿华的代码王国21 分钟前
【JavaEE】多线程编程引入——认识Thread类
java·开发语言·数据结构·mysql·java-ee
繁依Fanyi27 分钟前
828 华为云征文|华为 Flexus 云服务器部署 RustDesk Server,打造自己的远程桌面服务器
运维·服务器·开发语言·人工智能·pytorch·华为·华为云
weixin_4866811443 分钟前
C++系列-STL容器中统计算法count, count_if
开发语言·c++·算法
基德爆肝c语言43 分钟前
C++入门
开发语言·c++
怀九日1 小时前
C++(学习)2024.9.18
开发语言·c++·学习·面向对象·引用·
一道秘制的小菜1 小时前
C++第七节课 运算符重载
服务器·开发语言·c++·学习·算法
易辰君1 小时前
Python编程 - 协程
开发语言·python