使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数convert(cha*des,char*str)实现的功能是:
(1)如果字符串最后面有空格,则全部删除;
(2)转换后的数据放到des,并且指针作为返回值返回。
注意:不能修改程序的其他部分,只能补充convert()函数。
1 #include< iostream.h >
2 #include< ctype.h >
3 #define MAXLEN 1024
4 char* convert(char*des,char*str)
5 {
6
7 }
8 void main()
9 {
10 char dest[MAXLEN];
11 char*string=''abc def '';
12 cout< <  string< < ''< --''< < end1;
13 cout< < convert(dest,string)< < ''< --''< < end1;
14 return;
15 }
【正确答案】1 int length=0;
2 int i;
3 for(1ength=0;str[1ength] !=NULL;length++); //求数组长度
4 length--;//下标从0~len-1,下标减1表示最后一个字符的下标值
5 for(i=length;i >=0;i--)
6 {
7 if(str[i]!='') //判断结尾是否有空格,从后往前判断直到不是不是空格了跳出循环
8 break;
9 }
10 for(length=0;length< =i;length++)
11 {
12 des[length]=str[1ength];//从前面开始,逐个将str中的字符拷贝到des数组中,不含最后面的空格
13 }
14 des[length]=NULL;//最后一个字符为NULL
15 return des;
【答案解析】函数convert(cha*des,char*str)实现的功能是将字符串最后面有空格删除,并将转换后的数据放到des,返回指针,可以将字符串最后空格前的所有字符拷贝到des中,关键是确定下标从那开始到最后都是空格。
(1)利用循环将字符串str的长度求出,然后从字符串的尾部开始检索,用循环从字符串的最后一个字符往前面逐个检查,如果该字符不是空格则退出循环,这个时候就找到了最后一个非空格字符所在的下标位置,然后从下标0开始到该位置,逐个将str里面字符拷贝到des中。
(2)程序当中使用了3次循环:计算长度、寻找最后一个非空格字符和拷贝三个过程。