#include<stdio.h>
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';
for(i=0;str[i]!='\0';i++)
{
for(i=0;b[i]!='\0';i++)
if(str[i]!=b[i])
b[i]=str[i];}
for(i=0;b[i]!='\0';i++)
printf("%c",b[i]);
return 0;}
为什么没有输出?求大神教。。。
#include<stdio.h>
int main(void)
{
int i;
char str[80],b[80];
printf("Input a string: ");
i=0;
while((str[i]=getchar())!='\n')//注意这里是\n 因为你的是/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("\n",b);
return 0;
}
还有不懂可以追问
求教怎么改啊。。
追答#include
int main(void)
{
int i,j;
int flag=1;
char str[80],b[80];
printf("Input a string: \n");
i=0;
while((str[i]=getchar())!='\n')
i++;
str[i]='\0';
for(i=0;str[i]!='\0';i++)
{
b[i] = str[i];
for(j=0;str[j]!='\0';j++)
{
if(i==j) continue;
if(b[i]==str[j])
{
flag = 0;
break;
}
}
if(flag)
{
printf("%c ",b[i]);
}
flag = 1;
}
return 0;
}
运行结果有
你用的是什么软件呀?
我用的是C++6.0写的没有问题呀
guide啊。。。
追答这个没用过
不好意思,,,才学,,不太会,,,什么意思?求教怎么解决啊
追答你第一重循环里面使用i做循环变量,
在内层循环又使用i做循环变量,那么i的值在内层就被更改了,会影响到外层循环的。所以2重循环通常需要2个变量,除非你有足够的把握不会有问题。
另外其他问题也很多,
比如while((str[i]=getchar())!='/n') ,应该是'\n'不是/n
还有b[80]没有初始化,你最后for(i=0;b[i]!='\0';i++) printf("%c",b[i]);这个循环终止不了。
这里一次判断就开始赋值了,显然不型,要循环完了发现确实没有重复才能赋值啊
if(str[i]!=b[i])
b[i]=str[i];
暂时发现这么多,修改了再看能行不吧
c语言去掉重复的字符后输出.
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...
C语言 输入一个字符串 去掉重复的字符,输出无重复的
想要排除重复,即留下只出现1次的,的,判断处if(letter[str[k]]==0)若想留下出现N次的,判断处if(letter[str[k]]==N-1) 即可。 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 其他类似问题2018-05-31 c语言,输入为一些字符串,想要去除重复的字符串然后输出 2013-05-15 c语言去掉重复的字符后...
c语言排序后删除数组中重复的数字再排序输出
voidbubble_sort(char*str);intmain(){ charstr[SIZE];gets(str);delete_repeat(str);bubble_sort(str);puts(str);return0;} \/\/删除重复字符 voiddelete_repeat(char*str){ \/**判断数组内第i个字符是否与前i-1个字符存在重复:若重复,删除该字符,i之后的字符下标均减1,后重新判断新的第i...
...有空格的字符串,删除所有重复字符,按字符升序输出在屏幕上。怎么做...
printf(*a ? "\\n%s\\n" : "\\n(null)\\n",a);\/\/输出 return 0;} 供参考。
C语言中删除字符串中的重复字符,然后输出新的字符串
include <stdio.h>#include <string.h>int main(){ char c,str[80]; int i=0,j,k,len; printf("input:"); gets(str); len=strlen(str); c=str[i]; while(c!='\\0') { for(j=i+1;str[j]!='\\0';j++) { if(str[j]==c) { for...
C语言中删除字符串中的重复字符,然后输出新的字符串
这个容易,就是把指定位置的字符去掉,也就是说后面的字符覆盖 比如删除指定的字符在字符串中第一个出现的位置 void strdel(char str,char ch ){ char p = str;while(p ){ if(p==ch )break;} if(p ){ while(p ){ p==*(p+1);p++;} } } 希望能解决您的问题。
求C语言代码,删除字符串中重复字符
} \/\/删除重复字符的代码 printf("结果字符串为:%s\\n",str);} -- 方法二:char *delete_adjacent_char1(char *str){ if(str==NULL)return NULL;int i=0,j=0;int len=strlen(str);for(j=i+1;j<len;j++){ if(str[i]!=str[j])str[++i]=str[j];} str[i+1]=0;return ...
C语言编程:输入一个字符和字符串,删除字符串中和输入字符相同的所有字符...
define LEN 100 void delete_same(char * str,char ch){ int i=0;for(i=0;str[i]!=0;i++){ if(str[i]==ch){ strcpy(str+i,str+i+1);\/*删除相同元素*\/ } i--;} } void main(){ char ch;char str[LEN];printf("Please input the string:");gets(str);printf("Please ...
C语言程序题:从键盘输入8 个数字,删除重复的字符输出
int main(){ int a[8],b[8],i,j,k=0,flag;printf("输入八个数\\n");scanf("%d%d%d",&b[0],&b[1],&b[2],&b[3],&b[4],&b[5],&b[6],&b[7]);for(i=0;i<=7;i++){ flag=1;for(j=0;j<=i-1;j++)if(a[j]==b[i]){ flag=0;break;} if(flag){ a[...
...的字符串,分别找出其中数字,将重复的去掉后,按升序排列后输出...
int cmp(const void* a, const void* b) { \/\/C 语言比较函数,用于qsort return *(int *)a - *(int *)b;} void func(char *s, int length) { \/\/处理你给出的字符串 ,length为长度 static int arr[maxn];int cnt = 0;p=s;char sign;while ((p - s) < length) { whil...