C语言程序设计(指针)期末单元测试与答案.docx
一、单项选择题1、假设有语句int *point, a = 4;和point = &a;下面均代表地址的一组选项是()。A.&*a, &a, * pointB.&a, &*point, pointC.*&point, *point, &aD.a, point, *&a正确答案:B2、假设有说明:long *p, a;那么不能通过scanf语句正确给输入项读入数据的程序段是()。A.scanf("%lcT, &a);B.*p = &a; scanf("%ld", p);C.scanf("%ld", p = &a);D.p = (long)malloc(8); scanf ("%ld", p);正确答案:B3、有以下程序:#include <stdio.h>int main()(int a = 1, b = 3, c = 5;int *pl = &a, *p2 = &b, *p = &c;*p = *pl*(*p2);printf("%dn”, c);return 0;)执行后的输出结果是()。A.lB.2C.3D.4正确答案:C4、假设有以下定义:inta10, *p = a;贝I p + 5表示()。A.元素a6的地址B.元素a5的值C.元素a 6的值D.元素a5的地址正确答案:D5、设有如下定义:int arr = 6, 7, 8, 9, 10; int *ptr; ptr = arr; *(ptr + 2) += 2;printf(,%d, %dnM, *ptr, *(ptr + 2);那么程序段的输出结果为()。A.6, 10B.7, 9C.6, 8D.8Z 10正确答案:A6、有以下程序:#include <stdio.h>int main()(char a = "abed", "ef", "gh", "ijk"int i;for (i = 0; i < 4; i+)printf("%c", *ai);return 0;程序运行后的输出结果是()。A.abedB.aegiC.abcdefghijkD.dfhk正确答案:B7、假设有以下说明和语句:intc,(*p);p = c;能正确引用c数组元素的是()。A,p + 1B.*(p + 3)C.*(p + l) + 3D.*(pO + 2)正确答案:D8、假设有定义:inta23那么对a数组的第i行j列元素地址的正确引 用为()。A.*(a + i)B.*(a+j)C.ai + jD.*(ai +j)正确答案:C9、有以下程序:include <stdio.h>int main()(int n, *p = NULL;p = &n;printf(Mlnput n : ”);scanf(”cT/ &p);printf(Moutput n : ”);printf("%dn,p);return 0;该程序试图通过指针p为变量n读人数据并输出,但程序有多处错误,以下语句正确的选项是()。A.scanf(“%cT/ &p);B.printf(,%dn,/ p);C.int n, *p = NULL;D.p = &n;正确答案:c10、下面程序段的运行结果是()。char s = "abcde" s += 2; printf("%cT, s);A.字符V的地址B.无确定的输出结果C.字符'dD.cde正确答案:A11、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。A.char s10; strcpy (s, ,abcdefgM);B.char t = ,abcdefgM, *s = t;C.char s10; s = ,labcdefgn;D.char s10 = ,abcdefgn;正确答案:C12、设已有定义:char *st = "how are you"以下程序段中正确的选项是()OA.char all; strcpy(a, st);B.char all, *p; strcpy(p = a + 1, &st4);C.char a , p; strcpy(p = &al, st + 2);D.char all; strcpy(+a, st);正确答案:B13、设pl和p2是指向同一个字符串的指针变量,c为字符变量,那么 以下不能正确执行的赋值语句是()。A.p2 = c;B.c = *pl*(*p2);C.pl = p2;D.c = *pl + *p2;正确答案:A14、假设有说明语句:char a = "It is mine" char *p = "It is mine"那么以下不正确的表达是()。A.a中只能存放10个字符B.p变量中存放的地址值可以改变C.a + 1表示的是字符t的地址D.p指向另外的字符串时,字符串的长度不受限制正确答案:A15、下面程序的运行结果是()。#include <stdio.h>#include <string.h>int main()(char *sl = "AbDeG”; char *s2 = ,AbdEgn; si += 2; s2 += 2;printf(,%dn,/ strcmp(sl, s2);return 0;A.负数B.OC.正数D.不确定的值正确答案:A