使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数convert(char*des,char*str)的功能是去掉字符串str中相同的字母,并将处理后的结果存到des所指的字符串中。 例如: 输入:Thi

admin2016-10-28  27

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数convert(char*des,char*str)的功能是去掉字符串str中相同的字母,并将处理后的结果存到des所指的字符串中。
例如:
输入:This is great!
输出:This grea!
注:卷:不能修改程序的其他部分,只能补充fun()函数。
#include<iostream.h>
#define MAXLEN1024
void convert(char*des,char*str)
{

}
void main()
{
char sour[MAXLEN];
char dest[MAXLEN];
cout<<"Pleaseinput a string:"<<endl:
cin.getline(sour,MAXLEN);
convert(dest,sour);
cout<<dest<<endl;
return;
}

选项

答案int i,j; bool ToAdd; des[0]=0; for(i=0;str[i]!=NULL;i++) { ToAdd=true; for(j=0;des[j]!=NULL;j++) { if(str[i]==des[j]) { ToAdd=false;//des数组中已存在该元素,将标志位设置为假,说明不用再添加 break;//des数组中已存在该元素,跳出循环 } } if(ToAdd)//des数组中不存在添加进来 { des[j]=str[i]; des[j+1]=0; } }

解析 (1)由审题分析可知,需要两重循环,外层循环不断读取str中的元素,内循环在des数组中查找读到的str中的字符,如果找到了des数组中已存在该元素不需要添加,如果没找到则添加到des数组中。
(2)在外循环体内,先设置bool型的标志变量ToAdd为真,假设str不存在在des数组中,然后再内循环中,用str和des[j]比较,如果相同说明已经存在了,将ToAdd设置为假,des[j]后面的元素不需要再比较了,跳出内循环。
(3)通过判断ToAdd可知,str是否存在des数组中,如果
转载请注明原文地址:https://kaotiyun.com/show/w7Np777K
0

最新回复(0)