無冗餘輸入字元並過濾 2015

2021-09-12 13:42:31 字數 1378 閱讀 1096

1)輸出該字串 

2)對於不是首次出現的字元,對其進行過濾,例如 abcdacdef,過濾後為 abcdef

3)對於字元 0-9,a-f,a-f,將其對應的 ascii 碼的低 4 位進行對調,例如將 1011,轉 換為 1101,並將對應的 acsii 碼對應的字元輸出,若為字母,轉換為大寫。

難點:第二問中的過濾,開闢兩個字串指標p,q,p儲存原始字串並輸出,q儲存過濾後的字串,首先將p的首位字元賦值給q,再在兩層for迴圈中,外層i從1到len-1為被比較層,內層j從0到i-1為比較層,若發現p+j的值==p+i的值,說明p+i處是已經重複了的值,退出迴圈,並設定標誌位為0,此處也要注意的是,需寫完整if-else結構,大概是因為其中有break,否則報錯;最後再q新增』\0』;整個輸出即可;

第三問中,構造ascii函式,將單個字元轉換為ascii碼並對調低四位,這個利用轉化為二進位制的方法即可,還得重新在轉化為10進製,並輸出對應的字元,其中int 型對應的字元可直接強制轉化char bb=char(b);同時轉化為大寫,用中的函式toupper();

**:

#include 

#include

#include

#include

#include

#include

using namespace std;

void

ascii

(char ch)

,b=0

,i=0

;while

(x>0)

for(

int k=

0;k<

2;k++

)int j=0;

for(i=

7;i>=

0;i--

) cout

char

(b);

if(bb>=

'a'||bb<=

'z')

cout<" "<}int

main()

*(p+len1)

='\0'

; cout

*q=(

char*)

malloc

(sizeof

(char))

;int len2=1;

*(q)=*

(p);

int flag=1;

for(

int i=

1;i)else flag=1;

}if(flag==1)

}*(q+len2)

='\0'

; cout

int i=

0;ireturn0;

}

無冗餘輸入字串 字串陣列 字串

問題 無冗餘 輸入乙個字串 分析 無冗餘 是指儲存的空間不能有冗餘的,比如,要存的陣列長度是10 加上 0 是11 不可以定義陣列為char str 20 這樣還會有8個位元組 還是9個位元組?的空間沒被用,就算是冗餘,因此不能事先分配乙個足夠大的空間,也就不好用陣列實現,然後應該用指標實現 參考的...

無冗餘輸入字串 字串陣列 字串陣列

問題 輸入乙個數字n,接下來輸入n個字串,要求無冗餘地儲存字串 分析 參考到無冗餘地字串輸入 使用動態分配。本題還參考了這個鏈結的內容 1 include include int main char p int ns,i scanf d ns p char malloc sizeof char fo...

C 《讀入字串並過濾掉不合格的字元》

程式說明 讀入乙個字串,當字串以.結尾且後面無任何資料時,停止讀入。讀入後的字串第乙個字母必須是大寫,且其餘字母均為小寫並過濾掉字元之間多餘的空格。執行結果 enter a string the answer to life,the universe,and everything is 42.the...