您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页宾馆酒店饭店暗访手册

宾馆酒店饭店暗访手册

来源:伴沃教育
第十章 指针

一、填空:

(1) 若有以下定义,则不移动指针p且通过指针p引用值为98的数组元素的表

达式是【1】。

int w[10]={23,,10,33,47,98,72,80,61}, *p=w;

(2) 以下程序通过函数指针p调用函数fun,请在填空栏内,写出定义变量p的

语句。

void fun(int *x,int *y) { „„ } main()

{ int a=10,b=20;

【2】 ; /定义变量p */ p=fun; p(&a,&b); „„ }

(3) 下列程序的输出结果是 【3】 。 void fun(int *n) { while( (*n)--);

printf(“%d”,++(*n)); }

main()

{ int a=100; fun(&a); }

(4) 以下程序的输出结果是【4】。 main()

{ char *p=\"abcdefgh \ long *q; q=(long*)p; q++;

r=(char*)q;

printf(\"%s\\n\

(5) 以下程序中,select 函数的功能是:在N行M列的二维数组中,选出一个最大

值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。 #define N 3 #define M 3

select(int a[N][M],int *n) { int i,j,row=1,colum=1;

for(i=0;iif(a[i][j]>a[row][colum])

{row=i;colum=j;}

*n= 【5】; return 【6】; }

main()

{ int a[N][M]={9,11, 23,6,1,15,9,17,20},max,n; max=select(a,&n);

printf(\"max=%d,line=%d\\n\ }

(6) 设有以下程序: 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的值为【7】 ,b的值为【8】 。 (7) 以下程序运行后的输出结果是 【9】 。 main()

{ char s[ ]=“9876”,*p;

for ( p=s ; pbr ;> p++) printf(“%s\\n”, p);

} 二、选择:

(1) 若有说明:int i, j=7,*p=&i;,则与i=j;等价的语句是

A)I=*P; B)*P=*&J; C)i=&j; D)i=**p; (2) 以下程序执行后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”,a); }

(3) 以下程序运行后,输出结果是

A cde B字符c的ASCLL码值 C 字符C的地址 D 出错 main()

{char *s=“abcde”; s=s+2;

print(“%ld 、n”,s);} (4) 下列程序的输出结果是

main()

{int a[5]={2,4,6,8,10},*P,**k; p=a;

k=&p;

printf(“%d”,*(p)); printf(“%d\\n”,**k); }

A)44 B)22 C)24 D)46 (5) .若有下面的程序片段:

int a[12]={0},*p[3],**pp,i; for(i=0;i<3;i++) p[i]=&a[i*4]; pp=p;

则对数组元素的错误引用是

A PP[0][1] B a[10] C P[3][1] D *(*(P2)2) (6) 有如下说明

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是

A) *P+9 B ) *(P+8)

C) *P+=9 D) P+8 (7) 有如下程序段 int *p,a=10,b=1 p=&a; a=*p+b;

执行该程序段后,a的值为 A) 12 B) 11

C) 10 D) 编译出错

(8) 对于基类型相同的两个指针变量之间,不能进行的运算是

A) < B) = C) + D) – (9) 有以下程序

main()

{ char str[]=\"xyz\ while(*ps) ps++;

for(ps--;ps-str>=0;ps--)

puts(ps); }

执行后输出结果是

A) yz<回车>xyz B) z<回车>yz

C) z<回车>yz<回车>xyz D) x<回车>xy<回车>xyz

(10) 若定义了以下函数: void f(„„) {„„

*p=(double *)malloc(10*sizeof( double)); „„ }

p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调 函数,则形参p的正确定义应当是

A) double *p B) float **p

C) double **p D) float *p (11) 下列程序的输出结果是

A) 非法 B)a[4]的地址 C)5 D)3 main()

{ char a[10]={9,8,7,6,5,4,3,2 ,1,0},*p=a+5; printf(“%d”,*--p); }

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

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); }

(13) 下面程序的输出结果是

A) 0 B) 1 C) 10 D) 9 main()

{ int a[ ]={1,2,3,4,5,6,7,8,9, 0,},*p; p=a;

printf(“%d\\n”,*p+9); }

(14) 若定义:int a=511,*b=&a;, 则printf(\"%d\\n\的输出结果为 A) 无确定值 B) a 的地址 C) 512 D) 511 (15) 以下程序的输出结果是 char cchar(char ch)

{ if(ch>=‘A’&&ch<=‘Z') ch=ch- ‘A'+‘a'; return ch; } main()

{ char s[]=\"ABC+abc=defDEF\ while(*p)

{ *p=cchar(*p); p++; }

printf(\"%s\\n\ }

A) abc+ABC=DEFdef B) abc+abc=defdef

C) abcaABCDEFdef D) abcabcdefdef

(16) 若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确

的语句是

A) p=2*(int*)malloc(sizeof(int)); B) p=(int*)malloc(2*sizeof(int)) ; C) p=(int*)malloc(2*2);

D) p=(int*)calloc(2,sizeof(int)) ; (17) 若有以下定义和语句: int s[4][5],(*ps)[5]; ps=s;

则对s数组元素的正确引用形式是 A) ps+1 B) *(ps +3)

C) ps[0][2] D) *(ps+1)+3 (18) 以下程序的输出结果是 #include #include main()

{ char b1[8]=\"abcdefg\ while (--pb>=b1) strcpy(b2,pb); printf(\"%d\\n\ }

A) 8 B) 3 C) 1 D) 7

(19) 在说明语句:int *f();中,标识符f代表的是 A) 一个用于指向整型数据的指针变量 B) 一个用于指向一维数组的行指针 C) 一个用于指向函数的指针变量 D) 一个返回值为指针型的函数名

(20) 若有说明:int i, j=2,*p=&i;,则能完成i=j 赋值功能的语句是 A) i=*p;

B) *p=*&j; C) i= &j; D) i=**p;

(21) 若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是

A)p=q; B)*p=*q; C)n=*q; D)p=n; (22) 有以下程序

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 (23) 有以下程序

#include main()

{ char*p=“abcde\\Ofghjik\\0”; printf(“%d\\n”,strlen(p)); }

程序运行后的输出结果是 A)12 B)15 C)6 D)5 (24) 有以下程序

int fa(int x) {return x*x;} int fb(intx)

{return x*x*x;}

int f(int(*f1)(),int(*f2)(),int x) {return f2(x)-f1(x);} main()

{ int i;

i=f(fa,fb,2);

printf(“%d\\n”,i); }

程序运行后的输出结果是 A)-4 B)1 C)4 D)8 (25) 有以下程序

void ss(char*s,char t) { while(*s) {if(*s==t)

*s=t-‘a’+’A’; s++; } }

main()

{char str1[100]=“abcddfefdbd” ,c=’d’; ss(str1,c);

printf(“%s\\n”,st r1); }

程序运行后的输出结果是

A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd (26) 有以下程序

#include”stido.h”

main()

{char*p,*q;

p=(char*)malloc(sizeof(char)*20); q=p;

scanf(“%s%s”,p,q); printf(“%s%s\\n”,p,q);

}

若从键盘输入:abcde f<回车>,则输出结果是: A)defdef B)abcdef C)abcd D)dd (27) 下面程序的运行结果是:

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); }

A) 33 B) 35 C)53 D)55 (28) 若有一些定义和语句

#include int a=4,b=3,*p,*q,*w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是

A) *q=0; B) w=p; C) *p=va; D) *p=*w; (29) 有以下程序

int *f(int *x,int *y) { if(*x<*y) return x; else return y; } main()

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

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

执行后输出结果是

A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8 (30) 有以下程序

main()

{ char *s[]={\"one\ p=s[1];

printf(\"%c,%s\\n\}

执行后输出结果是

A) n,two B) t,one C) w,one D) o,two (31) 有以下程序

main()

{ int x[8]={8,7,6,5,0,0},*s; s=x+3;

printf(\"%d\\n\ }

执行后输出结果是

A) 随机值 B) 0 C) 5 D) 6

(32) 以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#define N 10

void arrin(int x[N]) { int i=0; while(iscanf(\"%d\ }

在下划线处应填入的是

A) x+i B) &x[i+1] C) x+(i++) D) &x[i++] (33) 阅读以下函数

fun(char *sl,char *s2) { int i=0;

while(sl[i]==s2[i]&&s2[i]!='\\0') i++; return(sl[i]=='\\0'&&s2[i]=='\\0'); }

此函数的功能是

A) 将s2所指字符串赋给s1

B) 比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否

则函数值为0

C) 比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数

值为0

D) 比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否

则函数值为0

(34) 有以下程序

main()

{ int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i; pa=a;

for(i=0;i<3;i++) if(i<2)

pa[1][i]=pa[1][i]-1;

else pa[1][i]=1;

printf(\"%d\\n\

}

执行后输出结果是

A) 7 B) 6 C) 8 D) 无确定值 (35) 有以下程序

void fun(int *a,int i,int j) { int t; if (i{ t=a[i];a[i]=a[j];a[j]=t; fun(a,++i,--j); } } main()

{ int a[]={1,2,3,4,5,6},i; fun(a,0,5);

for(i=0;i<6;i++) printf(\"%d\}

执行后输出结果是

A) 6 5 4 3 2 1 B) 4 3 2 1 5 6 C) 4 5 6 1 2 3 D) 1 2 3 4 5 6 }

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

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

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

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