填空题
以下程序的功能是;从键盘接收一行字符串,首先按照字符的ASCII码值从小到大对输入的字李串进行排序,然后从排序后的字符串中删除重复的字符并输出删除操作后的字符串。
[程序] (4分)
#include
#include
char *fun(char *s)
{
char *p,*q,*r,c;
for(p=s; 1(19) 2;p++){ //升序排序
for(q=r=p;*q;q++)
if(*r>*q)
3(20) 4;
if(r!=p){
c=*r;
*r=*p;
*p=c;
}
}
for(p=s;*p;p++){ //从字符串中删除重复的字符
for(q=p;*p==*q;q++);
r=p+1;
while(*q) 5(21) 6 ; //非重复字符向前移
*r=0;
}
return s;
}
void main(void)
{
char str[200],s[200];
cout<<"输入一行字符串:";
cin.getline(str,200);
strcpy(s,str);
7(22) 8 ;
cout<<"输入字符串为:"<
cout<<"结果字符串为:"<
}
【正确答案】
1、(19)*p
(20)r=q
(21)*r++=*q++ 或 *r=*q,r++,q++
(22)fun(s)
【答案解析】