第7章 指针
一、选择题
1、变量的指针,其含义是指变量的(B) A)值 B)地址 C)名 D)一个标志 2、若有以下定义: int x[10], *pt=x;
则对x数组元素的正确引用是(B)
A) *&x[10] B) *(x+3) C) *(pt+10) D) pt+3
3、若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是(B) A)*p B)x[5] C)*(p+1) D)*x
4、设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是(D) A)float *p=1024; B)int *p=(float x); C)float p=&x; D)float *p=&x; 5、有以下程序 main(){
int n,*p=NULL; *p=&n;
printf(“Input n:”); scanf(“%d”,&p); printf(“output n:”); printf(“%d\\n”,p); }
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是(A) A)int n,*p=NULL; B)*p=&n; C)scanf(“%d”,&p) D)printf(“%d\\n”,p); 6、若有说明:int *p,m=5,n;以下正确的程序段是(D) A)p=&n; B)p=&n;
scanf(“%d”,&p); scanf(“%d”,*p); C)scanf(“%d”,&n); D)p=&n; *p=n; *p=m;
7、若有语句int * p1, a=4;和p1=&a;下面均代表地址的一组选项是(C) A)a, p1, *&a B)&*a, &a, *p1 C)* &p1, * p1, &a D)&a, &* p1, p1 8、下面程序的输出结果是(D) main(){
int a=25,*p; p=&a;
printf(\ }
A)23 B)24 C)25 D)26 9、下列函数的功能是(A) int fun (char *x){ char *y=x; while(*y++); return(y-x-1); }
1
A)求字符串的长度 B)比较两个字符串的大小
C)将字符串x复制到字符串y C)将字符串x连接到字符串中y后面 10、设有如下定义
char *aa[2]={\则以下说法正确的是(C)
A)aa数组的元素的值分别是“abcd”和“ABCD”。
B)aa是指针变量,它指向含有两个数组元素的字符型一维数组。
C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址。 D)aa数组的两个元素中各自存放了字符'a'和'A'的地址。 11、若有以下定义和语句
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示a数组元素的表达式是(B) A)*p B)a[10] C)*a D)a[p-a] 12、下面定义不正确的是(B)
A)int *p; B)int p[n]; C)int *p(); D)int (*p)(); 13、有下面程序(假设int 类型为2个字节) main() {
int a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a;
printf(\printf(\
该程序有两个printf函数,如果第一个printf输出的是194,则第二个printf输出的结果是(D) A)203 B)204 C)1a4 D)1a6 14、下面程序的输出结果是(D) main(){
char p1[10]=\strcpy(str+2,strcat(p1,p2)); printf(\
A)xyzabcABC B)zabcABC C)yzabcABC D)xyabcABC 15、有以下程序 main(){
char str[]=\while(*ps) ps++;
for(ps--;ps-str>=0;ps--) puts(ps);} 执行后输出结果是(C)
A) yz<回车>xyz B) z<回车>yz
C) z<回车>yz<回车>xyz D) x<回车>xy<回车>xyz 16、下面程序的输出结果是(C) main(){
int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1];
for(x=0;x<3;x++)
2
y+=*(p+x);
printf(\ }
A)17 B)18 C)19 D)20 17、以下程序输出的结果是(A) void fun1(char *p){ char *q; q=p;
while(*q!=?\\0?){ (*q)++;q++;} }
main(){
char a[]={“Program”},*p; p=&a[3]; fun1(p);
printf(“%s\\n”,a); }
A)Prohsbn B)Prphsbn C)Progsbn D)Program 18、设有如下定义: int (*ptr)();
则以下叙述中正确的是(C)。
A)ptr是指向一维数组的指针变量 B)ptr是指向int型数据的指针变量
C)ptr是指向函数的指针,该函数返回一个int型数据
D)ptr是一个函数名,该函数的返回值是指向int型数据指针 19、若有以下定义:int a[2][3]={2,4,6,8,10,12}; 则以下描述不正确的是( )
A)*(a+1)为元素a[1][0]的指针 B)a[1]+1为元素a[1][1]的指针 C)*(a+1)+2为元素a[1][2]的指针 D)*a[1]+2的值是12 20、以下程序的运行结果是(A) #define NULL 0 main()
{int a[]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p=a+5,*q=NULL; *q=*(p+5);
printf(\ }
A)运行后报错 B)6 6 C)6 11 D)5 5 21、若有以下说明:
int w[3][4]={{0,1},{2,4},{5,8}}; int (*p)[4]=w;
则数值为4的表达式是(D)
A)*w[1]+1 B)p++,*(p+1) C)w[2][2] D)p[1][1] 22、以下程序的运行结果是(D) main()
3
{ char a[]=\ char *p1,*p2; int i; p1=a; p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i)) printf(\
A)gm B)rg C)or D)ga 23、有以下程序
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(\}
程序运行后的输出结果是(A) A)Ab B)aa C)Aa D)Bb
24、若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是(D) A)int *i=NULL; B) float *f=NULL; scanf(\ *f=10.5; C)char t='m', *c=&t; D) long *L; *c=&t; L='\\0'; 25、已定义以下函数 fun(int *p) { return *p; }
该函数的返回值是(C )
A)不确定的值 B)形参p中存放的值 C)形参p所指存储单元中的值 D)形参p的地址值 26、若有定义:int *p[3];,则以下叙述中正确的是(B)
A)定义了一个基类型为int的指针变量p,该变量具有三个指针
B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针 C)定义了一个名为*p的整型数组,该数组含有三个int类型元素
D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素 27、已定义以下函数 fun(char *p2, char *p1)
{ while((*p2=*p1)!='\\0'){ p1++;p2++; } } 函数的功能是(A)
A)将p1所指字符串复制到p2所指内存空间 B)将p1所指字符串的地址赋给指针p2
C)对p1和p2两个指针所指字符串进行比较
4
D)检查p1和p2两个指针所指字符串中是否有'\\0' 28、有以下程序 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(\执行后输出结果是(B)
A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8
29、有以下程序,假设程序编译,连接后生成可执行文件my.exe main( int argc, char *argv[]){ int i;
printf(“argc=%d\\n”,argc); for(i=1;i
如在命令行中打入:this is a big table。输出结果为:( )
A) is a big table B)big talbe C)a big table D) this is a big table 30、有以下程序
void f(char p[][10], int n ) /* 字符串从小到大排序 */ {
char t[10]; int i,j;
for(i=0;i if(strcmp(p[i],p[j])>0) { strcpy( t, p[i]); strcpy(p[i],p[j]); strcpy(p[i],t); } } main( ){ char p[5][10]={“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd”}; f(p,5); printf(“%d\\n”,strlen(p[0])); } 则输出结果为(A) A) 3 B) 0 C) 5 D) 2 5 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库第7章 指针(答案)在线全文阅读。
相关推荐: