指针经典练习题含答案版一Word文档格式.doc
《指针经典练习题含答案版一Word文档格式.doc》由会员分享,可在线阅读,更多相关《指针经典练习题含答案版一Word文档格式.doc(4页珍藏版)》请在冰豆网上搜索。
5)
通过指向指针的变量pp,将k的值增加一倍的语句是*(*pp)*=2;
4.当定义某函数时,有一个形参被说明成int*类型,那么可以与之结合的实参类型可以是int型指针、int型数组等。
4.以下程序的功能是:
将无符号八进制数字构成的字符串转换为十进制整数。
例如,输入的字符串为:
556,则输出十进制整数366。
请填空。
45*8
#include<
stdio.h>
main()
{char*p,s[6];
intn;
p=s;
gets(p);
n=*p-'
0'
;
while(*++p!
='
\0'
)//先++,后*
n=n*8+*p-'
printf("
%d\n"
n);
}
二.选择题(22分)
1.以下count函数的功能是统计substr在母串str中出现的次数。
intcount(char*str,char*substr)
{inti,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;
returnnum;
①A)str[i]==substr[i]B)str[i]!
=‘\0’
C)str[i]==‘\0’D)str[i]>
substr[i]
②A)j=i+1B)j=iC)j=i+10D)j=1
③A)kB)k++C)k+1D)++k
2.以下Delblank函数的功能是删除字符串s中的所有空格(包括Tab、回车符和换行符)。
voidDelblank(char*s)
{inti,t;
charc[80];
for(i=0,t=0;
A①;
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+iB)*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)sD)*s
②A)*tB)tC)t--D)*t++
③A)returnsB)returntC)returnpD)returnp-t
4.下列程序的输出结果是B。
#include<
main()
{int**k,*a,b=100;
a=&
b;
k=&
a;
printf(“%d\n”,**k);
A)运行出错B)100C)a的地址D)b的地址
5.下列程序的输出结果是D。
fun(int*a,int*b)
{int*w;
*a=*a+*a;
*w=*a;
*a=*b;
*b=*w;
{intx=9,y=5,*px=&
x,*py=&
y;
fun(px,py);
printf(“%d,%d\n”,x,y);
A)出错B)18,5C)5,9D)5,18
6.若定义了以下函数:
voidf(……)
{……
p=(double*)malloc(10*sizeof(double));
……
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是A。
A)double*p B)float**pC)double**p D)float*p
三.编程题
1.编写函数实现,计算字符串的串长。
(10分)
intmyLength(char*ps)
{
intLength=0;
while(*ps)
{
Length++;
ps++;
}
returnLength;
2.编写函数实现,计算一个字符在一个字符串中出现的次数。
(20分)
string.h>
intOccur(char*s,charc);
intOccur(char*s,charc)
intcount=0;
while(*s)
if(*s==c)
count++;
s++;
returncount;
3.有n个人围成一圈,顺序排号。
由用户从键盘输入报数的起始位置,从该人开始报数(计数从0开始),凡报数为3的倍数出圈。
问最后剩下的是几号?
(28分)
intmain()
int*arr;
intn,start;
cout<
<
"
请输入总共人数N(位置编号从开始):
"
cin>
>
n;
请输入开始位置(不大于N):
start;
arr=newint[n+1];
for(inti=0;
i<
n+1;
i++)
arr[i]=0;
intj=0,count=0;
for(inti=1;
=n;
{
if(arr[i]==0)
{
if(j%3==0)
{
arr[i]=1;
count++;
}
j++;
if(count==n-1)
break;
}
if(i==n)
i=0;
}
for(inti=1;
if(arr[i]==0)
{
cout<
endl;
break;
}
return0;