C语言 输入一个字符串 去掉重复的字符,输出无重复的
#define N 100 //定义最多可以测试100个字串 #define M 100 //定义每个字串最长100 #define END "End!" //定义结束输入的字串 #include #include #include int issame(char *p[],char *f,int n){int i;for(i=0;i<=n;i++)if(strcmp(p[i],f)==0) return 1;return 0;}int main(void){char *p[N];int i=0,total;int count=0;printf("请输入不多于%d的字符串,以End!为结束
",N);while(1){p[i]=(char *)(malloc(M)); //定义每个字串最长为100 printf("第%d个字串:",i+1);gets(p[i]);if (strcmp(p[i],END)==0) break; //如果输入了结束标记则结束输入 i++;}total=i-1; //计算总共输入了多少字串 printf("以下得出不同的字串
");for(i=0;i<=total;i++){if(issame(p,p[i],i-1)==0){ //检查是否与前面输入的字符一致count++;printf("%d%s
",count,p[i]);}}}
#include
int main(void)
{
int i;
char str[80],b[80];
printf("Input a string: ");
i=0;
while((str[i]=getchar())!='
')//注意这里是
因为你的是/n 所以在输入的时候会陷入死循换
i++;
str[i]='\0';
b[0]=str[0];把第一个字符赋值给b字符串 因为第一个一定是会存入b字符串中的
int k=1;
for(i=1;str[i]!='\0';i++)
{
for(int j=0;j<k;j++)
{
if(str[i]==b[j]) break;//如果str中的字符与已经放入b中的字符相同则终止循环
else if((str[i]!=b[j])&&(j==k-1))//如果与已经放入b中的所有字符都不同则把字符放入b中
{
b[k]=str[i];
k++;//每次往b字符串中放入一个字符k就加一 k是b字符串的个数
}
}
}
b[k]='\0';//给b字符串一个结束标志
for(i=0;b[i]!='\0';i++)
printf("%c",b[i]);
printf("
",b);
return 0;
}
还有不懂可以追问
#include<stdio.h>
#include<string.h>
main()
{int i,a[127]={0};
char s[100];
printf("Enter a string:
");
gets(s);
for(i=0;i<strlen(s);i++)
if(a[(int)s[i]]==0)
{a[(int)s[i]]=1; printf("%c",s[i]);}
printf("
");
}
#include<stdio.h>int main(){ char str[100]="";//输入字符串,自己设置长度 char out[100]=""; int letter[127]; int k=127,m=0; while(k--)letter[k]=-1; puts("input a string:"); gets(str); for(k=0;k<100;k++) letter[str[k]]++; for(k=0;k<100;k++) if(letter[str[k]]==0)out[m++]=str[k]; out[m]='\0'; puts(out); getchar(); return 0; }
想要排除重复,即留下只出现1次的,的,判断处if(letter[str[k]]==0)
若想留下出现N次的,判断处if(letter[str[k]]==N-1) 即可。
文贞博占: #include<stdio.h>#include<string.h> main() {int i,a[127]={0}; char s[100]; printf("Enter a string:\n"); gets(s); for(i=0;i<strlen(s);i++) if(a[(int)s[i]]==0) {a[(int)s[i]]=1; printf("%c",s[i]);} printf("\n"); }
屯留县15054127155: C语言编写一个函数,将字符串中连续重复出现的字符去除 - ?
文贞博占: C语言自定义函数,一次性去除连续重复字符,参考代码如下: #include<stdio.h> char *fun(char *str) { int i=1,j=0; if(str==NULL) return NULL; if(str[0]==0) return str; while(str[i]!=0) if(str[j]!=str[i]) str[++j]=str[i++]; else ++i; str[j+1]=0; return str; } int main() { char str[500]; gets(str); puts(fun(str)); return 0; }
屯留县15054127155: C语言 删除重复字符 - ?
文贞博占: 程序的基本思路是把输入的字符串放到a[100]字符组中,然后把a[100]中所有不重复的字符添加到b[100]中,间接完成对字符串中的重复字符的删除#include<stdio.h> void main() { char a[100],b[100]; //定义两个字符组,a[100]用来接收输入的字...
屯留县15054127155: 输入一个字符串,调用函数,将字符串中重复出现的符号去掉,c语言 - ?
文贞博占: void delSomeCh(char *s, int c) { int i, j; for (i = 0, j = 0; s[i] != 0; i++) { if (s[i] != c) { s[j++] = s[i]; } } s[j] = 0; }
屯留县15054127155: 求C语言代码,删除字符串中重复字符 - ?
文贞博占: #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; }
屯留县15054127155: c语言删除重复字符 - ?
文贞博占: 你这个代码是删除字符串中的a,不是删除重复的字符,而且用来过度的F[]没有用到,问题比较多,试下这个!Char f[27]; Int I=0,j,k=0; While(chr[i++]!=\0) {for(j=0,j<27,j++) If chr[i]==chr[j] Else f[k++]=chr[i]; } For (j=0,j<27,j++) Chr[j]=f[j]
屯留县15054127155: 如何用C语言删除一个字符串中的相同字符? 写主要部分哈!非常感谢! - ?
文贞博占: for(i=0;i<N-1;i++) for(j=i+1;j<N;j++) if(a[j]==a[i]) a[j]='^'; m=1; for(i=1;i<N;i++) if(a[i]!='^') a[m++]=a[i]; a[m]='\0'; 思路,找到每一个字符后面和它相同的字符,换为一个特殊字符.然后再把特殊字符去掉.记得新串要结束.
屯留县15054127155: 求大神!怎么用c语言删除字符串里的重复字符比如输入aa++////9输出aa+/9(字母和数字可以 - ?
文贞博占: 参考代码如下:#include <stdio.h> #include <string.h> int GetResult(const char *input, char *output) {int i, j, k = 0;int flag;int length;//判断输入和输出数组是否有值if(input == NULL || output == NULL){return -1;}length=strlen(input);//求数组...
屯留县15054127155: c语言 在字符串中删除与某字符相同的字符 急! - ?
文贞博占: scanf_s("%s", a); printf("Input a character : ");改为:scanf_s("%s", a); getchar(); printf("Input a character : ");因为当把a字符串输完后,你会按回车键,但回车键也算一个字符.它被读入到了字符word中.
屯留县15054127155: 用c语言编写输出一个字符串并删除相同字符例如good - ?
文贞博占: #include <stdio.h>#include <stdlib.h> int main() { char a[100]; char flag[128]; for(int i=0;i<128;i++) flag[i]=0; scanf("%s",a); for(int i=0;a[i]!='\0';i++) { if(flag[a[i]]==0) { printf("%c",a[i]); flag[a[i]]=1; } } printf("\n"); system("pause"); return 0; }