題目: 編程式將給定字元串中指定字元刪除。要求刪除指定字元後原字元串不能留下空位置,字元串和指定字元均由鍵盤輸入 基本思路 將字元串與要刪除的字元進行比較,若為相同字元,則將字元串中的該字元替換為原字元串中下一個字元,並依次將後面的字元提前,從而達到刪除字元的目的。 註意 :字元前移一位後,需要判斷 ...
題目:
編程式將給定字元串中指定字元刪除。要求刪除指定字元後原字元串不能留下空位置,字元串和指定字元均由鍵盤輸入
基本思路
將字元串與要刪除的字元進行比較,若為相同字元,則將字元串中的該字元替換為原字元串中下一個字元,並依次將後面的字元提前,從而達到刪除字元的目的。註意:字元前移一位後,需要判斷移動到當前位置的字元是否需要繼續刪除。
演算法描述
- 從鍵盤輸入字元串和指定字元
- 用迴圈將字元串和字元依次比對,直到字元串結束
- 若字元串中沒有指定字元則不改動;若存在指定字元,則將該字元用後的字元的下標依次提前一位
- 迴圈控制變數減一,再次判斷該位置的字元是否為指定字元,重覆第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+i];
i--;//下一輪迴圈會到新賦值的字元位置,繼續比較
}
}
}
printf("%s",a);
}
演算法分析
演算法的要點是補全和對補全後位置的再判斷