单选题
1、第65题 (1.0分) 题号:636 若二维数组a有m列,则在a[i][j]前的元素个数为()。
A
j*m+i
B
i*m+j
C
i*m+j-1
D
i*m+j+1
答案解析
正确答案:B
解析:
**解析:**
在 C 语言及大多数编程语言中,二维数组在内存中是按**行优先**(Row-Major Order)顺序连续存储的。这意味着数组先存储第 0 行的所有元素,接着存储第 1 行的所有元素,依此类推。
题目已知二维数组 `a` 有 `m` 列。我们要计算在元素 `a[i][j]` **之前**有多少个元素。
我们可以将 `a[i][j]` 之前的元素分为两部分来计算:
1. **完整的前 `i` 行:**
* 目标元素位于第 `i` 行(行下标从 0 开始,所以前面有 `0` 到 `i-1` 共 `i` 行)。
* 每一行有 `m` 个元素。
* 因此,前 `i` 行包含的元素总数为:$i \times m$。
2. **当前第 `i` 行中位于 `a[i][j]` 之前的元素:**
* 在第 `i` 行中,目标元素的列下标为 `j`。
* 在该行中,排在 `a[i][j]` 前面的元素下标为 `0` 到 `j-1`。
* 因此,当前行中在它之前的元素个数为:$j$。
**综上所述:**
在 `a[i][j]` 之前的元素总个数 = 前 `i` 行的元素总数 + 当前行前面的元素个数
$$ \text{Count} = i \times m + j $$
**选项分析:**
* A. $j*m+i$:这是列优先存储时的计算公式,不符合题意。
* B. $i*m+j$:**正确**。符合行优先存储的逻辑。
* C. $i*m+j-1$:这是计算错误,少算了一个或者多减了1。
* D. $i*m+j+1$:这是计算错误,多算了一个。
故正确答案为 **B**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第194题 (1.0分) 题号:549 若有double *p,x[10];int i=5;使指针变量p指向元素x[5]的语句为()。
单选题
1、第193题 (1.0分) 题号:120 假设所有变量均为整型,表达式:a=2,b=5,a>b?a++:b++,a+b的值 是()。
单选题
1、第192题 (1.0分) 题号:138 以下程序的输出结果是()。
单选题
1、第191题 (1.0分) 题号:641 若有说明:int a[10];则对a数组元素的正确引用是()。
单选题
1、第190题 (1.0分) 题号:696 设 int b=2;表达式(b>>2)/(b>>1)的值是()。
单选题
1、第189题 (1.0分) 题号:724 若调用fputc函数输出字符成功,则其返回值是()。
单选题
1、第188题 (1.0分) 题号:159 下列程序的输出为()。
单选题
1、第187题 (1.0分) 题号:722 利用 fseek 函数可以实现的操作是()。
单选题
1、第186题 (1.0分) 题号:576 设以下变量均为int类型,则值不等于7的表达式是()。
单选题
1、第185题 (1.0分) 题号:142 以下程序的输出结果为()。
