9
8
7
6
第1题:
有如下类定义:
classA{
char*a;
public:
A( ):a(O){}
A(char*aa){//把aa所指字符串拷贝到a所指向的存储空间
a=__;
strcpy(a,aa);
}
~A( ){delete[]a;}
};
横线处应填写的表达式是( )。
A.Newchar[strlen(aa)+1]
B.char[strlen(aa)+1]
C.char[strlen(aa)]
D.newchar[sizeof(aa)-1]
第2题:
阅读下列算法说明和算法,将应填入(n)处的语句写在对应栏内。
【说明】
本程序可以将字符串s1中出现的所有s2子串替换成s3,形成一个新串,但不破坏字符串s1。
【代码】
include<stdio.h>
include<stdlib.h>
include<string.h>
char*replace(char *s1, char *s2,char *s3)
{ char *p, *q, *r, *s; int |2,|3, i=0;
|2=strlen(s2);
|3=strlen(s3);
p=s1;
while((p=strstr(p,s2))!=NULL)
{ i++; /* 统计s2串出现的次数*/
(1);
}
i=(2);
s=r=(char*)malloc(i); /*分配动态内存存放新字符串*/
p=s1;
while(1)
{ q=strstr(p, s2); /* s2串是否在s1中出现,q是首次出现的位置*/
if(q!=NULL)
{ i=q-p;
(3);
r+=i;
(4);
r+=|3;
p=q+|2; /*将指向s1串的指针移到s2子串出现的位置后,
为下一次循环做好准备*/
}
else /*q为空,表示剩余的s1串中已经没有s2*/
{ (5);
break; /*终止循环*/
}
}
return(s); /*返回指向所形成的新串的指针*/
}
void main()
{ char *a="sabcababde", *b="ab", *c="efg", *d;
d=replace(a, b, c); printf("result=%s\n", d); free(d);
}
第3题:
有以下类定义:
class A{
char*a;
public:
A( ):a(0){ }
A(char*aA) { //把aa所指字符串复制到a所指的存储空间
a=______;
strcpy(a,aA) ;
}
~A( ){delete[ ]a;}
};
画线处应填写的表达式是
A.new char[strlen(aA)+1]
B.char[strlen(aA)+1]
C.char[strlen(aA)]
D.new char[sizeof(aA)-1]
第4题:
使用VC6打开考生文件夹下的工程test31_3。此工程包含一个test31_3.cpp,其中定义了可以动态分配的字符串类,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)定义类tstring的私有数据成员length和p,它们分别是血型的数据和字符型的指针,其中length表示一个字符串的长度。请在注释“//**1**”之后添加适当的语句。
(2)完成类tstring的构造函数,使length等于字符串m的长度,并申请由指针p指向的length长的字符型空间,将m所指的字符串复制到该空间。请在注释“//**2**”之后添加适当的语句。
(3)完成类tstring的成员函数strcopy(tstringn)的定义,该函数将对象n的值(包括字符串长度和字符串本身)复制给调用该函数的对象(对象n的字符串长度任意)。请在注释“//**3**”之后添加适当的语句。
(4)完成类tstring的友元函数strlink(tstring m,tstring n)的定义,该函数将可动态分配的字符串类对象m和n的字符串成员连接在一起(对象m和n的字符串长度任意),并返回该串。请在注释“//**4**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
程序输出结果如下:
hello the world!
源程序文件test31_3.cpp清单如下:
include<iostream.h>
include<conio.h>
include <string.h>
class tstring
{
public:
//** 1 **
tstring(char *m)
{
//** 2 **
strcpy(p,m);
}
void strcopy(tstring n);
friend char *strlink(tstring m,tstring n);
};
void tstring::strcopy(tstring n)
{
//** 3 **
char *q;
q=new char[length];
strcpy(q,tstring::p);
q=strcat(tstring::p,n.p);
tstring::p=q;
tstring::length=strlen(tstring::p);
}
char *strlink(tstring m, tstring n)
{
int length=strlen(m.p)+strlen(n.p);
char *p;
//** 4 **
strcpy(p,m.p);
p=strcat(p,n.p);
return p;
}
void main ( )
{
tstring a("hello ");
tstring b("the world");
tstring c("!");
a.strcopy(b);
cout<<strlink(a,c)<<end1;
}
第5题:
以下函数实现的功能是void fun (char *s){ char *p,*q,temp; p=s; q=s+ strlen(s)-1; while (p<q) { temp=*p; *p=*q; *p=temp; p++; q--; }}
A.将一个字符串首尾颠倒
B.计算字符串的长度
C.统计字符串中的空格个数
D.将字符串中的小写字母变成大写字母
第6题:
语句Char(*P)说明了( )。
A.P是指向函数的指针,该函数返回一个Char型数据
B.P是指向Char型数据的指针变量
C.P是指向数组的指针变量
D.P是一个函数名,该函数的返回值是指向Char型数据的指针
第7题:
变量s的定义为“char *s="Hello world!";”,要使变量p指向s所指向的同一个字符串,则应选取(47)。
A.char *p=s;
B.char *p=&s;
C.char *p;p=*s;
D.char *p; p=&s;
第8题:
假定s被定义为指针类型char *的变量,初始指向的字符串为"Hello world!",若要使变量p指向s所指向的字符串,则p应定义为()。
Achar *p=s;
Bchar *p=&s;
Cchar *p;p=*s;
Dchar *p; p=&s;
第9题:
const char *p说明了p是指向字符串常量的指针。
第10题:
char *p=s;
char *p=&s;
char *p;p=*s;
char *p; p=&s;
第11题:
第12题:
to Beijing!
you to Beijing!
Welcome you to Beijing!
Beijing!
第13题:
假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:除了尾部的,:号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容应当是ABCDEFG******。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include<conio. h>
include<stdio. h>
void fun(char *a, char *p)
{
}
main ( )
char s[81],*t;
printf ("Enter a string: \n ");
gets (s);
t=s;
while (*t)
t++;
t--; /*指针t指向字符串尾部* /
while (*t== '*' )
t--; /*指针t指向最后一个字母*/
fun (s, t);
printf ("The string after deleted: \n");
puts (s);
}
第14题:
有如下类定义:
class A{
char *a;
public:
A():*(0){}
A(char * aA){//把aa所指字符串拷贝到a所指向的存储空间
a=________;
strcpy(a,aA);
}
~A(){delete[]a;}
};
横线处应填写的表达式是
A.new char[strlen(aA)+1]
B.char[strlen(aA)+1]
C.char[strlen(aA)]
D.new char[sizeof(aA)-1]
第15题:
以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如,str所指字符串为Hello!,c中的字符为e,则函数返回字符串ello!的首地址。若str所指字符串为空或不包含c中的字符,则函数返回NULL,请填空。char *fun(char *str,char c){ int n=0; char *p=str; if(p!=NULL) while(p[n]!=c&&p[n]!=’\0’) n++; if(p[n]==’\0’) return NULL; return();}
第16题:
若要用下面的程序片段使指针变量p指向一个存储字符型变量的动态存储单元,则应填入; char * p;p= ( ) malloc (sizeof (char));
A.char
B.char *
C.(* char)
D.(char *)
第17题:
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
[说明1]
函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。
[C函数1]
void fun(char*W,char x,int*n)
{ int i,P;
p=0;
w[*n]=x;
while(x>w[p]) (1) ;
for(i=*n,i>p;i--)w[i]=(2);
w[p]=x;
++*n;
}
[说明2]
函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。
[C函数2]
void revstr(char*s)
{ char*p,c;
if(s==NULL)return;
p=(3); /*p指向字符串s的最后一个有效字符*/
while(s<p){ /*交换并移动指针*/
C=*s;
(4)=*p;
(5)=c;
}
}
第18题:
已定义以下函数 fun(char*p2,char*p1) { while((*p2=*pl)!='\0'){p1++;p2++;}} 函数的功能是
A.将p1所指字符串复制到p2所指内存空间
B.将p1所指字符串的地址赋给指针p2
C.对p1和p2两个指针所指字符串进行比较
D.检查p1和p2两个指针所指字符串中是否有'\0'
第19题:
A、将p1所指字符串复制到p2所指内存空间中
B、将p1 所指字符串的地址赋给指针 p2
C、对p1和p2两个指针所指字符串进行比较
D、检查p1和p2两个指针所指字符串中是否有‘\0’
第20题:
执行char*p=new char(’a’)操作后,p所指向的数据对象的值为()。
第21题:
char*const p表明p是一个指针,它只能指向一个字符串常量。
第22题:
9
8
7
6
第23题:
对
错
第24题:
对
错