1. 首页 > 科技

C++删除重复字符? c语言指针删除重复字符

C++删除重复字符?c语言指针删除重复字符

C语言 删除重复字符

程序的基本思路是把输入的字符串放到a[100]字符组中,然后把a[100]中所有不重复的字符添加到b[100]中,间接完成对字符串中的重复字符的删除

#include<stdio.h>

void main()

{

char a[100],b[100];

//定义两个字符组,a[100]用来接收输入的字符串,b[100]用来存储不重复的字符

int pa=0,pb=0,i,flag;

scanf("%s",a);

//输入字符串到a[100]中,用scanf读入到a[100]中会自动在a[100]中字符串结束的地方加上'\0'

for(pa=0;a[pa]!='\0';pa++)

//for循环结束的条件是a[pa]==0,也就是从a[100]字符组中读取一个字符,直到没有

{

flag=1;

//flag是个标志符,当flag==1时,说明这个字符(下句中的a[pa])是第一次出现,应该加入到b[100]中

//如果flag==0,说明这个字符(下句中的a[pa])重复了,不应该加到b[100]中

for(i=0;i<pb;i++) if(b[i]==a[pa]) flag=0;

//把a[100]中读取的字符a[pa]与b[100]中的所有字符进行比较,如果b[i]==a[pa]

//说明这个字符已经在b[100]中了,也就是重复字符了,所有将flag=0,不能加入b[100]中

//如果a[pa]与b[100]中的所有字符都不相等,说明这个字条是第一次出现,应该加到b[100]

if(flag)

{

b[pb]=a[pa];pb++;

}

//如果flag==1,则将a[pa]这个字符加入到b[100]中,然后将pb加1

}

b[pb]='\0';

//当所有的不重复的字符都加入到b[100]中时,将b[100]中字符结束的地方加'\0',也就是b[pb]='\0'

//因为字符串都是民'\0'结尾的,所以加上这句

printf("%s\n",b);

//输出b[100]中的字符串,也就是删除过重复字符之后的了

}

怎样用c语言编写删除重复字符的程序

如果是简单的字符串判断,就蜗牛*赤焰 的方法就可以了~~~

就如蜗牛*赤焰提到的如果字符串中含有判断的字符就会有点麻烦了,这时候可以试一下有一个标志位来判断,标志输入的字符是否重复的,如下面的程序:(这样会比较麻烦,下面的程序只供参考,一般的用蜗牛*赤焰的就可以了:))

#include <stdio.h>

#include <vector>

struct detail

{

char c;

int exist;//标志位

};

std::vector<detail> statics;

int check(char c)

{

std::vector<detail>::iterator ite = statics.begin();

for (; ite != statics.end(); ite++)

{

if((*ite).c==c)return 0;//输入的字符已经存在

}

return 1;//输入的字符未存在

};

void main()

{

printf("请输入字符串:");

char c;

scanf("%c",&c);

while((int)c!=10)//获取用户输入

{

detail temp;

temp.c = c;

temp.exist = check(c);

statics.push_back(temp);

scanf("%c",&c);

}

std::vector<detail>::iterator ite = statics.begin();//打印非重复的字符

for (; ite != statics.end(); ite++)

{

if((*ite).exist)printf("%c",(*ite).c);

}

printf("\n");

}

求C语言代码,删除字符串中重复字符

#include

#include

#include

int main()

{

std::string str = "aabbcc";

std::cout << "Before: " << str << std::endl;

str.erase(std::unique(str.begin(), str.end()), str.end());

std::cout << "After: " << str << std::endl;

return 0;

}

纠错:C语言:删除重复字符。

没注释, 还不如重新写一个

#include 

#include 

int main()

{

char Letter[80];      //用于接收输入字符串 

int result[128]={0};  //相当于一张空的ASCII码表 

gets(Letter);          

int size=strlen(Letter);

int i,j=0;

for(i=0;i

{                        //字符串中的每个字符在空ASCII码表中打勾 

result[Letter[i]]=1;

}

memset(Letter,'\0',80);  //重置为空字符串 

for(i=0;i<128;i++)       //检索ASCII码表,逐个写入字符数组中 

{

if(result[i]==1)     //只要ASCII码表中打了勾的字符,就写入数组 

{

Letter[j++]=i;

}

}

printf("\n%s",Letter);

return 0;

}