《全国计算机等级考试二级C语言指针测试题(共8页).doc》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言指针测试题(共8页).doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上一、选择题(1)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是AA)*p=*q; B)p=q; C)*p=&n1; D)p=*q;(2)若有定义:int x=0, *p=&x;,则语句printf(%dn,*p);的输出结果是BA)随机值 B)0 C)x的地址 D)p的地址(3) 以下定义语句中正确的是CA) char a=Ab=B; B) float a=b=10.0; C) int a=10,*b=&a; D) float *a,b=&a;(4) 有以下程序Cmain() int a=7,b=8,*p,*q
2、,*r;p=&a;q=&b;r=p; p=q;q=r;printf(%d,%d,%d,%dn,*p,*q,a,b);程序运行后的输出结果是A) 8,7,8,7 B) 7,8,7,8 C) 8,7,7,8 D) 7,8,8,7(5) 设有定义:int a,*pA=&a;以下scanf语句中能正确为变量a读入数据的是AA) scanf(“%d”,pA) ;B) scanf(“%d”,a) ;C) scanf(“%d”,&pA) ; D) scanf(“%d”,*pA) ;(6) 设有定义:int n=0,*p=&n,*q=&p;则以下选项中,正确的赋值语句是DA) p=1; B) *q=2; C)
3、 q=p; D) *p=5;(7) 有以下程序A 以下是引用片段: void fun(char *a, char *b) a=b; (*a)+; main () char c1=A, c2=a, *p1, *p2; p1=&c1; p2=&c2; fun(p1,p2); printf(“%c%cn”,c1,c2); 程序运行后的输出结果是A) Ab B) aa C) Aa D) Bb(8) 若程序中已包含头文件stdio.h, 以下选项中,正确运用指针变量的程序段是DA) int *i=NULL; B) float *f=NULL;scanf(%d,i); *f=10.5;C) char t=
4、m, *c=&t; D) long *L;*c=&t; L=0;(9) 有以下程序A 以下是引用片段: #inc1ude main() printf(%dn, NULL); 程序运行后的输出结果是A) 0 B) 1 C) -1 D) NULL没定义,出错(10) 已定义以下函数Cfun (int *p) return *p;该函数的返回值是A) 不确定的值 B) 形参p中存放的值C) 形参p所指存储单元中的值 D) 形参p的地址值(11) 下列函数定义中,会出现编译错误的是BA) max(int x, int y,int *z) B) int max(int x,y) *z=xy ? x:y;
5、 int z ;z=xy? x:y;return z ; C) max (int x,int y) D) int max(int x,int y) int z; return(xy?x:y) ; z=xy?x:y; return(z);(12) 有以下程序段C 以下是引用片段: main() int a=5, *b, *c; c=&b; b=&a; 程序在执行了c=&b;b=&a;语句后,表达式:*c的值是A) 变量a的地址 B) 变量b中的值C) 变量a中的值 D) 变量b的地址(13) 有以下程序D 以下是引用片段: main() char a,b,c,*d; a=; b=xbc; c=0
6、xab; d=017; print(%c%c%cn,a,b,c,*d); 编译时出现错误,以下叙述中正确的是A) 程序中只有a=;语句不正确B) b=xbc;语句不正确C) d=0127;语句不正确D) a=;和c=0xab;语句都不正确(14) 若有以下定义和语句 以下是引用片段: #include int a=4,b=3,*p,*q,*w; p=&a; q=&b; w=q; q=NULL;则以下选项中错误的语句是AA) *q=0; B) w=p; C) *p=a; D) *p=*w;(15) 有以下程序 以下是引用片段: int *f(int *x,int *y) if(*x*y) ret
7、urn x; else return y; main() int a=7,b=8,*p=&a,*q=&b,*r; r=f(p,q);printf(“%d,%d,%d”,*p,*q,*r); 执行后输出结果是BA) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8(16) 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是DA) p=q; B) *p=*q; C) n=*q; D) p=n;(17) 有以下程序D 以下是引用片段: void fun(char *c,int d) *c=*c+1;d=d+1; printf(“%c,%c,”,*c,d); ma
8、in() char a=A,b=a; fun(&b,a); printf(“%c,%cn”,a,b); 程序运行后的输出结果是A)B,a,B,a B) a,B,a,B C) A,b,A,b D) b,B,A,b(18) 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是AA) scanf(%d%d%d,&a,&b,d); B) scanf(%d%d%d,&a,&b,&d);C) scanf(%d%d%d,a,b,d); D) scanf(%d%d%d,a,b,*d);(19) 若定义:int a=511,*b=&a;, 则printf(%d
9、n,*b);的输出结果为DA) 无确定值 B) a的地址 C) 512 D) 511(20) 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是BA) i=*p; B) p*=*&j; C) i=&j; D) i=*p;(21) 下列程序段的输出结果是AA) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 以下是引用片段: void fun(int *x, int *y) printf(“%d %d”, *x, *y); *x=3; *y=4; main() int x=1,y=2; fun(&y,&x); printf(“%d %d
10、”,x, y); (22) 下列程序的运行结果是BA) 6 3 B) 3 6 C) 编译出错 D) 0 0 以下是引用片段: void fun(int *a, int *b) int *k; k=a; a=b; b=k; main() int a=3, b=6, *x=&a, *y=&b; fun(x,y); printf(“%d %d”, a, b); (23) 有如下程序段Bint *p,a=10,b=1p=&a; a=*p+b;执行该程序段后,a的值为A) 12 B) 11 C) 10 D) 编译出错(24) 有以下函数Bchar fun(char *p) return p; 该函数的返
11、回值是A) 无确切的值 B) 形参p中存放的地址值B) 一个临时存储单元的地址 D) 形参p自身的地址值(25) 请选出正确的程序段CA) int *p; B) int *s, k; scanf(%d,p); *s=100; C) int *s, k; D) int *s, k; char *p, c; char *p, e; s=&k; s=&k; p=&c; p=&c; *p=a; s=p; *s=1; (26) 若有以下定义和语句:Ddouble r=99, *p=&r;*p=r;则以下正确的叙述是A) 以下两处的*p含义相同,都说明给指针变量p赋值B) 在double r=99, *p
12、=&r;中,把r的地址赋值给了p所指的存储单元C) 语句*p=r;把变量r的值赋给指针变量pD) 语句*p=r;取变量r的值放回r中(27) 以下程序运行后,a的值是CA) 4 B) 1 C) 0 D) 运行时出错,a无定值 以下是引用片段: main() int a,k=4,m=6,*p1=&k,*p2=&m; a=p1=&m; printf(%dn,a); (28) 有以下程序C 以下是引用片段: int fun(int x,int y,int *cp,int *dp) *cp=x+y; *dp=x-y; main() int a, b, c, d; a=30; b=50; fun(a,b
13、,&c,&d); printf(%d,%dn, c, d); 输出结果是A) 50,30 B) 30,J50 C) 80,-20 D) 80,20(29) 若有定义和语句:Dint *pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf(%dn,*p,*pp);则输出结果是:A)10,20 B)10,10 C)20,10 D)20,20(30) 以下程序的输出结果是A 以下是引用片段: #include subl(char a,char b) char c; c=a;a=b;b=c; sub2(char* a,char b) char c; c=*a;*a=b;b=c;
14、 sub3(char* a,char*b) char c; c=*a;*a=*b;*b=c; char a,b; a=A;b=B;sub3(&a,&b);putchar(a);putchar(b); a=A;b=B;sub2(&a,b);putchar(a);prtchar(b); a=A;b=B;sub1(a,b);putchar(a);putchar(b); A) BABBAB B) ABBBBA C) BABABA D) BAABBA(31) 若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是BA) I= *P; B) *P=*&J; C) i=&j; D) i=*
15、*p;(32) 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确招待此功能的函数是DA)funa(int *x,int *y) B) funb(int x,int y)int *p; int t;*p=*x;*x=*y;*y=*p; t=x;x=y;y=t;C) func(int *x,int *y) D) fund(int x,int y)*x=*y;*y=*x; *x=*x+*y; *y=*x-*y; *x=*x-*y; 二、填空题:(1) 有以下程序 以下是引用片段: void f( int y,int *x) y=y+*x; *x=*x+y; main( ) int
16、 x=2,y=4; f(y,&x); printf(“%d %dn”,x,y); 执行后输出的结果是【1】 。8 4(2) 下面程序的运行结果是: 2 。35 以下是引用片段: void swap(int *a,int *b) int *t; t=a; a=b; b=t; main() int x=3,y=5,*p=&x,*q=&y; swap(p,q); printf(“%d%dn”,*p,*q); (3) 设有以下程序: 以下是引用片段: main() int a, b, k=4, m=6, *p1=&k, *p2=&m; a=pl=&m; b=(*p1)/(*p2)+7; printf(
17、“a=%dn”,a); printf(“b=%dn”,b); 执行该程序后,a的值为【3】0 ,b的值为【4】7 。(4) 下列程序的输出结果是 【5】0 。 以下是引用片段: void fun(int *n) while( (*n)-); printf(“%d”,+(*n); main() int a=100; fun(&a); (5) 以下函数用来求出两整数之和,并通过形参将结果传回,请填空。 以下是引用片段: void func(int x,int y, 【6】 z) int * *z=x+y; (6) 函数 void fun(float *sn, int n)的功能是:根据以下公式计算
18、S=1-1/3+1/5-1/7+,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。 以下是引用片段: void fun( float *sn, int n) float s=0.0, w, f=-1.0; int i=0; for(i=0; i=n; i+) f=【7】 * f; -1 w=f/(2*i+1); s+=w; 【8】 =s; *sn (7) 以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。 以下是引用片段: exchange(int *x, int *y) int t; t=*y; *y= 【9】 ; *x *x= 【10】 ; t
19、 (8) 下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。int add(int x,int y, 【11】 z) int * 【12】 =x+y; *z专心-专注-专业答案:一、选择题01) A 02) B 03) C 04) C 05) A06) D 07) A 08) D 09) A 10) C11) B 12) C 13) D 14) A 15) B16) D 17) D 18) A 19) D 20) B21) A 22) B 23) B 24) B 25) C26) D 27) C 28) C 29) D 30) A31) B 32) D二、填空题(1) 8 4 (2) 3 5 (3) 0 (4) 7 (5) 0 (6) int * (7) 1 (8) *sn (9) *x (10) t (11) int *(12) *z