您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页c语言-指针选择提32道+填空题12道

c语言-指针选择提32道+填空题12道

来源:华佗小知识
(1)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是() A)*p=*q; B)p=q; C)*p=&n1; D)p=*q;

(2)若有定义:int x=0, *p=&x;,则语句printf(\"%d\\n\的输出结果是() A)随机值 B)0 C)x的地址 D)p的地址 (3) 以下定义语句中正确的是()

A) char a='A'b='B'; B) float a=b=10.0; C) int a=10,*b=&a; D) float *a,b=&a; (4) 有以下程序() main()

{ int a=7,b=8,*p,*q,*r; p=&a;q=&b; r=p; p=q;q=r;

printf(\"%d,%d,%d,%d\\n\ }

程序运行后的输出结果是

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读入数据的是() A) scanf(“%d”,pA) ; B) scanf(“%d”,a) ; C) scanf(“%d”,&pA) ; D) scanf(“%d”,*pA) ;

(6) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是() A) p=1; B) *q=2; C) q=p; D) *p=5; (7) 有以下程序() 以下是引用片段:

void fun(char *a, char *b) { a=b; (*a)++; } main ()

{ char c1=\"A\ p1=&c1; p2=&c2; fun(p1,p2); printf(“%c%c\\n”,c1,c2); }

程序运行后的输出结果是

A) Ab B) aa C) Aa D) Bb

(8) 若程序中已包含头文件stdio.h, 以下选项中,正确运用指针变量的程序段是() A) int *i=NULL; B) float *f=NULL; scanf(\"%d\ *f=10.5; C) char t=\"m\ D) long *L; *c=&t; L=„\\0‟; (9) 有以下程序() 以下是引用片段: #inc1ude main()

{ printf(\"%d\\n\ 程序运行后的输出结果是

A) 0 B) 1 C) -1 D) NULL没定义,出错 (10) 已定义以下函数() fun (int *p) { return *p;} 该函数的返回值是

A) 不确定的值 B) 形参p中存放的值 C) 形参p所指存储单元中的值 D) 形参p的地址值 (11) 下列函数定义中,会出现编译错误的是() A) max(int x, int y,int *z) B) int max(int x,y) { *z=x>y ? x:y; } { int z ;

z=x>y? x:y; return z ; } C) max (int x,int y) D) int max(int x,int y) { int z; { return(x>y?x:y) ; } z=x>y?x:y; return(z); }

(12) 有以下程序段() 以下是引用片段: main()

{ int a=5, *b, **c; c=&b; b=&a; …… }

程序在执行了c=&b;b=&a;语句后,表达式:**c的值是 A) 变量a的地址 B) 变量b中的值 C) 变量a中的值 D) 变量b的地址 (13) 有以下程序() 以下是引用片段: main() { char a,b,c,*d; a=‟\\‟; b=„\\xbc‟; c=„\\0xab‟; d=\"\\017\"; print(\"%c%c%c\\n\ }

编译时出现错误,以下叙述中正确的是 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; 则以下选项中错误的语句是A

A) *q=0; B) w=p; C) *p=a; (15) 有以下程序 以下是引用片段: int *f(int *x,int *y)

D) *p=*w; { if(*x<*y) return 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); }

执行后输出结果是()

A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8 (16) 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是() A) p=q; B) *p=*q; C) n=*q; D) p=n; (17) 有以下程序() 以下是引用片段: void fun(char *c,int d) { *c=*c+1;d=d+1; printf(“%c,%c,”,*c,d); } main()

{ char a=‟A‟,b=‟a‟;

fun(&b,a); printf(“%c,%c\\n”,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的语句是()

A) scanf(\"%d%d%d\ B) scanf(\"%d%d%d\ C) scanf(\"%d%d%d\ D) scanf(\"%d%d%d\ (19) 若定义:int a=511,*b=&a;, 则printf(\"%d\\n\的输出结果为() A) 无确定值 B) a的地址 C) 512 D) 511 (20) 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是()

A) i=*p; B) p*=*&j; C) i=&j; D) i=**p; (21) 下列程序段的输出结果是()

A) 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”,x, y); }

(22) 下列程序的运行结果是()

A) 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) 有如下程序段() int *p,a=10,b=1 p=&a; a=*p+b;

执行该程序段后,a的值为

A) 12 B) 11 C) 10 D) 编译出错 (24) 有以下函数() char fun(char *p)

{ return p; } 该函数的返回值是

A) 无确切的值 B) 形参p中存放的地址值

B) 一个临时存储单元的地址 D) 形参p自身的地址值 (25) 请选出正确的程序段() A) int *p; B) int *s, k; scanf(\"%d\ *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) 若有以下定义和语句:() double r=99, *p=&r; *p=r;

则以下正确的叙述是

A) 以下两处的*p含义相同,都说明给指针变量p赋值

B) 在\"double r=99, *p=&r;\"中,把r的地址赋值给了p所指的存储单元 C) 语句\"*p=r;\"把变量r的值赋给指针变量p D) 语句\"*p=r;\"取变量r的值放回r中 (27) 以下程序运行后,a的值是()

A) 4 B) 1 C) 0 D) 运行时出错,a无定值 以下是引用片段: main()

{ int a,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; printf(\"%d\\n\

}

(28) 有以下程序() 以下是引用片段:

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,&c,&d); printf(\"%d,%d\\n\ } 输出结果是

A) 50,30 B) 30,J50 C) 80,-20 D) 80,20 (29) 若有定义和语句() int **pp,*p,a=10,b=20;

pp=&p;p=&a;p=&b;printf(\"%d\\n\ 则输出结果是:

A)10,20 B)10,10 C)20,10 D)20,20 (30) 以下程序的输出结果是() 以下是引用片段: #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;}

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;等价的语句是() A) I= *P; B) *P=*&J; C) i=&j; D) i=* *p;

(32) 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确招待此功能的函数是()

A)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 x=2,y=4; f(y,&x);

printf(“%d %d\\n”,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%d\\n”,*p,*q); }

(3) 设有以下程序: 以下是引用片段: main()

{ int a, b, k=4, m=6, *p1=&k, *p2=&m; a=pl==&m; b=(*p1)/(*p2)+7; printf(“a=%d\\n”,a); printf(“b=%d\\n”,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)的功能是:

根据以下公式计算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 }

(8) 下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。

int add(int x,int y, 【11】 z) int * { 【12】 =x+y;} *z

答案: 一、选择题 1.A 11.B 21.A 31.B 2.B 12.C 22.B 32.D 3.C 13.D 23.B 4.C 14.A 24.B 5.A 15.B 25.C 6.D 16.D 26.D 7.A 17.D 27.C 8.D 18.A 28.C 9.A 19.D 29.D 10.C 20.B 30.A 二、填空题 (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

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务