这是华为2013的一个机试题,会好半天才想出来,用了三个for循环,可能有点繁琐,但只要慢慢看还是好理解的,
题目:
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
#include<stdio.h> #include<string.h> void main() { char a[]="abacacde"; int length=strlen(a);//首先求长度 for(int i=0;a[i]!='\0';i++) //先确定要一个字符 { for(int j=i+1;j<length;j++) //检索当前位置的值和后面的所以值进行检索 { if(a[i]==a[j]) //确定一个值后与整个字符串每一个字符进行比较 { for(int k=0;k<length-j;k++)//移动删除j位置的值 { a[j+k]=a[j+k+1]; } length--;//删除一个后长度减一 j=j-1; //退回到j开始的位置,因为跳出if后j会自加一次,所以要先减1 } } } printf("%s\n",a); }
时间: 2024-10-01 10:17:15