题目
23.[填空1]应填()。#include int main(void){int a[7][7], i, j;for (i = 0; i < 7; i++)a[i][0] = [填空1] = 1;for (i = [填空2]; i < 7; i++)for (j = 1; j < i; j++)a[i][j] = [填空3];for (i = 0; i < 7; i++){for (j = 0; [填空4]; j++)printf("%4d", a[i][j]);printf("n");}return 0;}A a[i][j] C a[j][i]B a[j][j] D a[i][i]
23.[填空1]应填()。
#include
int main(void)
{
int a[7][7], i, j;
for (i = 0; i < 7; i++)
a[i][0] = [填空1] = 1;
for (i = [填空2]; i < 7; i++)
for (j = 1; j < i; j++)
a[i][j] = [填空3];
for (i = 0; i < 7; i++)
{
for (j = 0; [填空4]; j++)
printf("%4d", a[i][j]);
printf("\n");
}
return 0;
}
A a[i][j] C a[j][i]
B a[j][j] D a[i][i]
题目解答
答案
根据杨辉三角的性质:
1. 每行首尾元素为1,即`a[i][0] = a[i][i] = 1`。
2. 中间元素满足`a[i][j] = a[i-1][j-1] + a[i-1][j]`。
3. 输出时,每行需输出`j <= i`的元素。
结合题目选项:
- `[填空1]`应为`a[i][i]`,即D。
- `[填空2]`为`2`(未涉及选项)。
- `[填空3]`为`a[i-1][j-1] + a[i-1][j]`(未直接对应选项)。
- `[填空4]`为`j <= i`(未直接对应选项)。
最终,`[填空1]`应填`a[i][i]`。
答案:D. `a[i][i]`
解析
本题考查杨辉三角的生成逻辑与二维数组的赋值规律。关键点在于理解杨辉三角的性质:
- 每行首尾元素为1,即第i行的第0列和第i列均为1;
- 中间元素由上一行的两个相邻元素相加,即$a[i][j] = a[i-1][j-1] + a[i-1][j]$;
- 输出时需按行逐元素打印,每行打印$j$从0到$i$的元素。
填空1需完成首尾元素赋值,需结合循环变量$i$与数组索引规律推导。
填空1分析
- 循环结构:
for (i = 0; i < 7; i++) a[i][0] = [填空1] = 1; - 目标:使每行首列(
a[i][0])和末列(a[i][i])均为1。 - 关键推导:
- 当
i从0到6时,a[i][0]已显式赋值为1。 - 需补充赋值
a[i][i] = 1,因此填空1应为a[i][i],对应选项D。
- 当