题目
以下程序求二维数组中每行的最大值和每行的和,[填空3] 应填()。 #include < stdio.h > int main(void) ( int a[5][5], b[5], c[5], i, j, k, s=0; for(i=0; i< 5; i++) for(j=0; j< 5; j++) a[i][j]=random(40)+20; for(i=0; i< 5; i++) { k=a[i][0]; [填空1]; for(j=0; j< 5; j++) { if(k< a[i][j])[填空2] ; s=s+a[i][j]; ) b[i]=k; [填空3]; } /*输出部分省略*/ return 0; } A. a[i]=sB. c[i]=sC. b[i]=sD. a[i][j]=s
以下程序求二维数组中每行的最大值和每行的和,[填空3] 应填()。
#include < stdio.h >
int main(void)
{
int a[5][5], b[5], c[5], i, j, k, s=0;
for(i=0; i< 5; i++)
for(j=0; j< 5; j++)
a[i][j]=random(40)+20;
for(i=0; i< 5; i++)
{
k=a[i][0];
[填空1];
for(j=0; j< 5; j++)
{
if(k< a[i][j])[填空2] ;
s=s+a[i][j];
}
b[i]=k;
[填空3];
}
/*输出部分省略*/
return 0;
}
- A. a[i]=s
- B. c[i]=s
- C. b[i]=s
- D. a[i][j]=s
题目解答
答案
本题考察二维数组的行最大值与行和的计算。
1. [填空1]需将 `s` 初始化为 0,即 `s = 0;`。
2. [填空2]需更新最大值,即 `k = a[i][j];`。
3. [填空3]需将当前行和 `s` 存入 `c[i]`,即 `c[i] = s;`。
选项分析:
- A 错误,`a[i] = s` 不符合逻辑。
- B 正确,`c[i] = s` 符合要求。
- C 错误,`b[i]` 已用于存储最大值。
- D 错误,`a[i][j] = s` 不合理。
答案:B. `c[i] = s;`
解析
本题主要考察二维数组的行最大值与行和的计算。解题思路如下:
- 首先,程序通过两层嵌套的
for循环对二维数组a[5][5]进行初始化,为其每个元素赋予一个在 20 到 59 之间的随机值。 - 接着,外层
for循环控制遍历二维数组的每一行,对于每一行:- 初始化变量
k为该行的第一个元素a[i][0],用于记录该行的最大值。 - 对于 [填空 1],需要将用于计算该行元素和的变量
s初始化为 0,即s = 0;。 - 内层
for循环遍历该行的每个元素:- 对于 [填空 2],如果当前元素
a[i][j]大于k,则更新k的值为a[i][j],即k = a[i][j];。 - 同时,将当前元素
a[i][j]累加到s中,用于计算该行元素的和。
- 对于 [填空 2],如果当前元素
- 遍历完该行所有元素后,将该行的最大值
k存入数组b[i]中。 - 对于 [填空 3],需要将该行元素的和
s存入数组c[i]中,即c[i] = s;。
- 初始化变量
- 最后,对各选项进行分析:
- 选项 A:
a[i] = s不符合逻辑,因为a是二维数组,不能直接将一个整数赋值给a[i]。 - 选项 B:
c[i] = s符合要求,将每行的和存入数组c中。 - 选项 C:
b[i]已经用于存储每行的最大值,不能再用来存储每行的和。 - 选项 D:
a[i][j] = s不合理,a[i][j]是二维数组的一个元素,不能将每行的和赋值给它。
- 选项 A: