C 複習之路 1

2021-08-14 11:39:00 字數 3386 閱讀 3833

複習書目:c++ primer plus

編譯器:vs2013

第4章 復合型別

4.1陣列

陣列宣告應指出以下三點:1 儲存在每個元素中的值得型別;2 陣列名;3 陣列中的元素數。

short months[12];//元素型別為short型,陣列名為months,陣列中元素數為12

c++陣列從0開始編號的!

#include using namespace std;

int main()

;cout << "total yams = ";

cout << yams[0] + yams[1] + yams[2] << endl;

cout << yamcosts[1] << " cents per yam.\n";

int total = yams[0] * yamcosts[0] + yams[1] * yamcosts[1];

total = total + yams[2] * yamcosts[2];

cout << "the total yam expense is " << total << " cents.\n";

cout << "\nsize of yams array = " << sizeof yams;

cout << " bytes.\n";

cout << "\nsize of one element = " << sizeof yams[0];

cout << " bytes.\n";

cin.get();

cin.get();

return 0;

}

陣列的初始化在定義時才可以使用。

int cards[4]=;

如果只對部分初始化,則將其他部分設定為0。

4.2字串

c++處理字串的方式有兩種。第一種來自c語言,常被稱為c-風格字串(c-style string)。另一種為string類庫的方法。

c-風格字串具有一種特殊的性質:以空字元結尾,空字元被寫作\0,其ascii碼為0,用來標記字串的結尾。

char dog[8] = ;

char cat[8] = ;

這兩個都是char陣列,但只有第二個陣列才是字串。空字元對c-風格字串而言至關重要。c++中很多字串函式都是逐個地處理字串中的字元,直到到達空字元為止。

初始化不必用'b'的形式,用字串常量(字串字面值)來初始化即可:

char bird[11]="mr.cheeps";char fish="bubbles";

用引號括起的字串隱式地包括結尾的空字元(會用\0自動填充)。應確保陣列足夠大,能夠儲存字串中所有字元——包括空字元!,讓編譯器計算元素數目更為安全。(即採用char fish="bubbles")在確定字串所需的最短陣列時,必須將空字元計算在內。

「s」是字串常量,實際上是『s』『\0』,是乙個陣列,本身使用是指數組的位址。

『s』是字元常量,ascii中 83 的另一種寫法。

4.2.1拼接字串常量

會將第一部分的字串的最後的'\0'填為第二部分的字串。

4.2.2在陣列中使用字串

cstring庫中使用strlen()來確定字串的長度(不包含'\0')。

#include #include int main()

strlen()返回的是字串的長度,而sizeof()返回的是整個陣列的長度。當name2[3]='\0'後,輸出name2時,遇到'\0'就停止,故只有c++了。

4.2.3

字串輸入(

如果是數字輸入,空白將保留在輸入佇列之中)

cin作為字串接收,使用空白(空格,製表符,換行符)來確定字串的結束位置。例子就是將jack錄入為乙個字串,

然後將「chen」放在輸入佇列當中,準備下一次使用。

cin讀取字串以空白(空格、製表符、換行符)作為字串的結束,然後將空白之後的內容作為下一次的字串輸入。

4.2.4每次讀取一行字串輸入(避免空格、製表符導致的文字錄入提前終止)

採用面向行而非面向單詞的方法。getline()和get(),都是遇到換行符結束錄入,getline()丟棄換行符,get()保留換行符在輸入佇列中。

1, 面向行的輸入:getline()

getline(陣列名,陣列最大長度(包括\0)),鍵盤按回車表示錄入時,陣列將回車字元轉換為'\0'來表示字串的結束。

可以發現,getline()是遇回車結束錄入的。

但getline()有一些問題,錄入結束並不知道是因為遇到回車還是陣列已滿,於是可以使用get()函式。

2 面向行的輸入:get()

讀取到行尾,但並不再讀取並丟棄換行符,而是將其留在輸入佇列中(即下次系統找錄入時會發現換行符)。

cin.get(name ,size);

cin.get(dessert, size);

第一次呼叫後,換行符留在佇列中,因此第二次呼叫時看到的第乙個字元便是換行符,此時get()認為已經達到行尾,而不讀取任何內容。如果不借助於幫助將無法跳過該換行符。

cin.get(name, size);

cin.get();

cin.get(dessert, size);

或者,將兩個類成員函式拼接起來(合併),如下所示:

cin.get(name,size).get();

也可以連續錄入兩個陣列

cin.getline(name, size).getline(dessert, size);

#include #include int main()

4.2.5 混合輸入字串和數字

#include #include int main()

錄入數字時,回車符會保留在輸入佇列中。(和錄入字串不同,字串遇到空白停止但回車符就被替換為\0了)

解決辦法就是將回車符也讀乙個。

(cin>>year).get();

#include #include int main()

C 複習之路七 類

類的主要思想就是資料抽象和封裝。一 定義乙個類 我們首先來看乙個例子 class test 類名 private 訪問說明符,private之後的成員只能被類的成員函式訪問,但是不能被使用該類的 訪問 int m a 類的成員變數 通過上面的例子我們就可以知道類是如何定義的。我們除了可以通過clas...

數學的複習之路 高代(1)

今天看了一句話 程式設計師是所有行業中最能抗壓和抗窮的職業人群,也只有程式設計師能在前期創業階段明知前方是萬丈懸崖依然選擇矇眼猛進,哪怕粉身碎骨也在所不辭。但程式設計師們創業初期最怕的不是暫時性的入不敷出,而是團隊成員的各種原因的 被離去 這種始於外界因素或者壓力造成的隊友離去,會給團隊其他成員造成...

C語言複習 1

程式是人機互動的媒介,有輸出必然也有輸入。在c語言中,有多個函式可以從鍵盤獲得使用者輸入 scanf 和 printf 類似,scanf 可以輸入多種型別的資料。getchar getche getch 這三個函式都用於輸入單個字元。gets 獲取一行資料,並作為字串處理。scanf 是最靈活 最複...