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

admin2019-05-29  26

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数convert(char*des,char*str)的功能是去掉字符串str中相同的字母,并将处理后的结果存到des所指的字符串中。例如:
    输入:This is great!
    输出:Tllis grea!
    注意:不能修改程序的其他部分,只能补充fun()函数。
1   #include<iostream.h>
2  #define MAXLEN 1024
3  void  convert(char* des,char*str)
4  {
5
6  }
7  void main()
8  {
9    char sour[MAXLEN];
10    char dest[MAXLEN];
11    cout<<’’Please input a string:’’<<end1;
12    cin.getline(sour,MAXLEN);
13    convert(dest,sour);
14    cout<<dest<<end1;
15    return;
16  }

选项

答案1 int 1,j; 2 bool ToAdd; 3 des[0]=0; 4 for(i=0;str[i]!=NULL;i++) 5 { 6 ToAdd=true; 7 for(j=0; des[j]!=NULL; j++) 8 { 9 if(str[i]==des[j]) 10 { 11 ToAdd=false;//des数组中已存在该元素,将标志位设置为假,说明不用再添加 12 break;//des数组中已存在该元素,跳出循环 13 } 14 } 15 if(ToAdd)//des数组中不存在,添加进来 16 { 17 des[j]=str[i]; 18 des[j+1]=0; 19 } 20 }

解析 convert(char*des,char*str)函数的功能是去掉字符串str中相同的字母,并将处理后的结果存到des所指的字符串中。原来的字符串存放在str指向的数组中,新字符串存放在des指向的数组中,因此可逐个读取str指向的数组里面的字符,把不同的字符放入des指向的数组中,即每次读str指向的数组一个字符,就在des指向的数组里面查找是不是已经有该字符了,如果已经有了则不添加进来,反之则把该字符加入到des指向的数组中。
    (1)由审题分析可知,需要两重循环,外层循环不断读取str中的元素,内循环在des数组中查找读到的str中的字符,如果找到了des数组中己存在该元素不需要添加,如果没找到则添加到des数组中。
    (2)在外循环体内,先设置bool型的标志变量ToAdd为真,假设在des数组中str不存在,然后再内循环中,用str和des[j]比较,如果相同说明已经存在了,将ToAdd设置为假,des[j]后面的元素不需要再比较了,跳出内循环。
    (3)通过判断ToAdd可知,str是否存在des数组中,如果ToAdd为真,则说明des数组中不存在str,将str添加到des数组中。
转载请注明原文地址:https://jikaoti.com/ti/VXA0FFFM
0

相关试题推荐
最新回复(0)