字串的練習題

2021-10-25 04:09:12 字數 4287 閱讀 2279

一、

char str[10]=「string!」;和char str[10]=等價。(

您必須明白char str[10];是定義了乙個含有十個元素的陣列,而且這十個元素在記憶體中是以連續的儲存單元存放的。(

char str="string!"中,陣列的大小等於字串的長度加1(

字串常量「str」的型別是字串型別()因為資料型別有整型,浮點型,字元型。

字元陣列的每乙個元素可存放乙個字元,並且最後乙個元素必須是『\0』; ()這不是字串而是字元;

對於一維字元陣列,不能用字串常量來賦值。(

對於字串常量「string!」系統已經自動在最後加入了』\0』,表示串結尾;(

二、

#include

main()

printf

("%d\n"

,n);}}

該程式輸出的結果是3;

三、

字串複製的正確方式:

achar str="\0";

*b、 char ss[6][20];ss[1]=「right?」』 ()

b、 char ss[6]; ss[1]="right?』』(

b中的ss[1]是指標,所以是可以對它進行賦值的。

char str="\x43";(

為其是char型別所以是換成『\x43』因為str是字元型的變數,而不是字串常量。

char str="\0";(

因為對於一維字元陣列能用字串常量來賦值。

四、

strcmp函式是string compare(字串比較)的縮寫,用於比較兩個字串並根據比較結果返回整數。基本形式為strcmp(str1,str2),若str1=str2,則返回零;若str1str2,則返回正數 還有小寫大於大寫的字母;

五、

int aaa(char

*s)> 首先 char

*s 接受乙個字元型dao陣列的首位址bai

並將這個首位址賦給另du乙個字元型指標zhi char

*twhile

(*t++

);不斷迴圈直到dao *t 為『\0』,

再將 t-

1 ,這時字元指標 t 指向字串的最後乙個字元!

又因為 s 指向字元陣列的首位址即字串的首位址

所以 return

(t-s) 便是返回字元陣列中字串的長度。

#include

main()

;int i,j;

char t;

for(i=

0;i<

2;i++

)for

(j=i+

1;j<

5;j++

)puts

(a[1])

;}該程式的執行結果為fwo//按照程式的來就行。

最終答案輸出是 「abc\0」;

為什麼答案不是"abc\0ef";

從strcpy函式的實現**可以看出當src指標指向為『\0』時將會停止字串的複製,由此可以得知返回ret指標所指向的陣列a內容應該是「abc\0ef」,也就是說實際記憶體陣列a中的內容應該是「abc\0ef「;但是為什麼最終顯示會是"abc\0"呢,原因在於,strcpy的本身屬性:即strcpy只用於字串複製,並且它不僅複製字串內容之外,還會複製字串的結束符.

#include

#incldue

main()

我們都知道strcat(str,ptr)是將字串ptr內容連線到字串str後,然後得到乙個組合後的字串str,比如,str字串內容為"123456\0",ptr字串為"abc\0",那麼strcat(str,ptr)後str內容為"123456abc\0",輸出結果為123456abc這樣看來函式作用是將ptr內容接到了str的終止符\0上,道理很簡單,那麼如果我將str字串內容, 更改一下,讓str[1] = 『\0』,讓字串的第三位變成終止符,str內容變為"1\03456\0",那麼再strcat一次結果為何? 很簡單,輸出str結果為1abc,有人會問,那麼之前的其他的字元呢??事實上此時str內容為"1abc\06\0",但是 printf只會列印到\0結束,所以後面的6就被遺棄了,其實這也很簡單,如果乙個字串內的某個字元被換成了, 終止符\0,那麼就當作字串到這結束就好,再進行其他操作。

#include

main()

,*p[2]

;int i,j,s=0;

for(i=

0;i<

2;i++

)for

(i=0

;i<

2;i++

)for

(j=0

;p[i]

[j]>

0&&p[i]

[j]<=

'9';j+=2

)printf

("%d\n"

,s);

程式的輸出結果為6385;

#include

mian()

a[i]

='\0'

;gets

(b);

printf

("%s%s\n,a,b");

}輸入 fig flower is read.

該程式的執行的結果為 fig flower is read.

#include

main()

if(*p==

'\0'

)break;}

printf

("%s"

,&b[i]);

}}該程式的執行結果為you to china;

在c語言中的以下三個函式都在string.h當中.

strcmp:

strcmp函式是string

compare(字串比較)的縮寫,用於比較兩個字串並根據比較結果返回整數。基本形式為strcmp(str1,str2),若str1=str2,則返回零;若str1str2,則返回正數。

strcat:

我們都知道strcat(str,ptr)是將字串ptr內容連線到字串str後,然後得到乙個組合後的字串str,比如,str字串內容為"123456\0",ptr字串為"abc\0",那麼strcat(str,ptr)後str內容為"123456abc\0",輸出結果為123456abc這樣看來函式作用是將ptr內容接到了str的終止符\0上,道理很簡單,那麼如果我將str字串內容,

更改一下,讓str[1] = 『\0』,讓字串的第三位變成終止符,str內容變為"1\03456\0",那麼再strcat一次結果為何?

很簡單,輸出str結果為1abc,有人會問,那麼之前的其他的字元呢??事實上此時str內容為"1abc\06\0",但是

printf只會列印到\0結束,所以後面的6就被遺棄了,其實這也很簡單,如果乙個字串內的某個字元被換成了,

終止符\0,那麼就當作字串到這結束就好,再進行其他操作。

strcpy:

strcpy只用於字串複製,並且它不僅複製字串內容之外,還會複製字串的結束符.

字串練習題

1.請編寫乙個c函式,該函式可以實現將乙個整數轉為任意進製的字串輸出 include include char ch 16 函式宣告 將整數轉換為任意進製的字串 charchar int2sys int num,int n,int move bit int main else if n 8 else...

字串練習題

變數名是否合法 1.變數名只能由字母 數字 下劃線組成 2.只能以字母或下劃線開頭 源 while true s input 變數名 if s exit print 歡迎下次使用 break if s 0 isalpha or s 0 for i in s 1 if not i.isalnum or...

字串練習題

輸入兩個字串,從第乙個字串中刪除第二個字串中所有的字元。例如,輸入 they are students.和 aeiou 則刪除之後的第乙個字串變成 thy r stdnts.s1 input 請輸入第乙個字串 s2 input 請輸入第二個字串 s3 方法一 for i in s1 print i,...