第八章實驗報告(指標)

2022-07-31 22:51:18 字數 3006 閱讀 3441

c語言程式設計

1、指標的基礎及指標運算

2、資料交換

3、字串反轉及字串連線

4、陣列元素奇偶排列

8.3.1練習

(1)定義乙個整形指標變數p,使它指向乙個整形變數a,定義乙個浮點型指標q,使它指向乙個浮點型變數b,同時定義另外乙個整形變數c並賦初值3.

(2)使用指標變數,呼叫scanf函式分別輸入a和b的值

(3)通過指標間接訪問並輸出a,b的值

(4)按十六進製制方式輸出p,q的值以及a,b的位址。

(5)將p指向c,通過p間接訪問c的值並輸出

(6)輸出p的值及c的位址,並與上面的結果進行比較

執行結果:

實驗**:

#include int

main ()

程式分析:該題比較簡單,但出現了乙個錯誤:

scanf("%d%f",p,q);

由於p和q本身就是位址,就不需要&,但是我開始還是習

慣性的加了,就變成了地扯的地扯了,執行時就亂碼;

8.3.2練習:

(1)定義兩個函式,分別為void swap(int a,int b)和 void swap2(inta,int b), 用於交換a,b的值。

(2)從主函式中分別輸入兩個整形變數a,b

(3)從主函式中分別呼叫上述兩個交換函式,並列印輸出交換後a,b的結果

執行結果:

實驗**:

#include 

//函式宣告

void swap1(int x,int

y);void swap2(int *x,int *y);

main()

void swap1(int x,int

y)void swap2(int *x,int *y)

程式分析:這個題老師上課講過,由於上課我跟同學討論

了一下,寫這個程式時就比較順利;

8.3.3練習

(1)定義兩個字元指標,通過gets()函式輸入兩個字串

(2)定義乙個函式char reverse(charstr),通過指標

(3)定義乙個函式char link(charstr1,char*str2),通過指標移動方式將兩個字串連線起來

(4)從主函式中分別呼叫上述函式,輸入字串並列印輸出結果。

執行結果:

實驗**:

# include # include 

char *reverse(char *str);

char *link(char *str1,char *str2);

intmain()

char *reverse(char *str)

p--;

while(q

return

str;

}char *link(char *str1,char *str2)

putchar('\0

');return

str1;

}

程式分析:這個程式我卡了很久:令結束字元為空;

首先在前面加標頭檔案:

# include ;putup 

('\0')。但是還出現  了

乙個噁心的錯誤:在while後面加了「;」 我檢查好久,通過把其他函式先

消去;檢查錯誤的函式,檢查出來;

8.3.4練習:

(1)定義乙個整形一維陣列,任意輸入陣列的元素,其中包含奇數和偶數

(2)定義乙個函式,實現將陣列元素奇數在左,偶數在右的排列

(3)在上訴定義的函式中,不允許再增加新的陣列

(4)從主函式中分別呼叫上述函式,列印輸出結果

執行結果:

實驗**:

# include #define n 10

void arrsort(int a,int

n);int

main()

void arrsort(int a,int

n)}

程式分析:寫該程式時,並沒有什麼問題,但是一直執行不出來;後來發現:n==10,要輸入10個數才有用。

收穫:

1、學習到指標,通過實驗對指標有了進一步的了解,指標是乙個位址,在輸出時不需要用取址運算子&;

2、乙個功能可以有多個表達,像令結束字元為空:加乙個標頭檔案conio,在main函式內加putchar('\0');也可以使用null;

3、在學習中,上課時跟同學討論會加深對題目的理解與印象,課堂上應與同學老師多加交流;

4、當你在檢查錯誤的時候,對於**的理解其實也會有所幫助,有疑惑先驗證,在思考為什麼; 

不足:

1、在實驗時,沒有足夠的細心,經常犯一些習慣性的錯誤:eg輸出時scanf後面習慣性加取址運算子、寫完乙個語句習慣性的加「;」;

2、平時與同學交流的還比較少,不會經常的思考多種方法去做乙個效果;

3、課後的訓練太少了,實驗之前寫了幾個題的**,就會有立竿見影的效果,能更快的完成實驗;

4、檢查程式時,沒有帶著一顆糾錯的心去看問題,而是覺得自己的**肯定沒有錯,事實卻是一堆的錯誤;

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

第八章 指標實驗

1 問題的簡單描述 流程圖如下 2 實驗 includeint main 輸出結果 3 問題分析 無。1 問題的簡單描述 流程圖如下 2 實驗 includevoid swap1 int x,int y void swap2 int x,int y int main void swap1 int x...

第八章實驗

實驗目的和要求 1.能夠使用c 模板機制定義過載函式。2.能夠例項化及使用模板函式。3.能夠例項化和使用模板類。4.應用標準c 模板庫 stl 通用演算法和函式物件實現查詢和排序。實驗內容 1.分析並除錯下列程式,了解函式模板的使用。includeusing namespace std templa...