#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=0a[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=0i<pbi++) 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]中的字符串,也就是删除过重复字符之后的了
}
#include <iostream>
using namespace std
bool Removeduplicate(int data[],int &lon,int a)//去掉数组中为a的数据
int main()
{
int l1=10
int l2=10
int a1[10]={10,10,12,26,56,26,30,30,20,10}
int a2[10]={10,12,56,10,20,22,22,33,33,30}
int j=0,i
while(j<=l1)
{
if(Removeduplicate(a1,l1,a2[j])) //如果有删除就说明两数组中有有相同数据a2[j]
{
Removeduplicate(a2,l2,a2[j])//如果a2[j]数据是重复数据就删除
}
else
{
j++ //如果没有重复数据就判断下一个数据
}
}
cout<<"l1="<<l1<<endl
for(i=0i<l1i++)
cout<<a1[i]<<" "
cout<<endl
cout<<"l2="<<l2<<endl
for(i=0i<l2i++)
cout<<a2[i]<<" "
cout<<endl
return 0
}
bool Removeduplicate(int data[],int &lon,int a) //去掉数组中为a的数据
{
int mak=0 //标志位
for(int i=0i<loni++)
{
if(data[i]==a)//找到相同数据就删除
{
for(int j=ij<lon-1j++)
{
data[j]=data[j+1] //删除相同数据
}
i--
lon--
mak++ //标志有进位就说明有删除
}
}
if(mak>0) //有删除就返回真
return true
else
return false
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)