C語言程序設計實訓_第1頁
C語言程序設計實訓_第2頁
C語言程序設計實訓_第3頁
C語言程序設計實訓_第4頁
C語言程序設計實訓_第5頁
已閱讀5頁,還剩222頁未讀 繼續免費閱讀

付費閱讀全文

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

“十三五”職業教育國家規劃教材配套教材

C語言程序設計實訓

包鋒呂曉昶周賓主編

齊博張國華宋新起副主編

趙鳳芝主審

內容簡介

本書以突出實踐應用能力為出發點,融入工學結合的CDIO工程理念,采用“案例驅動”模式,除第11章外,

每章從實例入手進行解析,并配有大量實用的習題進行實戰訓練,為扎實學習和鞏固所學的C語言知識提供有力保

障,也為強化C語言程序設計能力、參加計算機考試打下堅實基礎。

全書共11章,包括進入C語言程序世界、應用C的基礎知識實現數據的運算與處理、應用順序結構設計程序

解決簡單實際問題、應用選擇結構設計程序實現分支判斷、應用循環結構設計程序實現重復操作、應用數組設計程

序實現批量數據處理、應用函數設計程序實現模塊化設計、應用指針設計程序增加獨有特色、自己定義數據類型完

成復雜數據處理、應用文件管理數據、實戰演練——綜合模擬測試題及參考答案。附錄中列出了常見編譯錯誤信息、

計算機基礎知識訓練題。本書與《C語言程序設計能力教程(第5版)》(趙鳳芝、包鋒、李峰主編,中國鐵道出版

社有限公司出版)配套使用,每章包括實例解析和大量習題,讀者可根據需要進行取舍。

本書例題講解詳細、習題豐富、題型全面,并融入了思政元素,適合作為高等職業院校程序設計課程的實訓教

材或輔助教材,也可作為參加培訓、考級、考試人員的強化訓練用書和自學參考書。

圖書在版編目(CIP)數據

C語言程序設計實訓/包鋒,呂曉昶,周賓主編.—2版.—北京:

中國鐵道出版社有限公司,2022.6

“十三五”職業教育國家規劃教材配套教材

ISBN978-7-113-28886-0

Ⅰ.①C…Ⅱ.①包…②呂…③周…Ⅲ.①C語言-程序設計-

職業教育-教材Ⅳ.①TP312.8

中國版本圖書館CIP數據核字(2022)第051765號

書名:C語言程序設計實訓

作者:包鋒呂曉昶周賓

策劃:王春霞編輯部電話:(010)63551006

責任編輯:王春霞徐盼欣

封面設計:劉穎

責任校對:孫玫

責任印制:樊啟鵬

出版發行:中國鐵道出版社有限公司(100054,北京市西城區右安門西街8號)

網址:/51eds/

印刷:三河市航遠印刷有限公司

版次:2018年2月第1版2022年6月第2版2022年6月第1次印刷

開本:850mm×1168mm1/16印張:14字數:358千

書號:ISBN978-7-113-28886-0

定價:45.00元

版權所有侵權必究

凡購買鐵道版圖書,如有印制質量問題,請與本社教材圖書營銷部聯系調換。電話:(010)63550836

打擊盜版舉報電話:(010)63549461

前言

C語言不僅適用于系統軟件的設計,而且適用于應用程序設計。C語言具有強大的功能、

豐富的數據類型,使用靈活,兼具面向硬件編程的低級語言特性及通用性強、可移植性好等高

級語言特性,是國內外廣泛流行的程序設計語言,一直長盛不衰,成為軟件開發中的主流語言

之一。

目前,許多開發工具(包括VisualC++和VisualC++.NET及Java等開發工具)遵循著標

準的C語言基本語法,很多嵌入式系統的軟件采用C語言來開發。可以說,C語言是程序開

發人員必須掌握的基本功,也是國內各高校廣泛學習和普遍使用的一種重要的計算機語言。目

前,全國計算機等級考試、全國計算機應用技術證書考試、全國計算機技能大賽等都將C語

言列入了考試范圍。

本書以突出實踐應用能力為出發點,融入工學結合的CDIO工程理念,采用流行的“案例

驅動”模式,每部分章節開始前列出“知識要點”,介紹該章所學的重要知識點,給出本章的“思

想啟蒙”,給學生以思想啟蒙教育。內容從實例入手進行講解、分析,并配有大量實用的各種

習題進行實戰訓練,為扎實學習和鞏固所學的C語言知識提供有力保障,也為強化C語言程

序設計能力、參加計算機考試打下堅實基礎。部分章節題目融入思政元素,希望學生在掌握技

能的同時,提高思想認識。

全書共11章,包括進入C語言程序世界、應用C的基礎知識實現數據的運算與處理、應

用順序結構設計程序解決簡單實際問題、應用選擇結構設計程序實現分支判斷、應用循環結構

設計程序實現重復操作、應用數組設計程序實現批量數據處理、應用函數設計程序實現模塊化

設計、應用指針設計程序增加獨有特色、自己定義數據類型完成復雜數據處理、應用文件管理

數據、實戰演練——綜合測試題及參考答案。附錄中列出了常見編譯錯誤信息、計算機基礎知

識訓練題。本書與《C語言程序設計能力教程(第5版)》(趙鳳芝、包鋒、李峰主編,中國

鐵道出版社有限公司出版)教材配套,每章包括實例解析和大量習題,讀者在使用時可根據需

要進行取舍。

本書適合作為高等職業院校程序設計課程的實訓教材或輔助教材,也可作為參加培訓、

考級、考試人員的強化訓練用書和自學參考書。

I

C語言程序設計實訓

本書由包鋒、呂曉昶、周賓任主編,齊博、張國華、宋新起任副主編,趙鳳芝主審,

包鋒負責統稿定稿。其中,包鋒編寫了第1、2、6、7章,呂曉昶編寫了第3、4、5章,周賓

編寫了第8、9章,齊博編寫了第10章和附錄及視頻資料,張國華、宋新起、白晟、邢雪峰編

寫了第11章,李峰、王海英為本書提供了大量的資料,在此表示真誠的感謝!

由于編者水平有限,書中疏漏和不足之處在所難免,敬請有關專家和廣大讀者不吝指正,

編者的電子郵箱是qhdcomputer@163.com。

編者

2022年2月

II

目錄

第1章進入C語言程序世界1

實例解析2

小結11

實戰訓練11

第2章應用C的基礎知識實現數據的運算與處理14

實例解析15

小結20

實戰訓練20

第3章應用順序結構設計程序解決簡單實際問題24

實例解析25

小結27

實戰訓練27

第4章應用選擇結構設計程序實現分支判斷31

實例解析33

小結36

實戰訓練36

第5章應用循環結構設計程序實現重復操作46

實例解析48

小結53

實戰訓練54

第6章應用數組設計程序實現批量數據處理68

I

C語言程序設計實訓

實例解析70

小結76

實戰訓練76

第7章應用函數設計程序實現模塊化設計87

實例解析89

小結96

實戰訓練96

第8章應用指針設計程序增加獨有特色113

實例解析114

小結124

實戰訓練124

第9章自己定義數據類型完成復雜數據處理137

實例解析138

小結149

實戰訓練149

第10章應用文件管理數據157

實例解析158

小結160

實戰訓練160

第11章實戰演練——綜合模擬測試題及參考答案168

綜合模擬測試題168

綜合模擬測試題參考答案202

附錄????????????????????????????????????????????????????????????????????????????????????????????????207

附錄A常見編譯錯誤信息207

附錄B計算機基礎知識訓練題213

II

第1章

進入C語言程序世界

C語言簡潔、緊湊,使用方便、靈活;運算符、數據結構豐富,具有現代化語言的各種數據結

構;具有結構化的控制語句;語法限制不太嚴格,程序設計自由度大;生成目標代碼質量高,程

序執行效率高。本章通過對幾個小程序的講述,使讀者對C語言程序的結構有大致的了解,熟悉

VisualC++6.0和VisualC++2010的開發環境和調試步驟。

實訓目標

通過本章訓練,你將能夠:

了解C語言程序的基本構成和簡單的程序。

掌握C程序編寫和運行步驟。

知識要點

1.函數與主函數

①程序由一個或多個函數組成。

②程序必須有且只能有一個主函數main()。

③程序執行從main()函數開始,在main()函數中結束,其他函數通過調用得以執行。main()

函數可以出現在任何位置。

2.程序語句

①C程序由語句組成。

②用“;”作為語句終止符。

③“{}”表示程序的結構層次范圍。

3.注釋

/*……*/為注釋,不能嵌套,主要是對程序功能的必要說明和解釋,可以為單行或多行。

//……為單行注釋。

4.算法

算法是一個有窮規則的集合,其中的規則確定了一個解決某個特定類型問題的運算序列。

1

C語言程序設計實訓

5.衡量算法的正確性

①有窮性。

②確定性。

③有效性。

④沒有輸入或有多個輸入。

⑤有一個或多個輸出。

6.C程序的調試與運行

C語言采用編譯方式將源程序轉換為二進制目標代碼。編寫好一個C程序到完成運行一般經

過編輯、編譯、連接和運行四個步驟。

思想啟蒙

懂得事情輕重緩急,節約時間,提高效率。

實例解析

一、初識C語言

【實例1.1】編寫第一個C語言程序,輸出“IamChinese!”。

解:

#include<stdio.h>

voidmain()

{

輸出

printf("IamChinese!");/*"IamChinese!"*/

}

本程序運行結果為:

IamChinese!

解析:

C程序首先要有主函數main(),函數體是要輸出一行文字,并沒用到變量,不用說明,只是

用到了輸出函數printf()。注意:一條語句需要以“;”結束,函數體要用{}括起來。在C程序中

“/*……*/”表示注釋,它們之間的語句只起說明作用,并不執行。

二、設計簡單的C程序

【實例1.2】已知一個矩形(長為5、寬為6),求其面積并輸出。

解:

#include<stdio.h>

voidmain()

{

2

第1章進入C語言程序世界

定義變量

inta=5,b=6,area;/**/

area=a*b;

輸出面積

printf("area=%d",area);/**/

}

本程序運行結果為:

area=30

解析:視頻

在定義a,b時直接進行賦值,它們之間用逗號分開。

【實例1.3】已知a=2,b=3,c=4,x=5,求表達式ax2+bx+c的值。

解:

實例1.3

#include<stdio.h>

voidmain()

{

inta,b,c,x=5,sum;

a=2;

b=3;

c=4;

sum=a*x*x+b*x+c;

printf("%d*%d*%d+%d*%d+%d=%d\n",a,x,x,b,x,c,sum);

}

本程序運行結果為:

2*5*5+3*5+4=69

解析:

這是一道簡單的計算題。在C語言中,兩個操作數之間必須有符號,乘號“*”不能省略。對

變量賦值,一種是在定義時直接賦值,它們之間用逗號分開;另一種是在執行語句中賦值,這時需

要用分號結束。

三、程序的調試與運行

下面分別介紹VisualC++6.0和VisualC++2010兩種軟件開發環境。

1.VisualC++6.0

VisualC++6.0(簡稱VC++或VC)提供了可視化的集成開發環境,主要包括文本編輯器、資

源編輯器、工程創建工具、Debugger調試器等實用開發工具。VisualC++6.0分為標準版、專業版

和企業版三種,但其基本功能是相同的。

下面介紹如何在VisualC++6.0中實現C程序的編輯和運行。

1)VisualC++6.0啟動界面

在Windows系統任務欄中,選擇“開始”→“所有程序”→MicrosoftVisualStudio6.0→

MicrosoftVisualC++6.0命令,即可啟動VisualC++6.0集成開發環境,啟動界面如圖1-1所示。

3

C語言程序設計實訓

2)在VisualC++6.0中編譯C程序

(1)創建文件

在VC++中創建C程序文件有多種方式,現列舉兩種。

①在任意位置處創建一個記事本文件,保存格式由.txt修改為.c,如exam.c。啟動VC++環

境,選擇File→Open命令,在彈出的“打開”對話框中選擇創建的exam.c文件,如圖1-2所示,

單擊“打開”按鈕,即可進入VC++的代碼編輯窗口。

圖1-1VisualC++6.0啟動界面

圖1-2打開exam.c文件

②啟動VC++,選擇File→New命令,在彈出的New對話框中選擇Files選項卡。在左邊列

出的選項中,選擇C++SourceFile或TextFile選項,在右邊File文本框中輸入exam.c,如圖1-3所

示,單擊Location文本框右側的按鈕修改保存的位置。單擊OK按鈕,即可進入VC++的代碼

編輯窗口。

(2)編輯代碼并保存

①編輯代碼:在VC++代碼編輯區中輸入exam.c的源代碼,完成后如圖1-4所示。源代碼

如下:

4

第1章進入C語言程序世界

/***exam.c***/

#include<stdio.h>

voidmain()

{

歡迎使用編譯程序!

printf("VC++C\n");

}

圖1-3創建exam.c文件

圖1-4編輯代碼窗口

②保存:選擇File→Save命令(SaveAs命令可修改原默認存儲路徑),也可單擊工具欄中的

“保存”按鈕。

(3)編譯、連接、運行源程序

選擇Build→Compileexam.c命令(或單擊工具欄中的按鈕,或按【Ctrl+F7】組合鍵),在

彈出的對話框中單擊“是”按鈕,這時系統開始對當前的源程序進行編譯。在編譯過程中,將所

發現的錯誤顯示在“輸出區”窗口中,錯誤信息中指出錯誤所在行號和錯誤的原因。當程序出現

錯誤時,根據提示信息修改源程序代碼,再進行編譯直至編譯正確,如圖1-5所示。

當輸出窗口中的信息提示為exam.obj-0error(s),0warning(s)時,表示編譯正確。

選擇Build→Buildexam.exe命令(或單擊工具欄中的按鈕,或按【F7】鍵),連接正確時,

5

C語言程序設計實訓

生成可執行文件exam.exe,如圖1-6所示。該文件保存在exam.c同一文件夾下的Debug文件夾中。

圖1-5輸出窗口中的編譯信息

圖1-6輸出窗口中的連接信息

選擇Build→ExecuteProgramexam.exe命令(或單擊工具欄中的按鈕,或按【Ctrl+F5】組

合鍵),即可看到控制臺程序窗口中的運行結果,如圖1-7所示。

圖1-7程序exam.c的運行結果

(4)關閉工作區

每次完成對程序的操作后,必須安全地保存好已經建立的應用程序與數據,應正確地使用關

閉工作區來終止工程。

選擇File→SaveWorkspace命令,可以保存工作區的信息;選擇File→CloseWorkspace命令,

可以終止工程、保存工作區信息、關閉當前工作區;選擇File→Exit命令,可以退出VC++環境。

2.VisualC++2010

VisualC++2010學習版是VisualStudio2010的一個組件,是微軟公司的C++開發工具,具有

集成開發環境,用于編輯C語言、C++以及C++/CLI等編程語言。

1)VisualC++2010學習版主框架窗口

安裝VisualC++2010學習版后,選擇“開始”→“所有程序”→MicrosoftVisualStudio2010

Express→MicrosoftVisualC++2010Express命令,即可啟動VisualC++2010學習版集成開發環境,

啟動界面如圖1-8所示。

6

第1章進入C語言程序世界

圖1-8VisualC++2010學習版啟動界面

2)在VisualC++2010學習版中編譯C程序

①新建項目,如圖1-9所示。

圖1-9新建項目

②新建“Win32控制臺應用程序”,如圖1-10所示。

圖1-10新建“Win32控制臺應用程序”

7

C語言程序設計實訓

③在向導中選擇“空項目”,如圖1-11所示。

圖1-11在向導中選擇“空項目”

④右擊“源文件”,在彈出的快捷菜單中選擇“添加”→“新建項”命令,如圖1-12所示。

圖1-12選擇“添加”→“新建項”命令

⑤在添加項中選擇“C++文件”,輸入文件名,如圖1-13所示。

圖1-13添加“C++文件”

8

第1章進入C語言程序世界

⑥輸入程序代碼,如圖1-14所示。輸入完畢后,選擇“文件”→“全部保存”命令保存項目,

選擇“文件”→“保存”或“另存為”命令保存C++文件。

圖1-14輸入程序代碼

⑦選擇“生成”→“生成”(編譯)命令,如圖1-15所示。編譯結果如圖1-16所示。

圖1-15選擇“生成”→“生成”(編譯)命令

圖1-16編譯結果

⑧選擇“調試”→“開始執行”命令,如圖1-17所示。運行結果如圖1-18所示。

⑨每次完成對程序的操作后,必須安全地保存好已建立的應用程序與數據,應正確地使用關

閉解決方案來終止項目。選擇“文件”→“關閉解決方案”命令,如圖1-19所示。

VisualC++2010Express常用快捷鍵:

?Ctrl+N:相當于選擇“文件”→“新建”→“文件”命令。

9

C語言程序設計實訓

圖1-17開始執行

圖1-18運行結果

圖1-19關閉解決方案

?Ctrl+F7:編譯程序。

?F7:生成解決方案。

10

第1章進入C語言程序世界

?Ctrl+F5:運行程序。

?F5:調試程序。

小結

本章主要介紹了C語言的特點、程序結構、常用算法及程序運行過程。通過編寫運行幾個小程序,

熟悉C語言的開發環境。

實戰訓練

一、選擇題

1.對于一個正常運行的C程序,以下敘述中正確的是()。

A.程序的執行總是從main()函數開始,在main()函數中結束

B.程序的執行總是從程序的第一個函數開始,在main()函數中結束

C.程序的執行總是從main()函數開始,在程序的最后一個函數中結束

D.程序的執行總是從程序中的第一個函數開始,在程序的最后一個函數中結束

2.以下敘述不正確的是()。

A.一個C源程序可由一個或多個函數組成

B.一個C源程序必須包含一個main()函數

C.C程序的基本組成單位是函數

D.在C程序中注釋說明只能位于一條語句的后面

3.以下敘述中正確的是()。

A.C程序中的注釋只能出現在程序的開始位置和語句的后面

B.C程序書寫格式嚴格,要求一行內只能寫一條語句

C.C程序書寫格式自由,一條語句可以寫在多行上

D.用C語言編寫的程序只能放在一個程序文件中

4.下列說法正確的是()。

A.main()函數必須放在C程序的開頭

B.main()函數必須放在C程序的最后

C.main()函數可以放在C程序的中間部分,但在執行C程序時是從程序開頭執行的

D.main()函數可以放在C程序的中間部分,但在執行C程序時是從main()函數開始的

5.()是C程序的基本構成單位。

A.函數B.函數和過程C.超文本過程D.子程序

6.以下說法正確的是()。

A.C語言程序總是從第一個定義的函數開始執行

B.在C語言程序中,要調用的函數必須在main()函數中定義

C.C語言程序總是從main()函數開始執行

D.C語言程序中的main()函數必須放在程序的開始部分

11

C語言程序設計實訓

7.在C語言中,每條語句和數據定義用()結束。

A.句號B.逗號C.分號D.括號

8.C語言規定:在一個源程序中,main()函數的位置()。

A.必須在最開始B.必須在系統調用的庫函數的后面

C.可以在任意位置D.必須在源文件的最后

9.一個C語言程序由()。

A.一個主程序和若干子程序組成

B.函數組成,并且每個C程序必須且只能有一個主函數

C.若干過程組成

D.若干子程序組成

10.下列說法正確的是()。

A.在執行C程序時不是從main()函數開始的

B.C程序書寫格式嚴格限制,一行內必須寫一條語句

C.C程序書寫格式自由,一條語句可以分寫在多行上

D.C程序書寫格式嚴格限制,一行內必須寫一條語句,并要有行號

11.一個C程序可以包含任意多個不同名的函數,但有且僅有一個(),一個C程序總是

從()開始執行。

A.過程B.主函數C.函數D.include

12.C語言規定,必須用()作為主函數名。

A.functionB.includeC.mainD.stdio

13.以下敘述中正確的是()。

A.用C程序實現的算法必須要有輸入和輸出操作

B.用C程序實現的算法可以沒有輸出但必須要有輸入

C.用C程序實現的算法可以沒有輸入但必須要有輸出

D.用C程序實現的算法可以既沒有輸入也沒有輸出

二、判斷題

1.一個C程序由一個或多個函數組成。()

2.一個C程序必須包含一個main()函數。()

3.C程序的每一行可以寫多條語句。()

4.在C語言程序中main()函數必須放在程序的開始位置。()

5.C語言程序的開始執行點是程序中的main()函數。()

6.C程序的書寫格式雖然自由,但為了清晰,一般在一行內寫一條語句。()

7.分號是語句的必要組成部分,所以函數首部的后面和編譯預處理的后面都得加分號。

()

8.注釋在程序執行時不產生任何操作,因此在程序中不提倡注釋。()

9.C程序的書寫格式自由,一行內可以寫多條語句,一條語句也可以寫在多行上。

()

10.C程序中以#include和#de?ne開始的程序行均不是C語句。()

12

第1章進入C語言程序世界

11.一個C程序可以由若干源程序文件(分別進行編譯的文件模塊)組成。()

12.在C語言中運算符的優先級高低的排列順序是:逗號運算符、算術運算符、賦值運算符。

()

13.C程序書寫格式自由,一條語句可以寫在多行上。()

14.C語言程序由主函數和0個或多個函數組成。()

15.C語言程序由主程序和子程序組成。()

16.C語言程序由子程序組成。()

17.C語言程序由過程組成。()

18.C程序書寫格式嚴格,要求一行內只能寫一條語句。()

19.在對一個C程序進行編譯的過程中,可發現注釋中的拼寫錯誤。()

20.C語言源程序文件通過了編譯、連接之后,生成一個擴展名為.exe的文件。()

三、填空題

1.一個C程序的執行從函數開始。

2.一個C程序的執行隨著函數的結束而結束。

3.一個C程序必須包含一個函數。

4.C程序的基本組成單位是。

5.C程序最先執行的函數名為。

6.關鍵字是由C語言規定的具有特定意義的字符串,通常也稱。

7.C語言空語句的形式是。

8.C語言中,注釋部分以開始。

13

第2章

應用C的基礎知識實現

數據的運算與處理

C語言的數據結構是以數據類型形式出現的。數據類型是指數據的內部表示形式,它是進行

C語言程序設計的基礎。每種數據類型又分常量和變量,可以進行數據的運算。C語言的運算符極

其豐富,有30多種。本章將討論C語言的數據類型及運算符,主要是基本數據類型及運算符與表

達式等,通過對上述問題的訓練,使讀者能夠掌握C語言的基礎知識,為今后的程序設計打下基礎。

實訓目標

通過本章訓練,你將能夠:

掌握數據的基本類型。

掌握對變量與常量的賦值。

掌握常用的運算符,正確書寫表達式。

知識要點

1.標識符

①只能由英文字母、數字和下畫線組成,且第一個字符必為英文字母或下畫線。

②不允許使用關鍵字作為標識符的名字。

③有意義的標識符長度為前8個字符。

④標識符命名應以直觀且易于拼讀為宜。

⑤標識符區分大小寫。

2.變量

①變量是在程序執行過程中可以改變、可以賦值的量。

②定義形式:

類型變量名變量名…

1[,2,];

其中,方括號內的內容為可選項,可以同時聲明多個相同類型的變量,它們之間需要用逗號

14

第2章應用C的基礎知識實現數據的運算與處理

分隔。例如:

?oata,b,c

3.數據類型

①基本類型、構造類型、指針類型和空類型四大類。

②基本類型有整型、實型、字符型和枚舉類型。

③整型變量類型有int,long等。

④實型變量類型有?oat,double等。

⑤字符型變量類型char。用單引號包含的一個字符是字符型常量。用雙引號包含的任意個字

符是字符串常量。

4.運算符

①運算符按其功能分為算術運算符、關系運算符、邏輯運算符、賦值運算符、逗號運算符等。

②雙目算術運算符共有5個:+,-,*,/,%。注意:“/”是整數除法,還是實數除法。%運

算只適用于整型數。

③將一個常量或一個表達式的值賦給一個變量稱為賦值。

④自增和自減運算符及其表達式。

⑤強制類型轉換運算符及其表達式。

⑥逗號運算符與逗號表達式。

⑦不同類型數據之間的混合運算。

思想啟蒙

遵紀守法,無規矩不成方圓。凡事有度,過猶不及。

實例解析

一、數據類型

1.常量與變量

【實例2.1】地球近似一個球體,赤道半徑約6377.83km,求地球赤道周長。

解:

#include<stdio.h>

定義常量,值為

#de?nePI3.14/*PI3.14*/

voidmain()

{

?oatr,girth;

r=6377.83;

計算赤道周長

girth=2*PI*r;/**/

printf("girth=%.2f\n",girth);

}

15

C語言程序設計實訓

本程序運行結果為:

girth=40052.77

解析:

在C語言中并沒有字母π,只能用別的名稱代替,此例中定義了一個字符常量PI。地球赤

道周長約4萬千米,毛主席詩句“坐地日行八萬里,巡天遙看一千河”就提到過地球赤道周長的

數據。

相關知識

在程序運行過程中,其值不能被改變的量稱為常量。常量的值在其作用域內不能改變,也不

能再被賦值。習慣上,符號常量名用大寫,變量名用小寫,以示區別。C定義常量時需添加語句:

“#de?ne常量名常量定值”。

【實例2.2】求1~10的累加和。

解:

#include<stdio.h>

主函數

voidmain()/**/

{

定義變量,

inti,sum=0;/*isum*/

從到,共循環次

for(i=1;i<=10;i++)/*i11010*/

進行累加

sum=sum+i;/**/

輸出累加和

printf("sum=%d",sum);/**/

}

本程序運行結果為:

sum=55

解析:

本題中用到了一個for循環語句,其作用是讓i從1每次循環增加1。關于循環語句的使用將

在第5章學習。

相關知識

其值可以改變的量稱為變量。一個變量應該有一個名字,在內存中占據一定的存儲單元。注

意區分變量名和變量值這兩個不同的概念。標識符用來標識變量名、符號常量名、函數名、數組

名。文件名只能由字母、數字和下畫線三種字符組成,且第一個字符必須為字母或下畫線。

2.整型、實型與字符型數據

【實例2.3】若a=1,b=2,x=1.2,y=2.1,n=128765,c1='a',想得到以下的輸出格式和結果,

請寫出程序(包括定義變量類型和設計輸出)。

a=1b=2

x=1.200000,y=2.100000

y-x=0.900000,x+y=3.30

16

第2章應用C的基礎知識實現數據的運算與處理

n=128765

c1='a'or97

解:

#include<stdio.h>

voidmain()

{

inta,b;

longintn;

?oatx,y;

charc1;

a=1;b=2;

x=1.2;y=2.1;

n=128765;

c1='a';

printf("\n");

printf("a=%2db=%2d\n",a,b);

printf("x=%8.6f,y=%8.6f\n",x,y);

printf("y-x=%5.2f,x+y=%5.2f\n",y-x,x+y);

printf("n=%9ld\n",n);

printf("c1='%c'or%d\n",c1,c1);

}

相關知識

C語言的數據結構是以數據類型形式出現的。C的數據類型包括基本類型、構造類型、指針

類型和空類型。數據基本類型包括整型(int)、字符型(char)、實型(?oat、double?oat)和枚舉

類型。int對應的輸出格式字符為%d,若變量值較大時,可使用長整型(longint)。%md輸出格

式中,m為指定的輸出字段的寬度。若數據的輸出位數小于m,則左端補空格;若大于m,則按

實際位數輸出。?oat定義為實數(包括單、雙精),以小數輸出,%f默認輸出為6位小數,

視頻

%m.nf表示共輸出m列,其中n位小數。每個字符以ASCII碼存儲,用%c對應該字符,用

%d對應其ASCII碼。%e輸出格式表示以科學記數法表示,主要適用于?oat類型和double

類型。

【實例2.4】編寫C程序,從鍵盤輸入一個英文字母(不包括a、z、A、Z),在屏幕上

顯示出其前后相連的三個英文字母。實例2.4

解:

引用一個預處理文件

#include<stdio.h>/*stdio.h*/

voidmain()

{

定義字符變量

charc;/*c*/

獲得一個字符

c=getchar();/*c*/

if((c>'a'&&c<'z')||(c>'A'&&c<'Z'))

printf("%c%c%c\n",c-1,c,c+1);

}

17

C語言程序設計實訓

本程序運行結果為:

回車

B<>

ABC

解析:

程序中獲得字符c使用了getchar()函數,因此必須引用文件stdio.h。

二、運算符與表達式

1.算術運算符和算術表達式

【實例2.5】寫出以下程序的運行結果。

#include<stdio.h>

voidmain()

{

定義變量,,,

inti,j,m,n;/*ijmn*/

i=8;

j=10;

變量先加

m=++i;/*i*/

變量后加

n=j++;/*j*/

printf("%d,%d,%d,%d",i,j,m,n);

}

解:

本程序運行結果為:

9,11,9,10

解析:

程序中變量i和j都自身加1,所以輸出的i和j都增加了1。但二者又有所不同,m=++i是變

量i自增1后再把值傳給變量m;n=j++是先把j值傳給變量n后再自增1。

相關知識

自增運算符(++)和自減運算符(--)只能用于變量,而不能用于常量或表達式,如5++或(a+b)++

都是不合法的。它們的結合方向是“自右至左”。它們常用于后面章節的循環語句中,使循環變量

自動增加1,也用于指針變量,使指針指向下一個地址。

【實例2.6】強制類型轉換。

解:

#include<stdio.h>

voidmain()

{

定義為實型

?oatx;/*x*/

定義,為整型

intm,n;/*mn*/

給賦初值

x=2.7;/*x*/

18

第2章應用C的基礎知識實現數據的運算與處理

把強制轉換成整型賦值給

m=(int)x;/*xm*/

把加上的值強制取整再賦值給,可實現四舍五入取整

n=(int)(x+0.5);/*x0.5n*/

printf("x=%f,m=%d,n=%d",x,m,n);

}

本程序運行結果為:

x=2.70000,m=2,n=3

解析:

本題是把實型x強制轉換成整型,要把x前面的int用括號括起來。強制類型轉換的一般形式

為(類型名)(表達式),表達式應該用括號括起來。

相關知識

類型轉換有兩種。一種是在運算時不必用戶指定,系統自動進行的類型轉換。另一種是強制

類型轉換,當自動類型轉換不能實現目的時,可以用強制類型轉換。如“%”運算符要求其兩側均

為整型量,若x為?oat型,則“x%3”不合法,必須用“(int)x%3”。強制類型轉換運算優先于%

運算,因此先進行(int)x運算,再對3取模。

2.賦值運算符和賦值表達式

【實例2.7】若a的初值為12,求賦值表達式a+=a-=a*a中a的最終值。

解析:以下為此賦值表達式的求解步驟。

①先進行“a-=a*a”運算,相當于a=a-a*a=12-144=-132,此時a的值由12變成-132。

②進行“a+=-132”運算,相當于a=a+(-132)=-132-132=-264。

相關知識

進行表達式運算時,要注意運算順序,它是根據運算符的優先級(可以參考主教材附錄中的

運算符優先順序表)進行的。在賦值符“=”之前加上其他運算符,可以構成復合的賦值運算符。

比如“a+=3”等價于“a=a+3”。采用這種復合運算符,一是為了簡化程序,使程序精練;二是為了

提高編譯效率。

下面是賦值表達式的例子:

賦值表達式值為,,,值均為

a=b=c=5/*5abc5*/

表達式值為,值為,值為

a=5+(c=6)/*11a11c6*/

表達式值為,值為,等于,等于

a=(b=4)+(c=6)/*10a10b4c6*/

表達式值為,值為,等于,等于

a=(b=10)/(c=2)/*5a5b10c2*/

3.逗號運算符和逗號表達式

C語言提供一種特殊的運算符——“逗號運算符”。可以用逗號運算符將兩個表達式連接起來。

如“3+5,6+8”稱為逗號表達式,又稱“順序求值運算符”。一般形式為:

表達式表達式

1,2

逗號表達式的求解過程:先求解表達式1,再求解表達式2。整個逗號表達式的值是表達式2

19

C語言程序設計實訓

的值。例如,逗號表達式“3+5,6+8”的值為14。又如,“a=3*5,a*4”,由于逗號運算符的優先級低

于賦值運算符,因此先求解a=3*5,后求解a*4,得60,但a值是15。

逗號表達式的一般形式可以擴展為:

表達式表達式表達式…表達式

1,2,3,,n

它的值為表達式n的值。

小結

本章是以后進行編程的基礎,知識點較分散,注意系統學習后,也要在實驗時有針對性地進

行訓練。本章介紹的只有基本數據類型,其他類型會在以后進行學習。還有一些運算符,會在其

他章節介紹。

實戰訓練

一、選擇題

1.若x,i,j,k都是int型變量,則計算下面表達式后,x的值為()。

x=(i=4,j=16,k=32)

A.4B.16C.32D.56

2.按照C語言規定的用戶標識符命名規則,不能出現在標識符中的是()。

A.大寫字母B.連接符C.數字字符D.下畫線

3.定義intx=10,y,z;并執行y=z=x;x=y==z;后,變量x的值為()。

A.10B.1C.0D.100

4.假定x和y為double型,則表達式x=2,y=x+3/2的值是()。

A.3.5B.3.0C.2.0D.2.5

5.可用作C語言用戶標識符的一組標識符是()。

A.void、de?ne、WORDB.a3_b3、_123、IF

C.FOR、--abc、CaseD.2a、Do、Sizeof

6.能正確表示邏輯關系“a≥10或a≤0”的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論