标题:DONE删去a中的重复字符
只看楼主
wentaiyou
Rank: 2
等 级:论坛游民
帖 子:68
专家分:17
注 册:2004-12-3
得分:0 

觉的VBC写的挺好的.
如果改成这样应该更容易看一些.不知道改成这样可有什么不对的地方.
#include<stdio.h>
#include<string.h>
void main()
{
char a[100];
int i,j;
printf("请输入一个字符串:");
scanf("%s",a);
for (i=0;i<strlen(a);i++)
{
for (j=i+1;j<=strlen(a);j++)
{
if (a[i]==a[j])
{
a[j]='\0';
strcat(a,&a[j+1]);
j=j-1;
}
}

}
printf("%s\n",a);
}

[此贴子已经被作者于2007-9-1 23:44:56编辑过]


假如回到过去.我能做些什么? 还是和现在这样有时间没事情?
2007-09-01 23:39
zzxwill
Rank: 1
等 级:新手上路
帖 子:398
专家分:0
注 册:2007-8-15
得分:0 
回复:(cyhbp)#include void main()...

#include <stdio.h>
void main()
{
int i,j=0;
char a[100];
char b[75]={0}; /*字符对应的ASCII码的十进制 0=48 9=57 A=65 Z=90 a=97 z=122 122-48+1=75*/
printf("请输入一个字符串:");
scanf("%s",a);

for (i=0;i<strlen(a);i++)
if (b[a[i]-48]!='1')
{ b[a[i]-48]='1';
a[j]=a[i];j++; }
a[j]='\0';

printf("%s",a);
getch();

}
老大,if (b[a[i]-48]!='1')
{ b[a[i]-48]='1';
这一块不理解.你写了解释/*字符对应的ASCII码的十进制 0=48 9=57 A=65 Z=90 a=97 z=122 122-48+1=75*/
但我还是不懂.请讲一下嘛?谢谢~~


一分耕耘,一分收获。
2007-09-02 14:01
mayi2007
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-19
得分:0 
以下是引用vbc在2007-8-31 21:09:39的发言:
#include<stdio.h>
#include<string.h>
void main()
{
char a[100];
char c;
int i,j;
printf("请输入一个字符串");
scanf("%s",a);
for (i=1;i<strlen(a);i++)
{
c=a[i-1];
for (j=i+1;j<=strlen(a);j++)
{
if (c==a[j-1])
{
a[j-1]='\0';
strcat(a,&a[j]);
j=j-1;
}
}

}
printf("%s\n",a);
}

这个错误..输入a a a a jifij ji ji j iabc

2007-09-02 15:29
wentaiyou
Rank: 2
等 级:论坛游民
帖 子:68
专家分:17
注 册:2004-12-3
得分:0 
以下是引用mayi2007在2007-9-2 15:29:19的发言:

这个错误..输入a a a a jifij ji ji j iabc

#include<stdio.h>
#include<string.h>
void main()
{
char a[100];
int i,j;
printf("请输入一个字符串:");
gets(a); //把printf("%s".a)换成gets(a)
for (i=0;i<strlen(a);i++)
{
for (j=i+1;j<=strlen(a);j++)
{
if (a[i]==a[j])
{
a[j]='\0';
strcat(a,&a[j+1]);
j=j-1;
}
}

}
printf("%s\n",a);
}
这样就可以了



不过小弟也明白gets()和scanf("%s",a)的区别,

[此贴子已经被作者于2007-9-2 16:10:54编辑过]


假如回到过去.我能做些什么? 还是和现在这样有时间没事情?
2007-09-02 16:04
cyhbp
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-8-27
得分:0 
回复:(zzxwill)

#include <stdio.h>
void main()
{
int i,j=0;
char a[100];
char b[91]={0}; /*初始化数组b,字符对应的ASCII码的十进制 0=48 z=122 外加一个空格32 122-32+1=91*/
printf("请输入一个字符串:");
gets(a); /* scanf忽略空格以后的字符 */
for (i=0;i<strlen(a);i++)
if (b[a[i]-32]!='1') /*如果第一个字符a[0]是空格,那么a[0]的值是32,b[a[i]-32]=b[32-32]=b[0]。*/
{ b[a[i]-32]='1'; /* 执行此句后,b[0]=='1',如果字符串中还有空格,那将进不了if语句,从而过滤重复字符。*/
a[j]=a[i];j++; }
a[j]='\0';

printf("%s",a);
getch();

}

/*b[a[i]-32]代表值为32到122字符在数组b中的位置,如48的字符为b[48-32]=b[16],数组b中各元素的值不是'0'就是'1',以确定该字符是否出现过。*/


2007-09-04 18:20
多维数组
Rank: 1
等 级:新手上路
帖 子:238
专家分:0
注 册:2006-8-16
得分:0 
我也不想算了,但一般认为有嵌套循环的算法不如没有的。呵呵,我也是学了点皮毛。

有事发邮件:tzp_1210@
2007-09-08 20:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-166905-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.144987 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved