char a[]="ab cd ef gh ij"//这里面想隔的空格键自己随便输入的!
1: 如何去除a[]中的空格键然后输出为 "abcdefghij"
char *b="asbsddggeeeff"
2:如何去除相邻的相同字母(是相邻的相同字母只保留一个)
即输出为"asbsdgef"
我也写个
[CODE]void trim(char * sz)
{
int i = 0, j = 0;
while(sz[j])
{
sz[i++] = sz[j++];
if (' ' == sz[i - 1])
i -- ;
}
sz[i] = '\0';
}
void remove(char * sz)
{
int i = 0, j = 0;
while(sz[j])
{
sz[i++] = sz[j++];
if (sz[j] == sz[i - 1])
i -- ;
}
sz[i] = '\0';
}[/CODE]
看看这个行不?能不能评价一下 我是个新手
#include<iostream.h>
#include<string.h>
class a
{
public:
a()
{
c=NULL;
c=new char[1];
strcpy(c,'\0');
}
a(char *p)
{
c=new char[strlen(p)+1];
strcpy(c,p);
}
~a()
{
delete []c;
}
void deletespace()
{
int m=strlen(c);
int l=0;
char *k=new char[m+1];
for(int i=0;i<m;i++)
{
if(c[i]!=' ')
{
k[l]=c[i];
l=l+1;
}
}
for(int w=l;w<m;w++)
{
k[w]='\0';
}
cout<<k<<endl;
delete []k;
}
void deleteagain()
{
int n=strlen(c);
char *q=new char[n+1];
int r=0;
for(int j=0;j<n;j++)
{
if(c[j]!=c[j+1])
{
q[r]=c[j];
r=r+1;
}
}
for(int b=r;b<n;b++)
{
q[b]='\0';
}
cout<<q<<endl;
delete []q;
}
private:
char *c;
};
void main(void)
{
a a1("sdfd df");
a a2("dfdfdfffdff");
a1.deletespace();
a2.deleteagain();
}
引用:great6789的程序!
呵呵,今天很有空,无聊啊,随便 写了两个
//我对你的程序有两个疑问??
int trim(char* a)//去空格
{
int i=0;
int m=0;//保存空格数
int l;
while(*(a+i)!='\0')
{
if(*(a+i)==' ')
{
m++;
l=i;
while(*(a+l)!='\0')
{
*(a+l)=*(a+l+1);
l++;
}
continue;
}
i++;
}
return m;??返回m是什么呢?它可不能返回无空格键的字符串!
}
void DeleteSame(char* a)//去除相邻的相同字母
{
int l;
int i=0;
while(a[i]!='\0')
{
if(a[i]==a[i+1])
{
l=i;
while(a[l]!='\0')
{
a[l]=a[l+1];
l++;
}
continue;
}
i++;
}
} //我真不知道这个程序他既然无返回值,也的有个cout<<...呀!不然主程序如何应调用呀!
[此贴子已经被作者于2006-8-16 10:04:23编辑过]