c语言去掉重复的字符后输出.
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;
}
还有不懂可以追问
循环嵌套 不要用同一个变量啊
for(i=0;str[i]!='\0';i++)
{
for(i=0;b[i]!='\0';i++)
if(str[i]!=b[i])
b[i]=str[i];}
求教怎么改啊。。
#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;
}
#include <stdio.h>
int main(void)
{
int i, j, tail;
char str[80],b[80];
printf("Input a string: ");
// 行接收gets,不需要用getchar一个个输入字符那么麻烦
gets(str);
// tail标识 b 数组的末尾
tail = 0;
for(i=0; str[i]!='\0'; i++)
{
for(j=0; j<tail; j++)
if(str[i]==b[j])break; //如果二者相等,跳出循环
if(j == tail) //条件成立表示未找到相同元素
{
b[tail] = str[i]; //那么往b末尾填入
++tail;
}
}
b[tail] = '\0'; //最后记得给字符串b补上'\0'结束符
puts(b);
return 0;
}
#include<stdio.h>
int main(void)
{
int i,j;
char str[80],b[80];
printf("Input a string: ");
i=0;
while((str[i]=getchar())!='\n')
i++;
str[i]='\0';
b[0]=str[0];
for(i=1,j=1;str[i]!='\0';i++)
{
if(str[i]!=str[i-1])
{
b[j]=str[i];
j++;
}
}
b[j]='\0';
for(i=0;b[i]!='\0';i++)
printf("%c",b[i]);
return 0;
}
for(i=0;str[i]!='\0';i++)
{
for(i=0;b[i]!='\0';i++)
不好意思,,,才学,,不太会,,,什么意思?求教怎么解决啊
你第一重循环里面使用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];
暂时发现这么多,修改了再看能行不吧