C語言程序設計技術實踐指導_第1頁
C語言程序設計技術實踐指導_第2頁
C語言程序設計技術實踐指導_第3頁
C語言程序設計技術實踐指導_第4頁
C語言程序設計技術實踐指導_第5頁
已閱讀5頁,還剩202頁未讀, 繼續(xù)免費閱讀

付費閱讀全文

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

文檔簡介

高等學?!笆奈濉币?guī)劃教材

河南省一流本科課程(線上/線下混合式一流課程)教材

C語言程序設計技術

實踐指導

王鵬遠程靜蘇虹等◎編著

內容簡介

本書是與《C語言程序設計技術》(尚展壘等編著,中國鐵道出版社有限公司出版)配套使用

的實踐指導用書,每個實驗對應主教材的相關內容。本書的每個實驗項目均在VisualStudio2019

下調試通過。本書除綜合實驗外,每個實驗包括實驗學時、實驗目的和要求、實驗要點概述、實驗

項目、實驗作業(yè)和實驗報告要求等內容。每個實驗內容由易到難,代碼由簡單到復雜,讀者可循序

漸進地掌握相應的知識點,讓讀者思考,以達到靈活運用的目的。實驗20為綜合實驗,是本書的

特色,該實驗涉及C語言多個知識點,注重非計算機專業(yè)學生計算思維能力的培養(yǎng)。附錄對全國

計算機等級考試(二級C語言)從考試大綱、樣題和運行環(huán)境進行全面介紹。

本書適合作為高等院?!癈語言程序設計”課程的實踐教材,也可作為各種培訓班和編程愛好

者以及參加全國計算機等級考試(二級C語言)人員的自學參考用書。

圖書在版編目(CIP)數(shù)據(jù)

C語言程序設計技術實踐指導/王鵬遠等編著.—北京:

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

高等學?!笆奈濉币?guī)劃教材

ISBN978-7-113-28744-3

Ⅰ.①C…Ⅱ.①王…Ⅲ.①C語言-程序設計-高等

學校-教材Ⅳ.①TP312.8

中國版本圖書館CIP數(shù)據(jù)核字(2021)第279278號

書名:C語言程序設計技術實踐指導

CYUYANCHENGXUSHEJIJISHUSHIJIANZHIDAO

作者:王鵬遠程靜蘇虹等

策劃:翟玉峰編輯部電話:(010)83517321

責任編輯:翟玉峰徐盼欣

封面設計:尚明龍

責任校對:安海燕

責任印制:樊啟鵬

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

網(wǎng)址:/51eds/

印刷:三河市宏盛印務有限公司

版次:2022年1月第1版2022年1月第1次印刷

開本:787mm×1092mm1/16印張:12.75字數(shù):331千

書號:ISBN978-7-113-28744-3

定價:36.00元

版權所有侵權必究

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

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

前言

C語言從誕生之日起就一直保持著旺盛的生命力,并且不斷發(fā)展壯大、日臻完善,已經(jīng)成為

目前使用最廣泛的編程語言之一。與其他高級語言相比,C語言處理功能豐富,表達能力強,使

用靈活方便,執(zhí)行程序效率高,可移植性強;具有豐富的數(shù)據(jù)類型和運算符,語句非常簡單,源

程序簡潔清晰;可以直接處理硬件系統(tǒng)和對外圍設備接口進行控制。C語言是一種結構化的程序

設計語言,支持自頂向下、逐步求精的結構化程序設計技術。另外,C語言程序的函數(shù)結構為實

現(xiàn)程序的模塊化設計提供了強有力的保障。因此,縱然有C++、Java和Python等后繼者,但到目

前為止,它們依然沒有取代C的跡象。

本書編者全部是一直工作于高等學校教學一線、承擔“C語言程序設計”課程教學多年的大

學教師,有豐富的教學經(jīng)驗,長期從事C語言編程工作,并有著將自己積累的“C語言程序設計”

經(jīng)驗介紹給大家的強烈愿望。編者單位鄭州輕工業(yè)大學的“程序設計技術(C語言)”課程在2020

年5月被認定為首批河南省一流本科課程(線上線下混合式一流課程)。本書作為《C語言程序設

計技術》(尚展壘等編著,中國鐵道出版社有限公司出版)配套使用的學習用書,共設計20個實

驗,將C語言的內容由淺入深、層次分明地娓娓道來,非常適合編程初學者思維模式的培養(yǎng)及訓

練。除綜合實驗外,每個實驗均包括實驗學時、實驗目的和要求、實驗要點概述、實驗項目、實

驗作業(yè)和實驗報告要求等內容。實驗學時為建議學時,可根據(jù)教學需要進行適當增減;實驗目的

和要求將本次實驗的知識點和實驗所要達到的目的加以明確;實驗要點概述為該次實驗所要使用

到的知識點;實驗項目由若干子項目組成,每個項目都對題目進行了詳細的分析并提供了源程序,

實驗項目從易到難,使讀者逐步掌握相關的知識點,讀者可結合實際情況對實驗項目做適當刪減;

實驗作業(yè)要求讀者獨立完成,以檢驗是否達到了本次實驗的要求;實驗報告要求讀者記錄下實驗

中的要點以及自己的體會,為今后的學習提供參考。本書的最后一個實驗為綜合實驗,該實驗要

求的功能較多,需要綜合C語言所學到的多個知識點,如程序設計的三種基本結構、文件、函數(shù)、

數(shù)組、結構體、結構數(shù)組等,讀者通過該實驗能夠鞏固C語言所涉及的所有基礎知識。

各實驗的主要內容如下:

實驗1“VisualStudio2019下C程序開發(fā)環(huán)境的初步使用”,介紹在VisualStudio2019下如

何創(chuàng)建和運行C程序。

實驗2“C語言中的基本數(shù)據(jù)類型”,對應教材的第2章,介紹了C語言中的常量,不同數(shù)據(jù)

類型變量的定義、使用,輸入/輸出格式等內容。

實驗3“C語言中的運算符與表達式”,對應教材的第3章,介紹了C語言中的運算符和表達

式的基本使用方法。

IIC語言程序設計技術實踐指導

實驗4“編譯預處理與常用庫函數(shù)”,對應教材的第4章,介紹了宏、文件包含以及C語言中

的庫函數(shù)的使用方法。

實驗5“選擇結構程序設計”,對應教材的第5章,介紹了單分支、雙分支及多分支選擇結構

的使用方法。

實驗6“循環(huán)結構程序設計(1)”和實驗7“循環(huán)結構程序設計(2)”,對應教材的第6章,

介紹了while、for、do…while和多重循環(huán)結構的使用方法。

實驗8“函數(shù)的定義與調用”和實驗9“函數(shù)的傳址引用與遞歸調用”,對應教材的第7章,

介紹了函數(shù)的基本使用方法。

實驗10“一維數(shù)組及其指針運算”、實驗11“二維數(shù)組及其指針運算”和實驗12“使用內存

動態(tài)分配實現(xiàn)動態(tài)數(shù)組”,對應教材第8章,介紹了數(shù)組的基本使用方法。

實驗13“字符數(shù)組與字符串”,對應教材的第9章,介紹了字符數(shù)組和字符串的基本使用方法。

實驗14“結構與聯(lián)合”,對應教材的第10章,重點介紹了結構和結構數(shù)組的使用方法。

實驗15“記錄數(shù)確定的順序文件操作”和實驗16“記錄數(shù)不確定的順序文件操作”,對應教

材的第11章,介紹了文件的基本使用方法,以及文件與數(shù)組、函數(shù)相結合的使用方法。

實驗17“指針的應用及鏈表的基本操作”,對應教材的第12章,介紹指針和鏈表的基本使用方法。

實驗18“位運算”,對應教材的第13章,介紹了位運算的基本使用方法。

實驗19“簡單C++程序設計”,對應教材的第14章,介紹了C++程序中的基本輸入和輸出。

實驗20“綜合實驗”,介紹了C語言項目開發(fā)的全過程,為讀者開發(fā)較為復雜的C項目奠定

基礎。

以上各部分都可以獨立教學,自成體系,教師可根據(jù)情況適當取舍。在本書的編寫過程中參

考了許多同行的著作,在此對其作者表達感謝之情。感謝鄭州輕工業(yè)大學和中國鐵道出版社有限

公司的大力支持,感謝各位編輯的辛苦工作,正是由于他們的幫助和支持才使本書得以順利付印。

本書由鄭州輕工業(yè)大學王鵬遠、程靜、蘇虹、尚展壘、陳嫄玲、李萍和張凱編著。實驗1、

實驗3、實驗13和實驗18由張凱編寫,實驗2、實驗5和實驗20由蘇虹編寫,實驗4、實驗8、

實驗9和實驗17由程靜編寫,實驗6、實驗7和附錄由陳嫄玲編寫,實驗10、實驗11、實驗12、

實驗15和實驗16由王鵬遠編寫,實驗19由李萍編寫,實驗14由尚展壘和陳嫄玲聯(lián)合編寫。在

組織編寫過程中,王鵬遠負責本書的架構策劃,程靜和蘇虹負責本書的統(tǒng)稿定稿工作。

如果您能夠愉快地讀完本書,并告知身邊的朋友,原來C語言并不難學,那就是編者最大的

欣慰。盡管編者盡了最大努力,也有良好而負責任的態(tài)度,但是由于學識所限,難免存在疏漏與

不足,懇請各位讀者批評指正,以便再版時修訂。

編者

2021年10月

目錄

實驗1VisualStudio2019下C程序開發(fā)環(huán)境的初步使用.............................1

實驗2C語言中的基本數(shù)據(jù)類型...................................................................13

實驗3C語言中的運算符與表達式................................................................23

實驗4編譯預處理與常用庫函數(shù)...................................................................30

實驗5選擇結構程序設計.............................................................................42

實驗6循環(huán)結構程序設計(1).....................................................................51

實驗7循環(huán)結構程序設計(2).....................................................................61

實驗8函數(shù)的定義與調用.............................................................................74

實驗9函數(shù)的傳址引用與遞歸調用...............................................................82

實驗10一維數(shù)組及其指針運算....................................................................88

實驗11二維數(shù)組及其指針運算.....................................................................98

實驗12使用內存動態(tài)分配實現(xiàn)動態(tài)數(shù)組.....................................................104

實驗13字符數(shù)組與字符串.........................................................................109

實驗14結構與聯(lián)合....................................................................................117

實驗15記錄數(shù)確定的順序文件操作............................................................125

實驗16記錄數(shù)不確定的順序文件操作........................................................135

實驗17指針的應用及鏈表的基本操作........................................................141

實驗18位運算...........................................................................................157

實驗19簡單C++程序設計.........................................................................162

實驗20綜合實驗.......................................................................................165

附錄全國計算機等級考試(二級C語言)考試指導....................................179

參考文獻.......................................................................................................198

實驗1VisualStudio2019下

C程序開發(fā)環(huán)境的初步使用

本實驗介紹了程序設計語言的分類及特點、C語言的產(chǎn)生、算法的概念及特性、算法的描述

方法以及軟件的編制步驟等。在本實驗中,將了解VisualStudio2019的編程環(huán)境,掌握C程序的

編譯過程,通過簡單實例,將設計的算法使用流程圖進行表示并根據(jù)算法描述編制出C源程序,

進一步編譯、連接、運行,掌握C語言程序的基本結構及編譯運行流程。

一、實驗學時

2學時。

二、實驗目的和要求

(1)熟悉VisualStudio2019運行環(huán)境。

(2)學習VisualStudio2019編程環(huán)境下C程序的創(chuàng)建、編寫和調試過程。

(3)掌握用流程圖描述算法。

三、實驗要點概述

1.C語言簡介

C語言是一門通用計算機編程語言,廣泛應用于底層開發(fā)。C語言的設計目標是提供一種能

以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行

的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好的跨平臺特性,以一個標準規(guī)格

寫出的C語言程序可在各種計算機上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)

以及超級計算機等作業(yè)平臺。20世紀80年代,為了避免各開發(fā)廠商用的C語言語法產(chǎn)生差異,

美國國家標準局為C語言制定了一套完整的美國國家標準語法,稱為ANSIC,作為C語言最初的

標準。

C語言是一門面向過程的計算機編程語言,其編譯器主要有VisualStudio、DevC++、Xcode、

VisualC++6.0、Code::Blocks、BorlandC++等。

2C語言程序設計技術實踐指導

2.VisualStudio簡介

VisualStudio是微軟公司推出的開發(fā)環(huán)境,是目前流行的Windows平臺應用程序開發(fā)環(huán)境之

一。VisualStudio可以用來創(chuàng)建Windows平臺下的Windows應用程序和網(wǎng)絡應用程序,也可以用

來創(chuàng)建網(wǎng)絡服務、智能設備應用程序和Office插件。

當前較常用版本為VisualStudio2019版本,基于.NETFramework4.8。對新增功能的簡要概括

為以下三點:

(1)開發(fā):通過改進的性能、即時代碼清理和更好的搜索結果來保持專注和高效。

(2)協(xié)作:在VisualStudio2019中,通過Git優(yōu)先工作流、實時編輯和調試,以及代碼評審,

即可盡情享受自然協(xié)作。

(3)調試:突出顯示并導航到特定值、優(yōu)化內存使用,并可對應用程序的執(zhí)行進行自動快照。

四、實驗項目

【實驗項目1】認識開發(fā)環(huán)境,了解C源程序從創(chuàng)建到運行的過程。

該實驗項目的操作步驟如下:

(1)在Windows中,選擇“開始”→“所有程序”→“Visual

Studio2019”命令或雙擊桌面上的“VisualStudio2019”快捷

圖標(見圖1-1),即可啟動VisualStudio2019開發(fā)環(huán)境(見

圖1-1VisualStudio2019快捷圖標

圖1-2)。

圖1-2VisualStudio2019啟動界面

(2)啟動VisualStudio2019后,選擇“創(chuàng)建新項目”,進入“創(chuàng)建新項目”界面,如圖1-3

所示。在該界面中,選擇“空項目”后,單擊“下一步”按鈕,出現(xiàn)圖1-4所示的界面。在“項

目名稱”文本框中輸入項目名稱(本項目中使用HelloWorld),單擊“位置”右側的“瀏覽”按鈕

選擇存儲該項目的位置(本項目所使用的是F:\MyProject);單擊“創(chuàng)建”按鈕,進入圖1-5所示

的VisualStudio2019主窗口界面。

實驗1VisualStudio2019下C程序開發(fā)環(huán)境的初步使用3

圖1-3VisualStudio2019“創(chuàng)建新項目”界面

圖1-4VisualStudio2019“配置新項目”界面

圖1-5VisualStudio2019主窗口界面

4C語言程序設計技術實踐指導

如果在打開的項目中創(chuàng)建新項目,可選擇“文件”→“新建”→“項目”命令,如圖1-6所

示,彈出“新建項目”對話框。

圖1-6“文件”中新建項目

(3)在“解決方案資源管理器”中右擊“源文件”,在彈出的快捷菜單中選擇“添加”→“新

建項”命令,如圖1-7所示。彈出“添加新項”對話框,如圖1-8所示。

圖1-7選擇為項目添加新建項

實驗1VisualStudio2019下C程序開發(fā)環(huán)境的初步使用5

圖1-8“添加新項”對話框

(4)在圖1-8所示的“添加新項”對話框中間選擇“C++文件(.cpp)”選項,輸入名稱(本

實驗中的名稱為HWSourceFile),如需更改存儲位置。單擊“瀏覽”按鈕選擇,通常情況下使用

默認路徑(使創(chuàng)建的資源文件和該項目的其他文件位于同一文件夾中)。最后單擊“添加”按鈕,

打開圖1-9所示的源文件編輯窗口,可在光標閃爍的位置編寫源文件。

圖1-9源文件編輯窗口

6C語言程序設計技術實踐指導

(5)在源文件編輯窗口中可以輸入源程序代碼。本實驗項目輸入以下C程序,如圖1-10所示。

#include<stdio.h>

#include<stdlib.h>

intmain()

{

printf("HelloWorld!\n");

system("pause");

return0;

}

圖1-10在源文件編輯窗口中編寫源程序代碼

main()是主函數(shù)的函數(shù)名,表示這是一個主函數(shù)。每個C源程序都必須有且只能有一個主函

數(shù)(main()函數(shù))?!皉eturn0;”表示intmain()函數(shù)執(zhí)行成功,返回0。主函數(shù)的說明也可定義為void

main()或main(),此時可省略return語句。

printf()函數(shù)的功能是把要輸出的內容送到顯示器去顯示。printf()函數(shù)是一個在stdio.h文件中

定義的標準函數(shù),可在程序中直接調用,因此源程序首部要書寫預處理語句#include<stdio.h>或

#include"stdio.h"。

語句“system("pause");”執(zhí)行系統(tǒng)環(huán)境中的pause命令,起暫停作用,等待用戶信號;如果沒

有這條語句控制臺程序會一閃即過,來不及看清執(zhí)行結果。system()函數(shù)是C語言標準庫的一個

函數(shù),定義在“stdlib.h”中,可以調用系統(tǒng)環(huán)境中的程序。

至此,就在F盤的MyProject文件夾下創(chuàng)建了HelloWorld源程序文件。

C語言編寫的源程序是不能直接運行的。因為計算機只能識別和執(zhí)行由1和0組成的二進制

代碼指令,不能識別和執(zhí)行由高級語言編寫的源程序。源程序是用某種程序設計語言編寫的程序,

實驗1VisualStudio2019下C程序開發(fā)環(huán)境的初步使用7

其中的程序代碼稱為源代碼。因此,一個高級語言編寫的源程序,必須用編譯程序把高級語言程

序翻譯成機器能夠識別的二進制目標程序,通過系統(tǒng)提供的庫函數(shù)和其他目標程序的連接,形成

可以被機器執(zhí)行的目標程序。所以,一個C語言源程序到擴展名為.exe的可執(zhí)行文件,一般需要

經(jīng)過編輯、編譯、連接、運行四個步驟。上面編輯的源程序HWSourceFile.cpp要想讓計算機執(zhí)行,

需要經(jīng)過圖1-11所示的步驟進行編譯連接。

圖1-11C語言源程序編譯連接流程

編譯時,會對源程序文件HWSourceFile.cpp中的語法錯誤進行檢測,并在信息輸出窗口中給

出反饋,程序設計人員根據(jù)提示將錯誤一一糾正后完成編譯,形成目標文件HelloWorld.pdb。連

接是將程序中所加載的頭函數(shù)及其他文件連接在一起,形成完整的可執(zhí)行文件HelloWorld.exe。

在項目管理模式下,源文件輸入、編輯完成后選擇“文件”→“保存”命令保存文件,然后

按下面的步驟對其進行編譯、連接和運行。

(6)在工具欄中進行圖1-12的選擇后點擊“本地Windows調試器”按鈕,程序編譯后,彈

出圖1-13所示的運行結果。

圖1-12啟動“本地Windows調試器”圖1-13實驗項目1運行結果

如果將該程序中的“#include<stdlib.h>”和“system("pause");”兩行程序刪除掉,再“啟動調

試”,程序調試沒有錯誤,而是出現(xiàn)圖1-14所示的程序結果,可按任意鍵關閉該窗口。

圖1-14無system("pause")語句時實驗項目1運行結果

當程序有語法錯誤時,會彈出圖1-15所示的對話框,單擊“否”按鈕。

圖1-15程序錯誤對話框

8C語言程序設計技術實踐指導

源程序編譯信息將會在信息輸出窗口中出現(xiàn)。如果程序有語法錯誤,出錯信息就顯示在信息

輸出窗口中,包括錯誤的個數(shù)、位置、類型,可以直接雙擊錯誤信息,系統(tǒng)可以實現(xiàn)錯誤的自動

定位,如圖1-16所示。這方便了程序設計人員對程序的錯誤進行修改。對源文件出錯信息修改

后再編譯,一直到源程序正確為止。

圖1-16編譯出錯時輸出的信息

在圖1-16所示的信息輸出窗口中,看到了源程序HWSourceFile.cpp的編譯錯誤有“生成:成

功0個,失敗1個,最新0個,跳過0個”的錯誤提示,錯誤信息為:【1>F:\MyProject\HelloWorld\

HelloWorld\HWSourceFile.cpp(8,5):errorC2146:語法錯誤:缺少“;”(在標識符“system”的前面)】,

此行信息可以確定錯誤發(fā)生在HWSourceFile.cpp文件的第8行,并且是語法錯誤,根據(jù)提示信息

得知“system”前丟失了分號“;”,可以直接雙擊錯誤信息行,系統(tǒng)會定位到發(fā)生錯誤的位置,

即程序中的第8行,在“system”之前補寫上分號“;”,即在程序第6行語句結束位置補寫分號

“;”,再次編譯即可。如果程序中沒有錯誤,直接執(zhí)行程序,系統(tǒng)已生成目標文件HWSourceFile.pdb,

并保存于工程下的debug文件夾中。

要注意的是,C語言源程序的每一條語句需要以“;”作為語句結束,但預處理命令、函數(shù)頭

和花括號“}”之后不能加分號。

以上就是在VisualStudio2019中創(chuàng)建C程序的方式,實現(xiàn)了C程序的編輯、編譯、連接、運

行的全過程。

說明:

①一個項目可以包含多個源程序文件和頭文件,但是源程序文件至少有一個,而頭文件可以

允許沒有;當一個項目包含多個源程序文件時,只能有一個源程序文件包含main()函數(shù),也就是

說,一個項目文件只能有一個main()函數(shù),否則將會發(fā)生編譯錯誤。

②若打開原來已存盤的項目,選擇“文件”→“打開”→“項目/解決方案”命令,在對話

框中選擇項目所在的路徑,選擇項目的.sln文件(該文件是在創(chuàng)建項目時自動生成的項目解決方

案),單擊“打開”按鈕,編輯、連接、運行等步驟與前面項目管理模式相同。

實驗1VisualStudio2019下C程序開發(fā)環(huán)境的初步使用9

③在VisualStudio2019環(huán)境下編輯C程序,對于單行注釋允許慣用的簡化標記符“//”,對

于多行注釋,需使用“/*-----*/”標記形式。

④從書寫清晰,便于閱讀、理解、維護的角度出發(fā),在書寫程序時應遵循以下規(guī)則:

一個說明或一個語句占一行。

用{}括起來的部分,通常表示程序的某一層次結構。{}一般與該結構語句的第一個字母對

齊,并單獨占一行。低一層次的語句或說明可比高一層次的語句或說明縮進若干格后書寫,

以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規(guī)則,以養(yǎng)成良好的

編程風格。

(7)要退出VisualStudio2019開發(fā)環(huán)境,可選擇“文件”→“退出”命

令,或單擊開發(fā)環(huán)境右上角的“關閉”按鈕退出VisualStudio2019。

【實驗項目2】要求“輸入任意三個整數(shù),求它們的和及平均值”,繪

制程序流程圖,在VisualStudio2019中輸入程序,驗證程序運行結果。

(1)繪制流程圖。此問題是一個簡單的輸入、求解、輸出的過程,是

典型的順序算法,流程圖用到的基本組件有起止框、輸入/輸出框、處理框、

流程線。程序流程圖如圖1-17所示。

(2)選擇“開始”→“所有程序”→“VisualStudio2019”命令,啟

動VisualStudio2019。

(3)選擇“創(chuàng)建新項目”,新建“空項目”,在“配置新項目”中選

擇存儲路徑及設定項目名稱。

(4)右擊“源文件”,在彈出的快捷菜單中選擇“添加”→“新建項”

命令,在彈出的對話框中選擇“C++文件(.cpp)”,輸入文件名,添加到

步驟(2)創(chuàng)建的工程中。圖1-17程序流程圖

(5)在程序編輯窗口中輸入如下代碼,如圖1-18所示。

#include<stdio.h>

#include<stdlib.h>

intmain()

{

intnum1,num2,num3,sum;

floataver;

printf("Pleaseinputthreenumbers:\n");

scanf("%d%d%d",&num1,&num2,&num3);/*輸入三個整數(shù)*/

sum=num1+num2+num3;/*求累計和*/

aver=sum/3.0;/*求平均值*/

printf("num1=%d,num2=%d,num3=%d\n",num1,num2,num3);

printf("sum=%d,aver=%7.2f\n",sum,aver);

system("pause");

return0;

}

10C語言程序設計技術實踐指導

圖1-18實驗項目2程序編輯窗口

(6)單擊工具欄中的“本地Windows調試器”按鈕,進行調試,如果沒有語法錯誤,彈出

程序運行界面;如出現(xiàn)錯誤,則根據(jù)錯誤提示修改源程序,直到編譯成功為止。若出現(xiàn)錯誤,

一般是庫函數(shù)連接不成功,要檢查開發(fā)環(huán)境。若對開發(fā)環(huán)境不是很熟悉,可新建項目重啟環(huán)境。

在該實驗中存在錯誤,程序無法執(zhí)行。雙擊第一個錯誤【1>F:\MyProject\Ex02\Ex02\

intSum.cpp(10,5):errorC4996:'scanf':Thisfunctionorvariablemaybeunsafe.Considerusingscanf_s

instead.Todisabledeprecation,use_CRT_SECURE_NO_WARNINGS.Seeonlinehelpfordetails.】。我

們先看scanf()和scanf_s()這兩個函數(shù)。

scanf()函數(shù)是標準C中提供的標準輸入函數(shù),用來輸入數(shù)據(jù)。

scanf_s()函數(shù)是Microsoft公司VisualStudio開發(fā)工具提供的一個安全標準輸入函數(shù),從Visual

Studio2005開始,系統(tǒng)提供了scanf_s()函數(shù)。

對于這樣的錯誤,有三種處理方法。

第一種,在使用VisualStudio2019時記住每次寫scanf()時全都寫成scanf_s()。

第二種,在VisualStudio2019中,選擇“項目”→“Ex02屬性”(本實驗項目中的項目為Ex02,

因此為Ex02屬性)命令,如圖1-19所示。在“Ex02屬性頁”對話框中,選擇“C/C++”→“代

碼生成”→“安全檢查”,在下拉列表框中選擇“禁用安全檢查(/GS-)”,如圖1-20所示,單擊“確

定”按鈕。

第三種,在程序最開始部分加上宏:

#define_CRT_SECURE_NO_WARNINGS1

以解除scanf()函數(shù)的不安全問題。

本書遵循保持標準C函數(shù)且不增加代碼行的原則,采用第二種方式。

實驗1VisualStudio2019下C程序開發(fā)環(huán)境的初步使用11

圖1-19項目屬性的選擇圖1-20選擇“禁用安全檢查”

連接正確后,單擊工具欄中的“本地Windows調試器”按鈕,執(zhí)行程序,轉入圖1-21所示

的運行界面。

該程序是一個典型的順序結構流程,要得到運算結果,必須先有操作數(shù)據(jù),界面上的提示信

息是程序中的“printf("Pleaseinputthreenumbers:\n");”語句執(zhí)行的結果,提示要求用戶輸入三個

數(shù)據(jù)。接下來執(zhí)行到“scanf("%d%d%d",&num1,&num2,&num3);”語句,用戶在界面上輸入三個數(shù)

據(jù),將會被分別存放在三個變量num1、num2和num3中。通過運行“sum=num1+num2+num3;”

和“aver=sum/3.0;”語句得到和及平均值,并存放在變量sum和aver中。最后執(zhí)行兩條輸出語句

“printf("num1=%d,num2=%d,num3=%d\n",num1,num2,num3);”和“printf("sum=%d,aver=%7.2f\n",sum,aver);”,

程序運行結果如圖1-22所示。

圖1-21程序運行界面圖1-22實驗項目2運行結果

五、實驗作業(yè)

1.實驗項目1中,如果去掉#include<stdio.h>,程序能否正常運行?為什么?

2.實驗項目1中,去掉每個printf語句后的分號“;”,觀察編譯錯誤提示。

3.實驗項目2中,去掉每個printf語句中的“\n”,觀察程序運行情況,思考“\n”的作用。

4.實驗項目2中,如果去掉“intnum1,num2,num3,sum;”語句,程序能否正常運行?為什么?

5.用程序流程圖設計算法:輸入一個數(shù)n,求出n!。

6.創(chuàng)建程序,在顯示器屏幕上輸出圖1-23所示的圖案。

7.從鍵盤輸入兩個整數(shù),輸出這兩個數(shù)的乘積。

8.運行以下程序,如果程序有錯誤,請找出錯誤,指出錯誤

圖1-23實驗作業(yè)6運行界面

原因并改正。

12C語言程序設計技術實踐指導

#include<stdio.h>

#include<stdlib.h>

intmain()

{

inta=10,b=20;

intsum=A+b;

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

system("pause");

return0;

}

9.運行以下程序,如果程序有錯誤,請找出錯誤,指出錯誤原因并改正。

#include<stdlib.h>

intmian()

{

intnum;

printf("Enternum:\n");

scanf("%d",&num);

if(num<0)

num=-num

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

system("pause");

return0;

}

10.運行以下程序,指出該程序的功能,并分析運行結果。

#include<stdio.h>

#include<stdlib.h>

intmain()

{

intsum=0,i;

for(i=10;i<=20;i++)

{

if(i%2==0&&i%3==0)

{

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

sum=sum+i;

}

}

printf("sum=%d\n",sum);

system("pause");

return0;

}

六、實驗報告要求

結合實驗準備方案、實驗過程記錄及實驗作業(yè),總結VisualStudio2019編程環(huán)境下C程序的

創(chuàng)建、編寫和調試過程。

認真書寫實驗報告,分析自己在編譯過程中出現(xiàn)的錯誤,并說明原因。

實驗2C語言中的基本數(shù)據(jù)類型

本實驗主要針對C語言的數(shù)據(jù)類型,包括基本數(shù)據(jù)類型、構造數(shù)據(jù)類型、指針數(shù)據(jù)類型和空

數(shù)據(jù)類型,其中基本數(shù)據(jù)類型包括整型、實型、字符型等。另外還有變量與常量、變量與數(shù)據(jù)類

型所占內存空間的計算、不同類型數(shù)據(jù)之間的轉換以及數(shù)據(jù)的輸入與輸出。

一、實驗學時

2學時。

二、實驗目的和要求

(1)掌握變量的定義、賦值及使用。

(2)掌握符號常量的定義方法。

(3)掌握不同類型數(shù)據(jù)之間轉換的方式,包括自動類型轉換及強制類型轉換。

(4)掌握輸入/輸出函數(shù)的基本應用。

(5)初步了解指針型變量。

三、實驗要點概述

1.掌握變量的定義、賦值及使用

1)變量的定義

變量定義的格式:

類型說明符變量名l,變量名2,…;

其中,類型說明符(又稱類型關鍵字)是C語言中用來說明變量的數(shù)據(jù)類型的,它必須是一

個有效的數(shù)據(jù)類型。初學者常用的有整型類型說明符int、字符型類型說明符char、單精度實型

float、雙精度實型double等。例如:

inti;//定義i為整型變量

charch;//定義ch為字符型變量

floatx,y;//定義x和y為單精度實型變量

2)變量的賦值

變量賦值的格式:

變量名=表達式;

14C語言程序設計技術實踐指導

其中,表達式可以是常量、變量、函數(shù)以及其他各類表達式。賦值后,變量的值將由新值

取代。

C語言允許對變量連續(xù)賦值,可以寫成

變量=(變量=表達式);

變量=變量=…=表達式;

為變量賦值要注意:

(1)如果表達式中含有變量,此變量之前必須已經(jīng)賦值。

(2)給變量賦值,必要時自動進行數(shù)據(jù)類型轉換。例如:

intx='a';//將字符型數(shù)據(jù)轉換為整型數(shù)據(jù)賦予變量x

(3)賦值語句“=”左側只能是變量,不可以是表達式、常量、函數(shù)等。

(4)不能將字符串常量賦值給字符型變量。

(5)不能在變量聲明語句中給多個變量連續(xù)賦值,例如:

inta=b=c=2;//該語句是非法的

3)變量的類型

變量的類型包括整型變量、實型變量、字符型變量。

(1)整型變量。整型變量包括:

有符號基本整型:[signed]int。

有符號短整型:[signed]short[int]。

有符號長整型:[signed]long[int]。

無符號基本整型:unsigned[int]。

無符號短整型:unsignedshort[int]。

無符號長整型:unsignedlong[int]。

整型數(shù)據(jù)的溢出:

一個int型變量的最大允許值為2147483647,如果再加1,其結果不是2147483648,而

是-2147483648,因為發(fā)生了“溢出”。同樣,一個int型變量的最小允許值為-2147483648,

如果再減1,其結果不是-2147483649而是2147483647,也發(fā)生了“溢出”。所以在使用整

型變量時要注意其值的溢出。

(2)實型變量。實型變量分為單精度型(float)、雙精度型(double)。單精度型實型變量在內

存中占4字節(jié)(32位),雙精度型實型變量在內存中占8字節(jié)(64位)。

由于實型數(shù)據(jù)的有效位是有限的,程序中變量如為單精度型,只有7位有效數(shù)字,所以輸出的

前7位是準確的,第8位以后的數(shù)字是無意義的。變量如為雙精度型,可以有15~16位有效位,

所以輸出的前16位是準確的,第17位以后的數(shù)字是無意義的。由此可見,由于機器存儲的限制,

使用實型數(shù)據(jù)在有效位以外的數(shù)字將被舍去,由此可能會產(chǎn)生一些誤差,我們在編程中要注意。

由于實數(shù)存在舍入誤差,使用時要注意以下幾點。

①不要試圖用一個實數(shù)精確表示一個大整數(shù),浮點數(shù)是不精確的。

②實數(shù)一般不判斷“相等”,而是判斷接近或近似。

③避免直接將一個很大的實數(shù)與一個很小的實數(shù)相加、相減,否則會“丟失”小的數(shù)。

實驗2C語言中的基本數(shù)據(jù)類型15

④根據(jù)要求選擇單精度型和雙精度型。

(3)字符型變量。字符型變量用于存放字符常量,即一個字符型變量可存放一個字符,字符

數(shù)據(jù)在內存中是以字符的ASCII碼的二進制形式存放的,所以一個字符型變量占用1字節(jié)內存容

量。這使得字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用(0~255范圍內的無符號數(shù)或-128~127范圍內

的有符號數(shù))。具體表現(xiàn)為如下幾點:

①可以將整型常量賦值給字符變量,也可以將字符常量賦值給整型變量。

②可以對字符數(shù)據(jù)進行算術運算,相當于對它們的ASCII碼進行算術運算。

③一個字符數(shù)據(jù)既可以字符形式輸出(ASCII碼對應的字符),也可以整數(shù)形式輸出(直接

輸出ASCII碼值)。

④字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,但是字符型只占1字符,即如果作為整數(shù)使用,

只能存放0~255范圍內的無符號數(shù)或范圍內的有符號數(shù)。

⑤C語言沒有專門的字符串變量,如果想將一個字符串存放在變量中,可以使用字符數(shù)組(即

用一個字符數(shù)組來存放一個字符串,數(shù)組中每個元素存放一個字符)。

2.掌握符號常量的定義方法

定義宏常量格式:

#define標識符常量替換文本

#define編譯指令的準確含義是,命令編譯器將源代碼中所有標識符常量替換為替換文本。其

效果與使用編輯器手工進行查找并替換相同。例如:

#definePI3.1415926

根據(jù)約定,符號常量名中的字母為大寫,這易于將其同變量名區(qū)分開來。根據(jù)約定,變量名

中的字母為小寫。

一般情況下,程序員將所有的#define放在一起,并將它們放在程序的開頭。

宏常量不同于變量,一旦定義之后它所代表的值在整個作用域內不能改變,也不能對其賦值。

3.掌握不同類型數(shù)據(jù)之間轉換的方式,包括自動類型轉換及強制類型轉換

C語言規(guī)定,不同類型的數(shù)據(jù)在進行混合運算之前先轉換成相同的類型,然后再進行運算。

(1)自動類型轉換。C編譯器在對操作數(shù)進行運算之前將所有操作數(shù)都轉換成取值范圍較大

的操作數(shù)類型,所有的char型和short型一律先轉換為int型,所有的float型先轉換為double型

再參加運算。

當算術運算符“+”“-”“*”“/”“%”兩邊的數(shù)據(jù)類型不一致時,“就高不就低”。這里的

“高”和“低”是指數(shù)據(jù)所占存儲空間的大小。

當賦值號兩邊的類型不一致時,右向左看齊。

當函數(shù)定義時的形式參數(shù)和調用時的實際參數(shù)類型不一致時,實際參數(shù)自動轉換為形式參數(shù)

的類型。

C語言雖然支持類型自動轉換,但有時可能會給程序帶來隱患,可能會發(fā)生數(shù)據(jù)丟失、類型

溢出等錯誤。

(2)強制類型轉換。一般形式如下:

(類型)表達式

將表達式運算結果強制轉換成某種數(shù)據(jù)類型。

強制類型轉換最主要的用途有以下幾方面:

16C語言程序設計技術實踐指導

①滿足一些運算符對類型的特殊要求。

例如,取余運算要求“%”兩側的數(shù)據(jù)類型必須為整型?!?7.5%9”的表示方法是錯誤的,但

“(int)17.5%9”就是正確的。

另外,C的有些庫函數(shù)(如malloc())的調用結果是空類型(void),必須根據(jù)需要進行類型

的強制轉換,否則調用結果就無法利用。

②防止整數(shù)進行乘除運算時小數(shù)部分丟失。

4.掌握輸入/輸出函數(shù)的基本應用

(1)printf()函數(shù)的調用格式:

printf("格式控制字符串",輸出項列表);

①格式控制字符串用以指定輸出數(shù)據(jù)的輸出格式。格式控制字符串中包括格式字符(包括

轉換說明符、標志、域寬、精度)和普通字符。轉換說明符和%一起使用,用來說明輸出數(shù)據(jù)的

數(shù)據(jù)類型、標志、寬度和精度。普通字符在輸出時按原樣輸出。常用轉換說明符如表2-1所示。

表2-1printf()和scanf()函數(shù)的常用轉換說明符

轉換說明符意義轉換說明符意義

%d以十進制整數(shù)形式%f或%lf以浮點型數(shù)據(jù)形式

%c以字符型數(shù)據(jù)形式%s以字符串形式

②輸出項列表指出各個輸出數(shù)據(jù),當有多個輸出項時各輸出項之間用逗號“,”隔開,輸出

項可以是常量、變量和表達式,也可以沒有輸出項。

(2)scanf()函數(shù)的調用格式:

scanf("格式控制字符串",輸入項地址列表)

①格式控制字符串規(guī)定了輸入項中的變量將以何種類型的數(shù)據(jù)格式被輸入,它的一般形式

是:%[修飾符]轉換說明符。常用轉換說明符如表2-1所示。

②輸入項地址列表由若干變量的地址組成,每個地址之間用逗號分隔。C語言中變量的地

址可以用取地址符與變量名組成,如&a。也可以是指針變量,因為指針變量中存放的就是變量

的地址。

(3)putc

溫馨提示

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

評論

0/150

提交評論