文档库 最新最全的文档下载
当前位置:文档库 › 指针经典练习题(含答案版)一

指针经典练习题(含答案版)一

指针经典练习题(含答案版)一
指针经典练习题(含答案版)一

指针一.填空题(20分)

1. 指针变量是把内存中另一个数据的地址作为其值的变量。

2. 能够直接赋值给指针变量的整数是 0。

3. 如果程序中已有定义:int k;

1)定义一个指向变量k的指针变量p的语句是 int* p = &k; 。

2)通过指针变量,将数值6赋值给k的语句是 *p = 6; 。

3)定义一个可以指向指针变量p的变量pp的语句是 int ** pp; 。

4)通过赋值语句将pp指向指针变量p的语句是 pp = &p; 。

5)通过指向指针的变量pp,将k的值增加一倍的语句是 *(*pp)*= 2; 。

4. 当定义某函数时,有一个形参被说明成int *类型,那么可以与之结

合的实参类型可以是int型指针、 int型数组等。

4. 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请填空。45*8

#include

main( )

{ char *p,s[6]; int n; p=s; gets(p); n=*p-'0';

while( *++p != '\0') //先++ ,后*

n=n*8+*p-'0';

printf("%d \n",n);

}

二.选择题(22分)

1. 以下count函数的功能是统计substr在母串str中出现的次数。

int count(char *str,char *substr)

{ int i,j,k,num=0;

for(i=0; ①B ;i++)

{for( ②B ,k=0;substr[k]==str[j];k++,j++)

if(substr[ ③C ]==?\0?)

{num++;break;}

}

return num;

}

①A) str[i]==substr[i] B) str[i]!= 0

C) str[i]==…\0? D) str[i]>substr[i]

②A) j=i+1 B) j=i C) j=i+10 D) j=1

③A) k B) k++ C) k+1 D) ++k

2. 以下Delblank函数的功能是删除字符串s中的所有空格(包括Tab、回车符和换行符)。

void Delblank(char *s)

{ int i,t;

char c[80];

for(i=0,t=0; A ①;i++)

if(!isspace( D②))c[t++]=s[i];

c[t]=…\0?;

strcpy(s,c);

}

①A) s[i] B) !s[i] C) s[i]=...\0? D) s[i]== 0

②A) s+i B) *c[i] C) *(s+i)=…\0? D) *(s+i)

3. 以下conj函数的功能是将两个字符串s和t连接起来。

char *conj(char *s,char *t)

{ char *p=s;

while(*s) ①B ;

while(*t)

{*s= A ②;s++;t++;}

*s=…\0?;

C ③;

}

①A) s-- B) s++ C) s D) *s

②A) *t B) t C) t-- D) *t++

③A) return s B) return t C) return p D) return p-t

4. 下列程序的输出结果是 B 。

#include

main()

{int **k,*a,b=100;a=&b; k=&a;printf(“%d\n”,**k);}

A)运行出错 B) 100 C) a的地址 D) b的地址

5. 下列程序的输出结果是 D 。

#include

fun(int *a,int *b)

{int *w;

*a=*a+*a;

*w=*a;

*a=*b;

*b=*w;}

main()

{int x=9,y=5,*px=&x,*py=&y;fun(px,py);printf(“%d, %d\n”,x,y);}

A)出错B) 18, 5 C) 5, 9 D) 5, 18

6. 若定义了以下函数:

void f(……)

{……

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

……

}

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

A) double *p B) float **p C) double **p D) float *p 三.编程题

2. 编写函数实现,计算一个字符在一个字符串中出现的次数。(20分)

#include

#include

3. 有n个人围成一圈,顺序排号。由用户从键盘输入报数的起始位置,从该人开始报数(计数从0开始),凡报数为3的倍数出圈。问最后剩下的是几号?(28

相关文档