大学网课搜题引擎
首页
学堂在线
C语言程序设计精髓
第十一章 指针的孪生兄弟
题目详情
简答题
下列说法错误的是()。
A、指针指向数组元素时,指针算术运算才有意义
B、两个指针指向同一个数组时,指针相减才有意义
C、指针的算术运算允许通过对指针变量重复自增来访问数组的元素
D、p++就是将指针变量p加上一个字节
查看答案与解析
多选题
下列说法中错误的是
多选题
若有定义“int *p[5];”,则以下叙述中正确的是 ( )
多选题
二维数组a有m行n列,则在a[i][j]之前的元素个数为
简答题
如下程序的执行结果是 #include int main() { int a[ ][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int (*p)[4],i=1,j=2; p=a; printf("%d ",*(*(p+i)+j)); return 0; } A、13 B、132 C、12 D、9
简答题
char (*p)[10];该语句定义了一个 A、指向含有10个元素的一维字符型数组的指针变量p B、指向长度为10的字符串的指针变量p C、有10个元素的指针数组p,每个元素可以指向一个字符串 D、有10个元素的指针数组p,每个元素存放一个字符串
多选题
设有语句“int array[3][4];”,则在下面几种引用下标为i和j的数组元素的方法中,不正确的引用方式是________。
简答题
当指针变量指向一维数组的时候,sizeof(数组名)和sizeof(指针变量名)的计算结果是相同的。
简答题
下面程序的功能是用指针变量作函数参数编程计算任意m×n阶矩阵的转置矩阵。要求用指向一维数组的指针变量即二维数组的行指针作函数参数。程序的运行结果如下: Please enter matrix: 1 2 3 4↙ 1 2 3 4↙ 1 2 3 4↙ The transposed matrix is: 1 1 1 2 2 2 3 3 3 4 4 4 按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include #define ROW 3 #define COL 4 void Transpose(int (*a)[COL], int (*at)[ROW], int row, int col); void InputMatrix(int (*s)[COL], int row, int col); void PrintMatrix(int (*s)[ROW], int row, int col); int main(void) { int s[ROW][COL];//s代表原矩阵 int st[COL][ROW];//st代表转置后的矩阵 printf("Please enter matrix: "); InputMatrix(s, ROW, COL);//输入原矩阵,s指向矩阵s的第0行,是行指针 Transpose(s, st, ROW, COL);//对矩阵s进行转置,结果存放于st中 printf("The transposed matrix is: "); PrintMatrix(st, COL, ROW); //输出转置矩阵,*st指向st的第0行,是行指针 return 0; } //函数功能: 对任意row行col列的矩阵a转置,转置后的矩阵为at void Transpose(____________,int (*at)[ROW], int row, int col) { int i, j; for (i=0; i { for (j=0; j { _____________________; } } } void InputMatrix(___________, int row, int col) //输入矩阵元素 { int i, j; for (i=0; i { for (j=0; j { scanf("%d", ___________);// 元素s[i][j] } } } void PrintMatrix(int ___________, int row, int col) //输出矩阵元素 { int i, j; for (i=0; i { for (j=0; j { printf("%d\t", *(*(s+i)+j)); // 元素s[i][j] } printf(" "); } } A、第20行: int (*a)[COL] 第27行: *(*(at+j)+i) = *(*(a+i)+j) 第32行: int(*s)[COL] 第39行: *(s+i)+j 第44行: (*s)[ROW] B、第20行: int *a[COL] 第27行: *(*(at+j)+i) = (*(a+i)+j) 第32行: int(*s)[ROW] 第39行: *(s+i)+j 第44行: *s[COL] C、第20行: int (*a)[ROW] 第27行: *(at+j+i) = *(*(a+i)+j) 第32行: int(*s)[COL] 第39行: *(s+i+j) 第44行: (*s)[ROW] D、第20行: int (*a)[COL] 第27行: *(*(at+j)+i) = *(*(a+i+j)) 第32行: int(*s)[ROW] 第39行: *(s)+i+j 第44行: (*s)[COL]
多选题
设有以下定义: int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int (*ptr)[3] = a; int *p = a[0]; 则以下能够正确表示数组元素a[1][2]的表达式是( )
简答题
有以下程序段,则*(p[0]+1)所代表的数组元素是 #include int main() { int a[3][2]={1,2,3,4,5,6,},*p[3]; p[0]=a[1]; ..... return 0; } A、a[1][1] B、a[0][1] C、a[0][2] D、a[2][1]
简答题
char *country[] = {"America", "England", "Australia", "China", "Finland"};这条语句定义了一个字符指针数组country,并用初始化列表中的每个字符串的首地址为字符指针数组country的元素进行初始化,并不是将初始化列表中的字符串保存到字符指针数组中。
C语言程序设计精髓
章节列表
第一章 初识C语言从认识变量和常量开始
21
第二章 数字间的那些事儿,做点计算哈
15
第三章 从键盘中来,到键盘中,开始输入和输出啦
22
第四章 无处不在的抉择
23
期末考试
13
第五章 周而复始的循环之道
20
第六章 函数:分工与合作的艺术
15
第七章 《盗梦空间》的逻辑:探寻递归的奥秘
21
第八章 一堆数据来了,你准备好了吗?
13
第九章 指针:C语言世界中所向披靡的“金箍棒”
8
第十章 字符串:C语言世界中的大力水手
12
第十一章 指针的孪生兄弟
12
第十二章 海陆空齐上阵:又来了一堆数据
14
第十三章 原来内存也可以这么玩,我是指针我怕谁
8
第十四章 结构设计的艺术
5
第十五章 学会保存你的数据
11