今天给各位分享c语言中删除重复的知识,其中也会对c语言删除重复字符并排序进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、C语言 删除重复字符2、如何去除重复字符c语言3、C语言 删除所有相同值的元素4、C语言中删除重复字节5、c语言删出重复数据问题?
C语言 删除重复字符
程序的基本思路是把输入的字符串放到a[100]字符组中,然后把a[100]中所有不重复的字符添加到b[100]中,间接完成对字符串中的重复字符的删除
#includestdio.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;ipb;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语言
#includestdio.h
int main(void)
{
char s[100];
int i, j, n, k;
printf(“请输入一串有重复字符的字符串:\n”);
gets(s);
for (n = 0; s[n] != ‘\0’; n++) ;
for (i = 0; i n; i++)
{
for (j = k = i + 1; j n; j++)
if (s[j] != s[i])
s[k++] = s[j];
s[k] = ‘\0’;
}
printf(“去掉重复字符后结果为:\n”);
puts(s);
}
C语言 删除所有相同值的元素
#include stdio.h
#define N 1000
#define FLAG 0x80000000 /*特殊标记,用最小的负数表示*/
void main( )
{
int r[N], length, i, j;
scanf(“%d”, length);
for(i = 0; i length; i++)
scanf(“%d”, r[i]);
for(i = 0; i length – 1; i++)
{
if(r[i] != FLAG)
{
for(j = i + 1; j length; j++)
if(r[j] == r[i]) r[j] = FLAG; /*遇到重复值,则先用特殊标记覆盖它*/
}
}
for(i = 0; r[i] != FLAG; i++); /*找到第一个特殊标记*/
for(j = i + 1; j length;) /*删除数列中的特殊标记*/
{
if(r[j] != FLAG) r[i++] = r[j++];
else j++;
}
length = i; /*修改删除重复值后的数列的长度*/
for(i = 0; i length; i++)
printf(“%-4d”, r[i]);
}
C语言中删除重复字节
for(p=str;*p;p++)
{
for(q=p+1;*q==*p;q++)
strcpy(p,q);
}
问题应该出现在上边这段
代码
上,你的那个例子如果多写一个e的话就能输出adefqsw
只要你输入的
字符
中有一个
字母
重复了三次,那么你的
程序
就只会删掉一个
for(p=str;*p;p++)
{
q
=
p
+
1;
for(q;*q;q++)
{
if(*q==*p)
{
strcpy(p,q);
–q;
}
}
}
你的
语法
我看的不是很懂(毕竟C语言咱刚入门),所以我改了一下,上边的代码可以修复你的两个e的问题
本人猜测应该是三个e中,第二个e被HX了,这是q指向了第三个e
后面
的元素,所以会出现漏一个的情况,所以执行完HX之后要把q“拉”回来
一上只是个人观点,
我的代码
不是很高效,建议你再优化一下
c语言删出重复数据问题?
问题不是很明白,不过 数组从下标0开始所以j应该从0开始,而不是1
应该为:
for (j=0;ji;j++)
{
l=0;//循环后要初始化!!!注意这里
for (;l=j;l++)
{
if (shuzu[l] == shuzu[j])
{
IsAdd=1;
break;
}
}
if (IsAdd == 0) {
newshuzu[j] = shuzu[j];
}
}
c语言中删除重复的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言删除重复字符并排序、c语言中删除重复的信息别忘了在本站进行查找喔。