dele函数的功能:对给定的字符串,去掉重复的字符与字符串中的空格后,按照字符ASCII码顺序从小到大排序后输出。
函数接口定义:
void dele(char arr[]);
裁判测试程序样例:
#include<stdio.h> #include"string.h"
void dele(char arr[]);
int main(void)
{
char strA[81];
gets(strA);
dele(strA);
puts(strA);
return 0;
} /* 请在这里填写答案 */
输入样例:
abcd efg abc fH 3 2 1
输出样例:
123Habcdefg
问题1:“arr”没有全部赋值为'\0',导致后部分多出一节
问题2:开始采用指针的方法,也出现1的问题
问题3:思路不清晰,没有先除去空格,没有与“字符串压缩”联系起来,方法没有贯通!
问题4:q[j]没有赋值为'\0'
void dele(char arr[])
{
char p[81]={'\0'},q[81]={'\0'},tem;
strcpy(p,arr);
strcpy(arr,q);
int i=0,j=0,k;
while(p[i]!='\0')
{
if(p[i]!=' ')
{
q[j]=p[i];
j++;
}
i++;
}
q[j]='\0';
for(i=0;i<j-1;i++)
{
for(k=0;k<j-i-1;k++)
{
if(q[k]>q[k+1])
{
tem=q[k];
q[k]=q[k+1];
q[k+1]=tem;
}
}
}
i=0;
j=0;
while(q[i]!='\0')
{
while(q[i]==q[i+1])
{
i++;
}
arr[j]=q[i];
i++;
j++;
}
arr[j]='\0';
}