第七章 指针
选择题
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",*p);的输出结果是______
A)随机值 B)0 C)x的地址 D)p的地址
3、有以下程序
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",*p,*q,a,b);
}
程序运行后的输出结果是______。
A)8,7,8,7 B)7,8,7,8 C)8,7,7,8 D)7,8,8,7
4、若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是____
A)*p=&a; scanf(“%lf”,p); B)*p=&a; scanf(“%f”,p);
C) p=&a; scanf(“%lf”,*p); D)p=&a; scanf(“%lf”,p);
5、若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是______。
A)int *i=NULL; B)float *f=NULL;
scanf("%d",i); *f=10.5;
C)char t='m',*c=&t; D)long *L;
*c=&t; L='\0';
6、若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是___ ___。
A)字符串长度为0pb=&x; B)pb=x; C)*pb=&x; D)*pb=*x
7、若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为
A) 无确定值 B) a的地址 C) 512 D) 511
8、若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是________
A) I= *P; B) *P=*&J; C) i=&j; D) i=* *p;
9、若有说明:int i,j=7,*p=&i;则与i=j;等价的语句是__ ____。
A)i=*p; B)*p=*&j; C)i=&j; D)i=**p;
10、若有一些定义和语句
#include <stdio.h>
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;
11、有以下程序
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
12、有以下程序
int a=2;
int f(int *A)
{return (*A) ++;}
main( )
{ int s=0;
{ int a=5;
s+=f(&a) ;
}
s+=f(&a) ;
printf(“%d\n”,s);
}
执行后输出结果是_____
A) 10 B) 9 C) 7 D) 8
13、下列程序段的输出结果是_____
A) 2 14 3 B) 1 21 2 C) 1 23 4 D) 2 11 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);
}
14、下列程序的运行结果是_____
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);
}
15、若定义了以下函数:
void f(……)
{……
*p=(double *)malloc( 10*sizeof( double));
……
}
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是______
A) double *p B) float **p C) double **p D) float *p
16、设有以下语句,则 不是对a数组元素的正确引用,其中0≤i<10。
int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;
A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))
17、若有以下定义和语句:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是____
A) *p B) a[10] C) *a D) a[p-a]
18、有以下程序段
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是____
A) 5 B) 6 C) 8 D) 9
19、当调用函数时,实参是一个数组名,则向函数传送的是____
A) 数组的长度 B) 数组的首地址
C) 数组每一个元素的地址 D) 数组每个元素中的值
20、若有定义:int aa[ 8];。则以下表达式中不能代表数组元aa[1]的地址的是_____
A) &aa[0]+1 B) &aa[1] C) &aa[0]++ D) aa+1
21、阅读以下函数
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
22、以下选项中,不能正确赋值的是___ ___。
A)char s1[10];s1="chest";
B)char s2[]={'C','t','e','s','t'};
C)char s3[20]="Chest";
D)char *s4="Chest\n";
23、有以下程序
main( )
{ char a[]=”abcdefg”,b[10]=”abcdefg”;
printf(“%d %d\n”,sizeof(A) ,sizeof(B) );
}
执行后输出结果是______
A) 7 7 B) 8 8 C) 8 10 D) 10 10
24、以下程序段的输出结果是:______。
char s[]="\\141\141abc\t";
printf("%d\n",strlen(s));
A)9 B)12 C)13 D)14
25、以下不能正确进行字符串赋初值的语句为______。
A)char str[5]="good!" B)char str[]="good!"
C)char *str="good!" D)char str[5]={'g','o','o','d'}
26、若有以下定义:int t[3][2]; 能正确表示t数组元素地址的表达式是______。
A)&t[3][2] B)t[3] C)t[1] D)*t[2]
27、有以下程序
main()
{ int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++) p[i]=i+1;
printf("%d\n",a[1][2]);
}
程序运行后的输出结果是______。
A)3 B)6 C)9 D)2
28、下面程序的输出是______
A) 23 B) 26 C) 33 D) 36
int aa[3][3]={{2},{4},{6}};
main()
{ int i, * p=&aa[0][0];
for(i=0; i<2;i++)
{ if(i==0)
aa[i][i+1]=*p+1;
else
++p;
printf("%d",*p);}
}
29、有以下程序
int f(int b[][4])
{ int i,j,s=0;
for(j=0;j<4;j++)
{ i=j;
if(i>2) i=3-j;
s+=b[i][j];
}
return s;
}
main()
{ int a[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}};
printf("%d\n",f(a));
}_______
A)12 B)11 C)18 D)16
30、执行以下程序段后,m的值为_____
int a[2][3]={ {1,2,3},{4,5,6} };
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论