C語言實習指導電子版

2022-09-28 09:45:04 字數 3133 閱讀 6811

c 語言程式設計

實習指導

南開大學濱海學院

目錄上機實習基礎知識3

實習1 開發c程式的基本方法7

實習2 順序結構程式設計10

實習3 順序結構程式設計11

實習4 程式閱讀能力訓練12

實習5 選擇結構程式設計14

實習6 選擇結構程式設計15

實習7 迴圈結構程式設計17

實習8 迴圈結構程式設計18

實習9 迴圈結構程式設計20

實習10 一維陣列22

實習11 二維陣列23

實習12 程式設計綜合練習25

實習13 函式30

實習14 函式31

實習15 函式34

實習16 指標36

實習17 指標38

實習18 指標41

實習19 程式設計綜合練習43

實習20 復合型別47

實習21 復合型別49

實習22 檔案51

實習23 檔案52

實習24 預處理命令54

實習25 程式設計綜合練習56

上機實習基礎知識

一、開發c程式的一般過程

1. 分析問題,確定演算法

首先要對問題進行分析,找出合適的演算法。所謂演算法是指解決乙個問題而採取的方法與步驟。解決乙個問題的演算法往往不是唯一的,要找出效率高而且比較簡單的演算法,然後將演算法用流程圖、自然語言等方式表示出來,這是關鍵的一步。

下面舉例說明如何建立模型和確定演算法。

在高度為100m的鐵塔上平拋一物體,初速度v0=20m/s,求其運動軌跡(以0.1s為時間間隔,直到物體落到地面為止)。

分析:設座標原點在塔底,物體初始位置是x=0,y=100。物體在時刻t的位置是:

這兩個公式就是該問題的數學模型。求出物體運動軌跡的演算法是:按以上公式,每隔0.1s計算一組x、y的值,直到y=0為止。

圖1 求平拋物體運動軌跡流程圖

1. 語法錯誤

語法錯誤是指違背了c語法規則的錯誤。例如,語句末尾遺漏了分號、關鍵字拼寫錯誤、引數型別或個數不匹配等。對這類錯誤,編譯系統能夠發現並顯示出錯資訊,因此語法錯誤是不難排除的。

需要注意的是:

有時系統提示的出錯行並沒有錯誤,而錯誤出現在上一行。

有時提示多條錯誤資訊,實際上可能只有

一、兩處錯誤。例如,程式中所使用的變數未定義,編譯時就會對含有該變數的所有語句顯示出錯資訊,只要加上變數定義語句,後面的錯誤就自然排除了。因此,當提示多處錯誤時,應該從第一條錯誤開始修改。

2. 邏輯錯誤

邏輯錯誤是指程式中沒有語法錯誤,但執行結果不對。這種錯誤較難發現,需要仔細查詢。例如,計算 s=1+2+3+4+…+100,程式段如下:

int s=0, i=1;

while ( i<=100 )

s=s+i;

i++;

其中沒有語法錯誤,執行時卻出現死迴圈。原因是迴圈時語句i++; 不能被執行,所以i的值不變,總是滿足條件。迴圈體應該使用花括號構成復合語句:

while ( i<=100 )

還需要注意:程式中雖然沒有語法錯誤和邏輯錯誤,但是執行時也可能出錯。例如,有如下程式段:

float a, b;

scanf("%f, %f", &a, &b);

printf("%f\n", a/b);

執行時,如果為b的值輸入0,0做除數則會出錯。該程式不能經受各種資料的「考驗」,不具有「健壯性」。修改方法是在第2行後加一條if語句,如果b的值等於0,則輸出「除數為0」並終止程式的執行。

三、程式測試

程式測試的目的在於發現程式中的錯誤。對於大型軟體,要使用專門的測試技術和方法,要設計測試用例。在學習階段開發的程式一般較小,只要通過一些簡單的試驗資料,將執行結果與預期結果進行比較,就可知道程式是否正確。

例如,計算前n個自然數之和的程式:

#include <>

void main()

測試方法:執行程式,先輸入3,輸出結果為6,與預期結果一致;再執行一次,輸入10,輸出結果為55,又與預期結果一致,則說明程式正確。

四、程式中常見錯誤

1. 使用了未定義的變數。例如:

void main()

c程式中的所有變數必須「先定義、後使用」,定義就是說明變數的型別,系統為其分配相應的儲存空間。應在函式體的開頭加一條語句:int a, b;

2. 使用變數名時,忽視了大小寫字母的區別。例如,定義了變數a,使用時寫成a,實際上,它們是兩個不同的變數。

3. 在scanf() 函式中,遺漏了取位址運算子&。

例如,把語句scanf("%d,%d", &a, &b); 寫成了scanf("%d,%d", a, b);

4. 輸入輸出資料的型別與所用格式說明符不一致。這類錯誤編譯時不顯示出錯資訊,但執行結果不對,要格外注意。例如:

float a=1.5;

printf("%d\n", a*a); // 輸出結果是0

5. 誤把賦值號當作等號使用。例如:

if(a=b) printf("a equal to b");

只要b不等於0,賦值表示式a=b的值就不等於0,因此總滿足條件。即是說,無論a是否等於b,都輸出a equal to b。

6. 忽視了字元與字串的區別。例如:

char ch;

ch="a"; // ch是字元型變數,而"a"是字串。應改為ch='a';

7. 不該加分號的地方加了分號。例如:

if(a>=b); // 這裡不能加分號

printf("%d\n", a);

else

printf("%d\n", b);

8. 將最大下標等同於陣列元素個數。由於陣列元素的最小下標規定為0,所以最大下標等於元素個數減1,而不是元素個數。

這類錯誤編譯時不顯示出錯資訊,但執行結果不對,要格外注意。例如:

int a[5]=;

printf("%d\n", a[5]); // 沒有元素a[5],最大下標的元素是a[4]

五、c庫函式

c語言提供了豐富的庫函式(或稱標準函式)。了解庫函式的功能、函式名、引數型別、引數個數及函式值的型別,就可以直接引用庫函式。引用庫函式要在程式中使用#include命令包含相應的標頭檔案。

常用的庫函式列於表1和表2中。

表1 數學函式 (標頭檔案

表2 字元函式和字串函式

c語言實習報告

實習報告 1,從1到100面積,面積大於100跳出 周一上午 include define pai 3.14164 巨集定義乙個pai main 主函式 getch 結果 2,九九乘法表 周一下午 include main 主函式 printf n 換行 getch 結果 3,1 100不被5和7整...

c語言實習報告

c程式設計實習報告 名稱 建築工地資訊管理系統 學院 機電學院 專業 機械設計製造及其自動化 姓名 許文祥 班級學號 20091003791 指導老師 薛思清 2011年7 月3 日 根據題目要求,由於資訊是存放在檔案中的,所以應提供檔案的輸入,輸出操作 在程式中要能刪除資訊,因此要有刪除操作 同時...

c語言實習報告

c語言課程實習報告 所在院系數理學院 班級學號 121091 13 姓名程式已存檔 指導老師 評分二零一零年七月十五 目錄 一.題目要求3 二.需求分析3 三.總體設計3掌握 四.詳細設計4 1.主函式4 1 流程圖4 2 主函式程式5 2.各功能模組7 1 查詢模組7 1 流程圖7 2 程式8 2...