題目:
編程式將給定字串中指定字符洗掉,要求洗掉指定字符后原字串不能留下空位置,字串和指定字符均由鍵盤輸入
基本思路
將字串與要洗掉的字符進行比較,若為相同字符,則將字串中的該字符替換為原字串中下一個字符,并依次將后面的字符提前,從而達到洗掉字符的目的,注意:字符前移一位后,需要判斷移動到當前位置的字符是否需要繼續洗掉,
演算法描述
- 從鍵盤輸入字串和指定字符
- 用回圈將字串和字符依次比對,直到字串結束
- 若字串中沒有指定字符則不改動;若存在指定字符,則將該字符用后的字符的下標依次提前一位
- 回圈控制變數減一,再次判斷該位置的字符是否為指定字符,重復第2、3步
代碼實作
# include<stdio.h>
# include<string.h>
int main()
{
int i, j, k;
char a[1000];
char b[1000];
gets(a);//輸入字串
gets(b);//輸入指定字符(可以是多個)
for(i=0;a[i]!='\0';i++)//遍歷a陣列
{
for(j=0;b[j]!='\0';j++)//遍歷b陣列
{
if(a[i]==b[j])//如果含有指定字符則開始替換后面字符
{
for(k=i;a[k]!='\0';k++)//定義新的變數開始回圈賦值
a[k]=a[k+1];
i--;//下一輪回圈會到新賦值的字符位置,繼續比較
}
}
}
printf("%s",a);
}
演算法分析
演算法的要點是補全和對補全后位置的再判斷
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/59762.html
標籤:C
上一篇:二分法查找(C語言)
下一篇:C語言筆記 03_常量&存盤類
