Skip to content

1.1节后习题

题目要求

1. 编写程序,利用随机函数,生成10个0~10的随机整数存储在数组中,并判断其中是否有数字“5”,若有,则输出它在数组中的下标(如有多个,也一并输出);否则,输出“NODATA”。

2. 编写程序,使用二维数组构造出以下的杨辉三角形(要求输出n行,n>9)。

操作序列/关键信息

  1. 生成10个0~10的随机整数并存储。
  2. 检查数组中是否存在数字5,并输出所有下标或“NODATA”。
  3. 构造n行杨辉三角形,每行首尾为1,中间元素为上一行相邻两元素之和。

参考答案与解析

参考答案 - 生成随机整数并检测数字5
cpp
#include <iostream>
#include <vector>
#include <cstdlib> // 用于rand()和srand()
#include <ctime>   // 用于time()

int main() {
    std::vector<int> random_numbers(10);
    srand(time(NULL));
    for (int i = 0; i < 10; ++i) {
        random_numbers[i] = rand() % 11;
    }
    bool found = false;
    for (int i = 0; i < 10; ++i) {
        if (random_numbers[i] == 5) {
            found = true;
            break;
        }
    }
    if (found) {
        std::cout << "数字5在数组中的下标: ";
        for (int i = 0; i < 10; ++i) {
            if (random_numbers[i] == 5) {
                std::cout << i << " ";
            }
        }
        std::cout << std::endl;
    } else {
        std::cout << "NODATA" << std::endl;
    }
    return 0;
}
参考答案 - 构造杨辉三角
cpp
#include <iostream>
#include <vector>
#include <iomanip>

std::vector<std::vector<int>> generate_pascal_triangle(int n) {
    std::vector<std::vector<int>> triangle(n, std::vector<int>(n, 0));
    for (int i = 0; i < n; ++i) {
        triangle[i][0] = triangle[i][i] = 1;
        for (int j = 1; j < i; ++j) {
            triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j];
        }
    }
    return triangle;
}

int main() {
    int n;
    std::cin >> n;
    auto triangle = generate_pascal_triangle(n);
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j <= i; ++j) {
            std::cout << triangle[i][j] << " ";
        }
        std::cout << std::endl;
    }
    return 0;
}

核心知识点

数组与随机数

  1. rand() 与 srand():生成伪随机数并初始化种子。
  2. 遍历与条件判断:检查数组元素并输出索引。

二维数组与杨辉三角

  1. 二维数组初始化:使用vector生成固定大小二维数组。
  2. 动态计算:利用前一行元素构造下一行。