1.
改错题(20分)
【题目】
以下程序的功能是:根据字符串str中是否包含子串substr,决定如何将字符串str1插入到str的不同位置。插入方法是:如果str中包含子串substr,则将str1插入到str中首次出现的子串substr之后;否则,插入到str的尾部。
正确程序的输出如下:
原字符串:aabcd12345 子字符串:abcd 插入字符串:ABC
新字符串:aabcdABC12345
含有错误的源程序如下:
#include <iostream.h>
#include <string.h>
char *find(char *str,char *substr)
{
unsigned lent=strlen(str);
for(char *p1=str,*p2=substr;strlen(p1)>=len;p1++){
for(unsigned i=0;i<len;i++)
if(p1[i]!=p2[i])
break;
if(i>len)
return p1+len;
}
return 0;
}
char *insert(char *str,char *substr,char *str1)
{
char p=find(str,substr);
if(p)
strcat(str,str1);
else{
char *tmp=new char[strlen(str)+strlen(str1)+1];
strcpy(tmp,str1)
strcat(tmp,p);
strcpy(p,tmp);
delete []tmp;
}
return str;
}
void main()
{
char *str=new char[80],substr[]="abcd",str1[]="ABC";
strcpy(str,"aabcdl2345"); ’
cout<<"原字符串:"<<str<<"子字符串:"<<substr<<"插入字符串:"<<str1<<endl;
str=insert(str,substr,str1);
cout<<"新字符串:"<<str<<endl;
delete []str;
}
【要求】
1.把上述程序录入到文件myfa.cpp中,根据题目要求及程序中语句之间的逻辑关系对。程序中的错误进行修改。程序中的注解可以不输入。
2.改错时,可以修改语句中的一部分内容,增加少量的变量说明、函数原型说明或编译预处理命令,但不能增加其他语句,也不能删除整条语句。
3.改正后的源程序文件myfa.cpp必须放在T盘根目录下,供阅卷用。