求C语言代码,删除字符串中重复字符 如输入"aabbcc",要求输出"abc"
好久没用c了,不知道你的程序对不对!我仅仅是给你分析一下你问的问题!
tmp[s[i++]] = 1:首先看最里面i++你知道的吧!是先得到i的值,处理完后再自增1,而s是字符数组,s[i]就是取得索引为i的那个字符,所以s[i++]就是先得到s[i]的然后在给i增加1。然后再看最外面,得到的是字符,那么要知道字符是和ascall码对应的,所以这里tmp['a']会实际转换成tmp[97],这样如果还有a的话,a[97]始终是=1的。这样循环一直到用户输入结束('\0'),把所有的重复字符都过滤掉了。
下来的for(i = 0; i < 256;i++) 就好理解了。就是循环遍历tmp数组,从中找出tmp[i]的值=1的索引,然后输出该索引。不过我不确定你for循环中的代码是否正确!
简写伪码就是
for(int i = 0; i < 256;i++) {
if(tmp[i]等于1){
以字符形式输出i
}
}
string str = "aabbcc112233";
string s = "";
for (int i = 0; i < str.Length; i++)
if (!s.Contains(str[i].ToString()))
s += str[i];
Console.WriteLine(s);
#include <stdio.h>
int main() {
char s[256]; /*初始化了一个数组来存放输入的串*/
int i = 0, tmp[256] = {0}; /*tmp是一个256个整型数组,初始化成全0*/
printf("Enter the string :\n");
gets(s); /*将输入的串存到s中*/
/*分析每个输入的字符,如果字符是'a' 则a=97,那么 tmp[97]将置成1 ,如果下一个字符串还是
'a',那么同样tmp[97]置成1,如果下一个字符是'b',那么tmp[98]将置成1......*/
while(s[i] != '\0')
tmp[s[i++]] = 1;
puts("\nAfter sort and delete operation:");
/*顺序输出255个字符中s串中包含的字符*/
for(i = 0; i < 256;i++)
if(tmp[i])
printf("%c", i);
return 0;
}
那么等于是说全部ascii字符集是256个,如果有哪个字符那么就把它标记上,然后再从0开始顺序输出就可以了。
每一个字符都会对应一个asc码,你可以试着将一个字母用整型输出,就会得到一个数,那就是它的asc码。这个程序里的tmp[s[i++]],就是将字符元素s[i++]的asc码作为tmp数组的序号,如果 s[1]和s[2]都是同一个字母的话,那他们的asc码就是同一个数,假设就是23吧,那就容易看出本来是两个元素,但对应tmp数组时,就都是tmp[23],再结合输出部分的形式 if(tmp[i]) printf("%c", i); 就达到了去除重复的目的了,这里你应该能看出,一个字符对应一个asc码(就是数字),一个数字(一定范围内的)当然也就对应一个字符,最后的输出部分printf("%c", i); 正是将asc码再重新转回字符输出。至于 for(i = 0; i < 256;i++) ,那就是一个一个地输出嘛。这个程序其实不仅能去除重复的字母,而且还能对剩下的字母进行排序,你看那句话 puts("\nAfter sort and delete operation:"); 不就说地很清楚吗,“经过排序和删除后”。其中原理你如果懂我上面所说的话,也就不难理解了。最后我想说这个程序还是很巧妙的,谢谢你的分享。
这个程序呢...怎么说呢...它并不是把重复的字符删了...只是在最后输出的时候仅输出一次而已,而且最后输出是是按顺序排序过的.
对C语言来说,字符也是数字,是取值0~255的数字.所以它构造了一个长度为256的tmp数组.
tmp[s[i++]]=1就是取s字符串的第i个字符s[i],它也是个数字,对应tmp数组中的tmp[s[i]],令其为1,表示s[i]字符出现过一次了,然后再让i+1.
那么for(i = 0; i < 256;i++) 就好理解了,就是看长度为256的tmp数组中那些是1,是1的就代表着该字符出现过,那么只要把i当作字符打出来即可.
C语言指针删除字符串
include <stdio.h>#include <string.h>int main(){ char str[]="ABCDEFGHIJK",*p=NULL,*p1=NULL; int n,m,len=strlen(str); printf("原字符串:%s\\n",str); printf("从第n个字符开始的删除m个字符,请输入n,m的值:"); scanf("%d%d",&n,&m); p=str+n-1...
怎样用c语言编写一个程序,实现查找一个字符串中的特定字符,并将其删...
\\x0d\\x0afor(int k =0 ; k<5;k++)\\x0d\\x0a{\\x0d\\x0a if(chr[k]!="c")\\x0d\\x0achrNew[m] = chr[k];\\x0d\\x0am++;\\x0d\\x0a}\\x0d\\x0a此时获得的chrNew就是新的删除之后的字符串了\\x0d\\x0a基本类型中不支持删除操作,所以实际上就是一个新的字符串。
C语言-删除字符串中指定的字符
利用C语言删除字符串中所有指定的字符方法如下:1.基本方法是,编写函数fun:deletechar()。这个函数需要接受两个参数的传入,一个为该字符串str,另一个为想删除的字符c。通过对整个字符串的逐个遍历,凡是检测到字符为c,则删除此字符。具体实现代码如下:2.在主函数,只需要接受用户输入的字符串,...
我是学C语言的,有条作业不太会,是编一个程序,要求可以删除用户要删除...
include "string.h"int _tmain(int argc, _TCHAR* argv[]){ char str[100]="0";char ch;int i=0,j=0;printf("请输入一串字符:");scanf("%s",str); \/*scanf只能保存一个字符,想要保存一串字符,就用gets(str)*\/ printf("请输入要删除的字符:");scanf("%c",ch);if(str[i...
c语言:从字符串s中删除字符c
回答:可以正确运行,不过你要注意,输入只能输入13个字符,不然就错的,而且只能删一个字符, 因为你写的有点小问题: 修改一下: #include <conio.h> #include<stdio.h>#include<string.h> void squeeze(char s[],char c){ int i=0,j=0; for(i;i<strlen(s);i++) if(s[i]!=c) s[j++...
C语言,利用指针编写程序:删除一个字符串中的某一个字符
=a[i]; j++; } } printf(" %s",b); } 。5、只要当i+1不等于c时把a【i】里面的字符赋给b【i】,那么这样当i+1=c时不把它赋给b【i】从而实现删除功能。6、最后就给大家完整的看一下整体的一个代码流程。
功能:c语言输入一个字符串,删除字母以外的其它字符,并统计字母的个数...
} } strcpy(s,temp);count = j;} int main(){ int count;char str[100];printf("请输入字符串:");gets(str);deleteChar(str,&count);printf("结果:");for(int i = 0;i<count;i++){ printf("%c",str[i]);} printf("\\n");printf("共有%d个字母\\n",count);return 0;} ...
C语言中输入一串字符,然后再输入要删除的字符,最后输出删除后的字符串...
include<stdio.h>#include<string.h>void main(){ char str1[80]={'\\0'},str2[80]={'\\0'}; int i=0,j=0; printf("请输入一个字符串,字符数小于80:"); gets(str1); printf("请输入的要删除的字符串:"); gets(str2); for(j=0;j<strlen(str2);j++) { ...
用C语言在字符串中删除指定的字符。
include "stdio.h"include <string.h> int main(){ char a[50],ch;int i,j;printf("输入字符串:");scanf("%s",a);fflush(stdin);printf("输入要删的字符:");scanf("%c",&ch);for(i=0,j=0;i<strlen(a);i++)if(a[i]!=ch)a[j++]=a[i];a[j]='\\0';puts(a);retur...
c语言中删除字符串中字母的方法
可以根据字符的ASCII码值来判断字符是否是字母,之后将非字母字符存放到另一个字符串数组中,即可达到删除字符串中字母的目的。具体实现方法可以参考如下程序:include<stdio.h>#include<ctype.h> \/\/ isalpha函数的头文件void main(){ char *str1=(char *)malloc(50*sizeof(char)); \/\/ 定义...
蓟谈艾力: 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; }
东西湖区17244886818: C语言 删除重复字符 - ?
蓟谈艾力: 程序的基本思路是把输入的字符串放到a[100]字符组中,然后把a[100]中所有不重复的字符添加到b[100]中,间接完成对字符串中的重复字符的删除#include<stdio.h> void main() { char a[100],b[100]; //定义两个字符组,a[100]用来接收输入的字...
东西湖区17244886818: 求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; }
东西湖区17244886818: C语言 输入一个字符串 去掉重复的字符,输出无重复的 - ?
蓟谈艾力: #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"); }
东西湖区17244886818: 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]
东西湖区17244886818: c语言,删除字符串中的重复字符. - ?
蓟谈艾力: 1)肯定要加return j,因为 int fun(int a[], int n)函数完成的功能是把无重复的数放到数组0到j. 2)图片说明如下:
东西湖区17244886818: 求大神!怎么用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);//求数组...
东西湖区17244886818: c语言 在字符串中删除与某字符相同的字符 急! - ?
蓟谈艾力: scanf_s("%s", a); printf("Input a character : ");改为:scanf_s("%s", a); getchar(); printf("Input a character : ");因为当把a字符串输完后,你会按回车键,但回车键也算一个字符.它被读入到了字符word中.
东西湖区17244886818: 如何用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'; 思路,找到每一个字符后面和它相同的字符,换为一个特殊字符.然后再把特殊字符去掉.记得新串要结束.
东西湖区17244886818: 输入一个字符串,调用函数,将字符串中重复出现的符号去掉,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; }