1.1节后习题
题目要求
1. 编写程序,利用随机函数,生成10个0~10的随机整数存储在数组中,并判断其中是否有数字“5”,若有,则输出它在数组中的下标(如有多个,也一并输出);否则,输出“NODATA”。
2. 编写程序,使用二维数组构造出以下的杨辉三角形(要求输出n行,n>9)。
操作序列/关键信息:
- 生成10个0~10的随机整数并存储。
- 检查数组中是否存在数字5,并输出所有下标或“NODATA”。
- 构造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;
}
核心知识点
数组与随机数
- rand() 与 srand():生成伪随机数并初始化种子。
- 遍历与条件判断:检查数组元素并输出索引。
二维数组与杨辉三角
- 二维数组初始化:使用vector生成固定大小二维数组。
- 动态计算:利用前一行元素构造下一行。