多选题下列说法中错误的是多选题若有定义“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\n",*(*(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,每个元素存放一个字符串简答题下列说法错误的是()。 A、指针指向数组元素时,指针算术运算才有意义 B、两个指针指向同一个数组时,指针相减才有意义 C、指针的算术运算允许通过对指针变量重复自增来访问数组的元素 D、p++就是将指针变量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:\n"); InputMatrix(s, ROW, COL);//输入原矩阵,s指向矩阵s的第0行,是行指针 Transpose(s, st, ROW, COL);//对矩阵s进行转置,结果存放于st中 printf("The transposed matrix is:\n"); 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(" \n"); } } 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语言程序设计精髓 - 第十一章 指针的孪生兄弟 - 题目列表 | 大学网课搜题引擎