指针问题

指针试题

一、            选择题

1、有以下程序
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%c/n",c1,c2);
}
程序运行后的输出结果是________
A
Ab    Baa     CAa      DBb

2、有以下程序
#include
main()
{ printf("%d/n",NULL); }
程序运行后的输出结果是_______
A
0   B1   C-1    DNULL没定义,出错

3、下列选项中正确的语句组是________
A
char s[8]; s={"Beijing"};    B
char *s; s={"Beijing"};
C
char s[8]; s="Beijing";      Dchar *s; s="Beijing";

4、已定义以下函数
fun(int *p)
{ return *p; }
该函数的返回值是________
A
)不确定的值                  B)形参p中存放的值

C
)形参p所指存储单元中的值    D)形参p的地址值

5、若有定义:int *p[3];,则以下叙述中正确的是________
A
)定义了一个基类型为int的指针变量p,该变量具有三个指针

B
)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C
)定义了一个名为*p的整型数组,该数组含有三个int类型元素
D
)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素

6、以下程序中函数scmp的功能是返回形参指针s1s2所指字符串中较小字符串的首地址
#include
#include
char  *scmp(char *s1, char *s2)
{ if(strcmp(s1,s2)<0)
return(s1);
else return(s2);
}
main()
{ int i; char string[20], str[3][20];
for(i=0;i<3;i++) gets(str[i]);
strcpy(string,scmp(str[0],str[1])); /*
库函数strcpy对字符串进行复制*/
strcpy(string,scmp(string,str[2]));
printf("%s/n",string);
}
若运行时依次输入:abcdabbaabc三个字符串,则输出结果为
_____
A
abcd  Babba  Cabc  Dabca

7、有以下程序段
main()
{ int a=5, *b, **c;
c=&b; b=&a;
……
}
程序在执行了c=&b;b=&a;语句后,表达式:**c的值是_________
A
)变量a的地址 B)变量b中的值 C)变量a中的值 D)变量b的地址

8、有以下程序
#include
main()
{ char str[ ][20]={"Hello","Beijing"},*p=str[0];
printf("%d/n",strlen(p+20));
}
程序运行后的输出结果是_______
A
0   B5    C7    D20

9、已定义以下函数
fun(char *p2, char *p1)
{ while((*p2=*p1)!='/0'){ p1++;p2++; } }
函数的功能是 ___________
A
)将p1所指字符串复制到p2所指内存空间
B
)将p1所指字符串的地址赋给指针p2
C
)对p1p2两个指针所指字符串进行比较

D
)检查p1p2两个指针所指字符串中是否有'/0'

10、有以下程序
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 B6 C9 D2

11、有以下程序_______
main()
{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&*(p+i)%2) {k=k+*(p+i); i++;}
printf("%d/n",k);
}
执行后输出的结果是

A) 58    B) 56    C) 45     D) 24
12
、有以下程序
main()
{ char a,b,c,*d;
a='/'; b='/xbc';
c='/0xab'; d="/0127";
printf("%c%c%c%c/n",a,b,c,*d);
}
编译时出现错误,以下叙述中正确的是
A)
程序中只有a='/';语句不正确
B) b='/xbc';
语句不正确

C) d="/0127";
语句不正确

D) a='/';
c='/0xab';语句都不正确

执行后输出的结果是_______
13
、若有如下定义char a[],*p=a,则对a数组元素的正确引用是________

A)*&a[5]      B)a+2       C)*(p+5)      D)*(a+2)

你可能感兴趣的:(指针问题)