【答案解析】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;
}
}
答案考生文件夹
[解析] convert(char* des,char* str)函数的功能是去掉字符串str中相同的字母,并将处理后的结果存到des所指的字符串中。原来的字符串存放在str指向的数组中,新字符串存放在des指向的数组中,因此可逐个读取str指向的数组里面的字符,把不同的字符放入des指向的数组中,即每次读str指向的数组一个字符,就在des指向的数组里面查找是不是已经有该字符了,如果已经有了则不添加进来,反之则把该字符加入到des指向的数组中。
(1)由审题分析可知,需要两重循环,外层循环不断读取str中的元素,内循环在des数组中查找读到的str中的字符,如果找到了des数组中已存在该元素不需要添加,如果没找到则添加到des数组中。
(2)在外循环体内,先设置bool型的标志变量ToAdd为真,假设str[i]不存在在des数组中,然后再内循环中,用str[i]和des[j]比较,如果相同说明已经存在了,将ToAdd设置为假,des[j]后面的元素不需要再比较了,跳出内循环。
(3)通过判断ToAdd可知,str[i]是否存在des数组中,如果ToAdd为真,则说明des数组中不存在str[i],将str[i]添加到des数组中。