




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1章 C語(yǔ)言概述 第1章 C語(yǔ)言概述C語(yǔ)言是編程語(yǔ)言中較為流行的一種。隨著計(jì)算機(jī)的普及和發(fā)展,C語(yǔ)言在各個(gè)領(lǐng)域中的應(yīng)用越來(lái)越廣泛。幾乎各類計(jì)算機(jī)都支持C語(yǔ)言的開(kāi)發(fā)環(huán)境,這為C語(yǔ)言的普及和應(yīng)用奠定了基礎(chǔ)。本章內(nèi)容:² C語(yǔ)言的發(fā)展及特點(diǎn)。² C程序的基本結(jié)構(gòu)。² C語(yǔ)言的基本符號(hào)與詞匯。² C語(yǔ)言集成開(kāi)發(fā)環(huán)境。學(xué)習(xí)目標(biāo):² 掌握C程序的基本結(jié)構(gòu)。² 掌握C語(yǔ)言的基本符號(hào)與詞匯。² 掌握Visual C+集成開(kāi)發(fā)環(huán)境或Dev-C+集成開(kāi)發(fā)環(huán)境的基本使用方法。² 能夠編寫(xiě)并在Visual C+或Dev-C+中編輯、編譯
2、和運(yùn)行最簡(jiǎn)單的C程序。本章任務(wù):本章要完成的主要任務(wù)是編寫(xiě)并在Visual C+或Dev-C+集成開(kāi)發(fā)環(huán)境中新建及運(yùn)行一個(gè)簡(jiǎn)單的C程序,該程序的功能是輸入兩個(gè)整數(shù),計(jì)算并輸出這兩個(gè)整數(shù)的乘積。任務(wù)可以分解為兩部分:² 編寫(xiě)程序了解C程序的基本結(jié)構(gòu)。² 學(xué)會(huì)在Visual C+或Dev-C+集成開(kāi)發(fā)環(huán)境中編輯、編譯和運(yùn)行程序。1.1 C語(yǔ)言簡(jiǎn)史及特點(diǎn)1.1.1 C語(yǔ)言的發(fā)展C語(yǔ)言是一種編譯性程序設(shè)計(jì)語(yǔ)言,它與UNIX操作系統(tǒng)緊密地聯(lián)系在一起。UNIX系統(tǒng)是通用的、交互式的計(jì)算機(jī)操作系統(tǒng),它誕生于 1969 年,是由美國(guó)貝爾實(shí)驗(yàn)室的K.Thompson和D.
3、M.Ritchie用匯編語(yǔ)言開(kāi)發(fā)成功的。C語(yǔ)言的前身是BCPL語(yǔ)言。1967年英國(guó)劍橋大學(xué)的Martin Richard推出BCPL語(yǔ)言(Basic Combined Programming Language)。1970年貝爾實(shí)驗(yàn)室的K.Thompson以BCPL語(yǔ)言為基礎(chǔ),開(kāi)發(fā)了B語(yǔ)言,并用B語(yǔ)言編寫(xiě)了UNIX操作系統(tǒng),在PDP-7計(jì)算機(jī)上實(shí)現(xiàn)。1972年貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出C語(yǔ)言,C語(yǔ)言既保持了BCPL語(yǔ)言和B語(yǔ)言的精練、接近硬件的優(yōu)點(diǎn),又克服了它們過(guò)于簡(jiǎn)單的缺點(diǎn)。1973年,K.Thompson和D.M.Ritchie合作把90%以上的UNIX程序用C
4、語(yǔ)言改寫(xiě),并加進(jìn)了多道程序設(shè)計(jì)功能,稱為UNIX第五版,開(kāi)創(chuàng)了UNIX系統(tǒng)發(fā)展的新局面。1975年UNIX第六版頒布后,C語(yǔ)言得到計(jì)算機(jī)界的普遍認(rèn)可,從此,C語(yǔ)言與UNIX系統(tǒng)一起互相促進(jìn),獲得迅速發(fā)展。設(shè)計(jì)C語(yǔ)言的最初目的只是描述和實(shí)現(xiàn)UNIX操作系統(tǒng)。而目前,C語(yǔ)言已獨(dú)立于UNIX系統(tǒng),先后被移植到大、中、小型計(jì)算機(jī)及微機(jī)上。1978年B.Kernighan和D.M.Ritchie合作編寫(xiě)了經(jīng)典著作The C Programming Language(C程序設(shè)計(jì)語(yǔ)言),它是目前所有C語(yǔ)言版本的基礎(chǔ)。1983年美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)對(duì)C語(yǔ)言問(wèn)世以來(lái)的各種版本進(jìn)行了擴(kuò)充,制定了ANSI
5、 C。1.1.2 C語(yǔ)言的特點(diǎn)C語(yǔ)言具有以下幾個(gè)基本特點(diǎn):² C語(yǔ)言是結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言。C語(yǔ)言程序的邏輯結(jié)構(gòu)可以用順序、選擇和循環(huán)3種基本結(jié)構(gòu)組成,便于采用自頂向下、逐步細(xì)化的結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)。用C語(yǔ)言編制的程序具有容易理解、便于維護(hù)的優(yōu)點(diǎn)。² C語(yǔ)言是模塊化程序設(shè)計(jì)語(yǔ)言。C語(yǔ)言的函數(shù)結(jié)構(gòu)、程序模塊間的相互調(diào)用及數(shù)據(jù)傳遞和數(shù)據(jù)共享技術(shù),為大型軟件設(shè)計(jì)的模塊化分解技術(shù)及軟件工程技術(shù)的應(yīng)用提供了強(qiáng)有力的支持。² C語(yǔ)言具有豐富的運(yùn)算能力。C語(yǔ)言除具有一般高級(jí)語(yǔ)言所擁有的四則運(yùn)算及邏輯運(yùn)算功能外,還具有二進(jìn)制的位(bit)運(yùn)算、單項(xiàng)運(yùn)算和復(fù)合運(yùn)算等功能。²
6、 C語(yǔ)言具有豐富的數(shù)據(jù)類型和較強(qiáng)的數(shù)據(jù)處理能力。C語(yǔ)言不但具有整型、實(shí)型、雙精度型,還具有結(jié)構(gòu)體、共用體等構(gòu)造類型,并為用戶提供了自定義數(shù)據(jù)類型。此外,C語(yǔ)言還具有預(yù)處理能力,能夠?qū)ψ址蛱囟▍?shù)進(jìn)行宏定義。² C語(yǔ)言具有較強(qiáng)的移植性。C語(yǔ)言程序本身并不依賴于計(jì)算機(jī)的硬件系統(tǒng),只要在不同種類的計(jì)算機(jī)上配置C語(yǔ)言編譯系統(tǒng),即可達(dá)到程序移植的目的。² C語(yǔ)言不但具有高級(jí)語(yǔ)言的特性,還具有匯編語(yǔ)言的一些特點(diǎn)。C語(yǔ)言既有高級(jí)語(yǔ)言面向用戶、容易記憶、便于閱讀和書(shū)寫(xiě)的優(yōu)點(diǎn);又有面向硬件和系統(tǒng),可以直接訪問(wèn)硬件的功能。² C語(yǔ)言具有較好的通用性。C語(yǔ)言既可用于編寫(xiě)操作系統(tǒng)、編
7、譯程序等系統(tǒng)軟件,也可用于編寫(xiě)各種應(yīng)用軟件。1.2 C語(yǔ)言程序1.2.1 幾個(gè)典型的C程序C語(yǔ)言的源程序由一個(gè)或多個(gè)函數(shù)組成,每個(gè)函數(shù)完成一種指定的操作,所以有人又把C語(yǔ)言稱為函數(shù)式語(yǔ)言。下面通過(guò)3個(gè)簡(jiǎn)單的例子來(lái)了解C程序的基本結(jié)構(gòu)?!纠?.1】在屏幕上顯示信息“Hello world!”。程序代碼如下:#include <stdio.h>main()printf("Hello world!n");運(yùn)行結(jié)果:Hello world!程序說(shuō)明:² C程序由一系列函數(shù)組成,這些函數(shù)中必須有且只能有一個(gè)名為main()的函數(shù),這個(gè)函數(shù)稱為主函數(shù),整個(gè)程序從主
8、函數(shù)開(kāi)始執(zhí)行。在例1.1中,只有一個(gè)主函數(shù),而無(wú)其他函數(shù)。² 程序第1行的#include是一條編譯預(yù)處理命令,其作用是將所需的頭文件(即后綴為.h的文件)包括到源程序文件中。頭文件中包含了所需調(diào)用的庫(kù)函數(shù)的有關(guān)信息。在使用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí),要用到stdio.h頭文件中提供的信息。本程序調(diào)用了標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)printf(),因此必須在程序的開(kāi)頭使用#include <stdio.h>命令。² 程序第2行中的main是主函數(shù)的函數(shù)名,main后面的一對(duì)小括號(hào)是函數(shù)定義的標(biāo)志,不能省略。² 程序第4行的printf()是C語(yǔ)言的格式輸出函數(shù),在本程
9、序中,printf()函數(shù)的作用是輸出括號(hào)內(nèi)雙引號(hào)之間的字符串,其中“n”代表?yè)Q行符。第4行末尾的分號(hào)則是C語(yǔ)句結(jié)束的標(biāo)志。² 程序第3行和第5行是一對(duì)大括弧,在這里表示函數(shù)體的開(kāi)始和結(jié)束。一個(gè)函數(shù)中要執(zhí)行的語(yǔ)句都寫(xiě)在函數(shù)體中?!纠?.2】求兩個(gè)整數(shù)的和。程序代碼如下:#include <stdio.h>main()int num1, num2, sum; /* 定義3個(gè)整型變量 */num1 = 10; /* 把10賦值給變量num1 */num2 = 18; /* 把18賦值給變量num2 */sum = num1 + num2; /* 計(jì)算num1與num2之和,并
10、將計(jì)算結(jié)果賦值給變量sum */printf("sum=%d", sum); /* 輸出變量sum的值 */運(yùn)行結(jié)果:sum=28程序說(shuō)明:² 這個(gè)程序由一個(gè)主函數(shù)組成,其中,第4行的int表示定義變量類型為整型,該行定義了num1、num2、sum這3個(gè)整型變量。² 程序第5、6、7行中的語(yǔ)句均為賦值語(yǔ)句,“=”為賦值運(yùn)算符,其作用是將其右邊的常量或表達(dá)式的值賦值給左邊的變量。² 第8行中的“%d”是輸入輸出函數(shù)中的格式字符串,在此表示以十進(jìn)制整數(shù)的形式輸出變量sum的值。程序的運(yùn)行結(jié)果中,“%d”的位置被sum變量的值(即28)取代。
11、78; 程序中多次出現(xiàn)的“/*”和“*/”是一對(duì)注釋符,注釋的內(nèi)容寫(xiě)在這對(duì)注釋符之間。注釋內(nèi)容對(duì)程序的編譯和運(yùn)行不起任何作用,其目的是提高程序的可讀性。在必要的地方給程序加上注釋是一個(gè)好習(xí)慣,這使得程序易于理解,而對(duì)程序的理解是進(jìn)一步修改和調(diào)試程序的基礎(chǔ)?!纠?.3】輸入兩個(gè)整數(shù),輸出其中的最大值。程序代碼如下:#include <stdio.h>int max(int n1, int n2) /* 定義max()函數(shù),n1、n2為形式參數(shù) */int m; if (n1 > n2) m = n1; /* 比較n1和n2的大小,將最大值賦值給變量m */else m = n2
12、;return m; /* 返回變量m的值 */main()int a, b, m; /* 定義3個(gè)整型變量 */scanf("%d%d", &a, &b); /* 輸入兩個(gè)整數(shù)到變量a和b中 */m = max(a, b); /* 調(diào)用max()函數(shù)求a和b的最大值,把函數(shù)返回值賦值給變量m。 a和b為實(shí)際參數(shù)*/printf("max=%dn", m); /* 輸出變量m的值 */運(yùn)行結(jié)果:15 86 max=86程序說(shuō)明:² 該程序由兩個(gè)函數(shù)組成,一個(gè)是main()函數(shù),另一個(gè)是max()函數(shù)。max()函數(shù)的功能是求兩個(gè)
13、整數(shù)的最大值,而數(shù)據(jù)的輸入和輸出則在main()函數(shù)中實(shí)現(xiàn)。² main()函數(shù)和max()函數(shù)的定義是相互獨(dú)立的。² main()函數(shù)的第5行調(diào)用max()函數(shù)時(shí),分別把實(shí)際參數(shù)a和b的值傳遞給形式參數(shù)n1和n2,因此,調(diào)用max()函數(shù)的結(jié)果是求得了a和b的最大值。1.2.2 C程序的基本結(jié)構(gòu)通過(guò)上面這3個(gè)例子,可以對(duì)C程序的基本結(jié)構(gòu)歸納如下。(1)C語(yǔ)言程序由函數(shù)構(gòu)成。函數(shù)是構(gòu)成C程序的基本單位,即C程序由一個(gè)或多個(gè)函數(shù)組成,其中必須有且只能有一個(gè)名為main的主函數(shù)。例如,在前面的例1.1和例1.2中,均只有一個(gè)main()函數(shù),而在例1.3中,則有main()和m
14、ax()兩個(gè)函數(shù)。(2)每個(gè)函數(shù)的基本結(jié)構(gòu)如下:函數(shù)名()語(yǔ)句1;.語(yǔ)句n;有的函數(shù)在定義時(shí),函數(shù)名后的小括號(hào)內(nèi)有形式參數(shù),如例1.3中的max()函數(shù)。內(nèi)則是由若干語(yǔ)句組成的函數(shù)體,每個(gè)語(yǔ)句必須以分號(hào)結(jié)束。C語(yǔ)言的書(shū)寫(xiě)格式較自由,一行內(nèi)可以寫(xiě)多個(gè)語(yǔ)句,一個(gè)語(yǔ)句很長(zhǎng)時(shí)也可以分寫(xiě)在多行上。(3)各個(gè)函數(shù)的定義是相互獨(dú)立的。各函數(shù)定義的順序無(wú)關(guān)緊要,主函數(shù)可以定義在其他函數(shù)之前,也可以定義在其他函數(shù)之后,但程序的執(zhí)行總是從主函數(shù)開(kāi)始。1.2.3 C語(yǔ)言的基本符號(hào)與詞匯任何程序設(shè)計(jì)語(yǔ)言都規(guī)定了自己的一套基本符號(hào)和詞匯,C語(yǔ)言也不例外。1. C語(yǔ)言的基本符號(hào)集C語(yǔ)言的基本符號(hào)集采用ASCII碼字符集,
15、包括:² 大小寫(xiě)英文字母各26個(gè)。² 10個(gè)阿拉伯?dāng)?shù)字09。² 其他特殊符號(hào),包括以下運(yùn)算符和操作符: + - * / % < <= > >= = != && | ! & | = + - ?: << >> ( ) . -> # sizeof += -= *= /= %= &= = |= , 2. C語(yǔ)言的詞匯1)標(biāo)識(shí)符程序中用來(lái)標(biāo)識(shí)變量名、函數(shù)名、數(shù)組名、數(shù)據(jù)類型名等的有效字符序列稱為標(biāo)識(shí)符。簡(jiǎn)單地說(shuō),標(biāo)識(shí)符就是一個(gè)名字。標(biāo)識(shí)符的構(gòu)成規(guī)則如下。(1)標(biāo)識(shí)符只能由英文字母(AZ、a
16、z)、數(shù)字(09)和下劃線(_)三類符號(hào)組成,但第一字符必須是字母或下劃線。例如,下面的標(biāo)識(shí)符是合法的:sum、Sum、n2、_average、a_3、student_2_name下面是不合法的標(biāo)識(shí)符:num-1、a#3、2student、!sum_2、number.3(2)大寫(xiě)字母與小寫(xiě)字母含義不同(即C語(yǔ)言是對(duì)大小寫(xiě)敏感的)。如sum、Sum、SUM表示3個(gè)完全不同的標(biāo)識(shí)符。(3)不同版本的C語(yǔ)言編譯系統(tǒng)對(duì)標(biāo)識(shí)符的有效長(zhǎng)度有不同的規(guī)定。編程時(shí)最好把標(biāo)識(shí)符的長(zhǎng)度控制在32個(gè)字符以內(nèi)。(4)通常,命名標(biāo)識(shí)符時(shí)應(yīng)“見(jiàn)名知意”,并做到“常用取簡(jiǎn),專用取繁”。2)關(guān)鍵字關(guān)鍵字又稱為保留字,是C語(yǔ)言編
17、譯系統(tǒng)所固有的、具有專門(mén)意義的標(biāo)識(shí)符。C語(yǔ)言的關(guān)鍵字有32個(gè),一般用作C語(yǔ)言的數(shù)據(jù)類型名或語(yǔ)句名,如表1.1所示。表1.1 C語(yǔ)言的關(guān)鍵字描述類型定義描述存儲(chǔ)類型描述數(shù)據(jù)類型描述語(yǔ)句typedefautocharbreakvoidexterndoublecontinuestaticfloatswitchregisterintcaselongdefaultshortifstructelseuniondounsignedforconstwhileenumgotosignedsizeofvolatilereturn說(shuō)明:(1)所有關(guān)鍵字的字母均采用小寫(xiě)。(2)關(guān)鍵字不能再作為用戶常量、變量、函數(shù)和類
18、型等的名字。 在學(xué)習(xí)了上述相關(guān)知識(shí)后,我們通過(guò)下例來(lái)完成本章開(kāi)篇提出的任務(wù)之一?!纠?.4】輸入兩個(gè)整數(shù),計(jì)算并輸出這兩個(gè)整數(shù)的乘積。程序代碼如下:#include <stdio.h>main()int a, b, result; /* 定義3個(gè)整型變量 */scanf("%d%d", &a, &b); /* 輸入兩個(gè)整數(shù)到變量a和b中 */result = a * b; /* 求a和b的乘積,并把結(jié)果放入變量result中 */printf("%d*%d=%dn", a, b, result); /* 輸出計(jì)算結(jié)果 */運(yùn)行
19、結(jié)果:12 5 12*5=601.3 C語(yǔ)言集成開(kāi)發(fā)環(huán)境1.3.1 Visual C+集成開(kāi)發(fā)環(huán)境Microsoft Visual C+(簡(jiǎn)稱VC)是微軟開(kāi)發(fā)的一個(gè)集源程序編輯、代碼編譯和調(diào)試于一體的C/C+集成開(kāi)發(fā)環(huán)境。在該集成開(kāi)發(fā)環(huán)境中可以創(chuàng)建工程文件、訪問(wèn)源代碼編輯器/資源編輯器、使用內(nèi)部調(diào)試器等。下面以常用的VC+ 6.0版本為例,介紹VC集成開(kāi)發(fā)環(huán)境的基本使用方法。1. 用VC創(chuàng)建和編輯C源程序(1)安裝完VC+6.0后,雙擊其對(duì)應(yīng)圖標(biāo),即可啟動(dòng)VC進(jìn)入主界面,如圖1.1所示。圖1.1 VC+ 6.0的主界面(2)新建工程。選擇“文件”“新建”命令,打開(kāi)“新建”對(duì)話框,如圖1.2所示
20、。(3)在“新建”對(duì)話框的“工程”選項(xiàng)卡中,選擇Win32 Console Application,然后在“位置”欄中選擇保存位置,再在“工程名稱”中輸入工程名。創(chuàng)建了工程后,工程中的全部文檔將保存在以工程名稱命名的文件夾中。(4)單擊圖1.2所示對(duì)話框中的“確定”按鈕后,彈出如圖1.3所示的Win32 Console Application對(duì)話框。在其中選擇一種控制臺(tái)應(yīng)用程序,默認(rèn)選擇“一個(gè)空工程”,單擊“完成”按鈕后,會(huì)彈出如圖1.4所示的“新建工程信息”對(duì)話框,直接單擊其中的“確定”按鈕即可。(5)新建的工程如圖1.5所示。在其中的FileView選項(xiàng)卡中,單擊工程名前面的“+”使其展開(kāi)
21、,可以看到工程中包含三類文件:Source Files(源程序文件)、Header Files(頭文件)、Resourse Files(資源文件),如圖1.6所示。圖1.2 新建工程圖1.3 Win32 Console Application對(duì)話框圖1.4 “新建工程信息”對(duì)話框圖1.5 新建的工程圖1.6 工程中的三類文件(6)新建源程序文件。再次選擇“文件”“新建”命令,如圖1.7所示,在“新建”對(duì)話框的“文件”選項(xiàng)卡中,選擇C+ Source File,并在“文件名”欄中輸入源程序文件的文件名,最后單擊“確定”按鈕。創(chuàng)建了源程序文件后,可在左側(cè)的Source Files文件夾中找到該文件
22、。圖1.7 新建源程序文件(7)編輯源程序。可在如圖1.8所示的對(duì)話框中輸入和編輯C源程序代碼。圖1.8 編輯源程序2. 編譯、連接和運(yùn)行高級(jí)語(yǔ)言編寫(xiě)的源程序(源代碼文件)都不能直接運(yùn)行。C源程序在運(yùn)行之前必須經(jīng)過(guò)編譯和連接兩個(gè)步驟。編譯的結(jié)果是生成一個(gè)后綴名為.obj的目標(biāo)代碼文件,連接的結(jié)果則是生成一個(gè)后綴名為.exe的可執(zhí)行文件。(1)編譯。源程序代碼寫(xiě)完后,可以使用“組建”“編譯”命令(快捷鍵為Ctrl+F7)對(duì)源程序進(jìn)行編譯。編譯完成后,可在窗口下方看到編譯信息,如圖1.9所示。如果有編譯出錯(cuò)信息,則必須修改源程序,并再次進(jìn)行編譯。(2)連接。使用“組建”“組建”命令(快捷鍵為F7)
23、可以對(duì)源程序進(jìn)行編譯并連接,最終生成.exe 可執(zhí)行文件。如果編譯或連接的過(guò)程中出現(xiàn)錯(cuò)誤,則出錯(cuò)信息將會(huì)顯示在底部窗口中。這時(shí),應(yīng)根據(jù)出錯(cuò)信息的提示修改并調(diào)試程序。圖1.9 編譯信息(3)運(yùn)行。選擇“組建”“執(zhí)行”命令(快捷鍵為Ctrl+F5),或單擊工具欄中的(運(yùn)行)按鈕,即可運(yùn)行程序,如圖1.10所示。圖1.10 運(yùn)行程序3. 保存和打開(kāi)(1)保存。單擊工具欄中的“保存”按鈕(快捷鍵為Ctrl+S),可以保存源程序文件。如果想編輯一個(gè)新的源程序,那么需要先選擇“文件”“關(guān)閉工作空間”命令,關(guān)閉當(dāng)前工作空間后,再按前述方法新建另一個(gè)項(xiàng)目。(2)打開(kāi)。選擇“文件”“打開(kāi)工作空間”命令
24、,在彈出的“打開(kāi)工作區(qū)”對(duì)話框中,找到工程所在的文件夾,選擇其中的.dsw文件,最后單擊“打開(kāi)”按鈕即可,如圖1.11所示。打開(kāi)工程后,編輯窗口即會(huì)顯示出工程中的源程序代碼。圖1.11 打開(kāi)工程1.3.2 Dev-C+集成開(kāi)發(fā)環(huán)境Dev-C+是一個(gè)Windows環(huán)境下的輕量級(jí)C/C+集成開(kāi)發(fā)環(huán)境,其優(yōu)點(diǎn)是功能簡(jiǎn)捷,適合于C/C+語(yǔ)言初學(xué)者使用。1. 新建源文件(1)安裝完Dev-C+后,雙擊其對(duì)應(yīng)圖標(biāo),即可啟動(dòng)Dev-C+進(jìn)入主界面,如圖1.12所示。圖1.12 Dev-C+的主界面(2)選擇“文件”“新建”“源代碼”菜單命令(快捷鍵為Ctrl+N),即可新建一個(gè)空白的源文件,可在其中輸入并編
25、輯程序源代碼,如圖1.13所示。圖1.13 輸入源代碼(3)保存。選擇“文件”“保存”菜單命令(快捷鍵為Ctrl+S),或單擊工具欄中的“保存”按鈕,可在彈出的窗口中選擇保存的位置以及文件名。2. 編譯和運(yùn)行(1)編譯。選擇“運(yùn)行”“編譯”菜單命令(快捷鍵為F9),可對(duì)源程序文件進(jìn)行編譯。編譯結(jié)果會(huì)顯示在下方的“編譯日志”窗口中,如圖1.14所示。編譯成功后,將在源文件所在的文件夾內(nèi),出現(xiàn).exe可執(zhí)行文件,如hello.exe。圖1.14 編譯結(jié)果(2)運(yùn)行??芍苯与p擊hello.exe來(lái)運(yùn)行程序,也可以在Dev-C+中選擇“運(yùn)行”“運(yùn)行”菜單命令(快捷鍵為F10)。
26、在學(xué)習(xí)了上述相關(guān)知識(shí)后,我們通過(guò)下例來(lái)完成本章開(kāi)篇提出的任務(wù)之二?!纠?.5】在Visual C+集成開(kāi)發(fā)環(huán)境中新建、編譯并運(yùn)行例1.4中的程序。操作步驟如下。(1)啟動(dòng)Visual C+后,選擇“文件”“新建”菜單命令新建一個(gè)工程,然后在工程中新建一個(gè)源程序文件。在編輯窗口中逐行輸入例1.4的程序代碼,如圖1.15所示。圖1.15 輸入源程序(2)選擇“組建”“組建”命令或按F7鍵,自動(dòng)完成程序的編譯、連接。(3)選擇“組建”“執(zhí)行”命令或按Ctrl+F5快捷鍵運(yùn)行程序,結(jié)果如圖1.16所示。圖1.16 程序的運(yùn)行結(jié)果(4)按任意鍵可關(guān)閉運(yùn)行窗口。1.4 上機(jī)實(shí)訓(xùn):Visual C+的基本操
27、作1.4.1 實(shí)訓(xùn)目的(1)掌握C程序的基本結(jié)構(gòu)。(2)熟悉Visual C+集成開(kāi)發(fā)環(huán)境的操作界面。(3)掌握在Visual C+中建立、修改、編譯、運(yùn)行、保存和裝入程序的方法。(4)掌握插入、刪除字符和插入、刪除行等基本的編輯操作。1.4.2 實(shí)訓(xùn)內(nèi)容下面是三個(gè)從最簡(jiǎn)單到稍復(fù)雜的C程序,仔細(xì)閱讀程序并在Visual C+中建立和運(yùn)行這些程序,以此熟悉C程序的基本結(jié)構(gòu)和Visual C+的基本操作。(1)程序一:#include <stdio.h>main()printf("My first program!n"); 建立并運(yùn)行程序,注意觀察運(yùn)行結(jié)果。 插入兩
28、行代碼,使上面的程序變成:#include <stdio.h>#include <stdlib.h>main()system("color E1"); /* 改變整個(gè)控制臺(tái)的顏色 */printf("My first program!n");再次運(yùn)行程序并觀察運(yùn)行結(jié)果,注意控制臺(tái)顏色的變化。system(“color XX”);的作用是設(shè)置控制臺(tái)的顏色,color后面的第一個(gè)字符設(shè)置背景色,第二個(gè)字符設(shè)置前景色,顏色的取值范圍為09、AF。調(diào)用system()函數(shù)時(shí),必須將頭文件stdlib.h包括到源程序中。(2)程序二:#in
29、clude <stdio.h>main()int a, b; /* 定義變量a、b為int類型 */float div; /* 定義變量div為float類型 */a = 1;b = 2;div = a/b; /* 將a除以b的值賦值給div */printf("div=%f", div);自己先分析程序的運(yùn)行結(jié)果后再運(yùn)行該程序,比較自己的判斷與運(yùn)行結(jié)果是否一致,如果有差異,再想想問(wèn)題出在什么地方。這種做法可以逐步訓(xùn)練自己理解程序和分析程序的能力。將程序二中的int a, b;改為float a, b; 再運(yùn)行程序,看看會(huì)有什么結(jié)果。(3)程序三:#includ
30、e <stdio.h>float sum(float n1, float n2) /* 定義sum函數(shù),其功能是求兩個(gè)數(shù)之和 */return n1+n2; /* 返回n1、n2之和 */main() float a,b,s; printf("a="); scanf("%f",&a); printf("b="); scanf("%f",&b); s=sum(a,b); /* 調(diào)用sum函數(shù)求a、b之和,將返回值賦值給變量s */ printf("%f+%f=%fn",
31、a,b,s);請(qǐng)先仔細(xì)閱讀并分析程序代碼,然后運(yùn)行程序,觀察運(yùn)行結(jié)果。1.5 習(xí) 題1. 填空題(1)C語(yǔ)言程序由_組成,其中必須有且只能有一個(gè)名為_(kāi)的函數(shù)。C程序的執(zhí)行從_函數(shù)開(kāi)始。(2)每個(gè)C語(yǔ)句必須以_號(hào)結(jié)束。(3)標(biāo)識(shí)符只能由_、_和_三類符號(hào)構(gòu)成,而且標(biāo)識(shí)符的第一個(gè)字符必須是_或_。(4)關(guān)鍵字是指_。2. 選擇題(1)下面合法的C語(yǔ)言標(biāo)識(shí)符是_。A. 3xy B. XY.2C. a_3 D. ?xyz(2)以下符號(hào)中不能用作用戶標(biāo)識(shí)符的是_。A. abc B. &
32、#160;intC. student_1 D. _xyz(3)在C語(yǔ)言中,主函數(shù)的個(gè)數(shù)是_。A. 1個(gè) B. 2個(gè)C. 3個(gè) D. 任意個(gè)(4)以下有關(guān)注釋的描述中,錯(cuò)誤的是_。A. 注釋可以出現(xiàn)在程序中的任何位置B. 程序編譯時(shí),不對(duì)注釋做任何處理C. 程序編譯時(shí),要對(duì)注釋做出處理D. 注釋的作用是提示或解釋程序的含義,幫助提高程序的可讀性(5)在C程序中,main函數(shù)的位置_。A. 必須放在所有函數(shù)定義之前B. 必須放在所有函數(shù)定義之后C. 必須放在它所調(diào)用的函數(shù)之前D. 可以任意
33、3. 改錯(cuò)題指出并改正下面程序中的錯(cuò)誤。(1)#include <stdio.h>mainprintf("Welcome!");(2)#include <stdio.h>main()Int a;a = 5;printf("a=%d", a);(3)#include <stdio.h>main()int a, ba = 1, b = 2printf("%d", a+b);4. 分析題分析下列程序,寫(xiě)出運(yùn)行結(jié)果。(1)#include <stdio.h>main()int a, b, c;a
34、 = 2; b = 15;c = a * b;printf("c=%d", c);(2)#include <stdio.h>pt()printf("*");main()printf("Hello!");pt();5. 編程題(1)編寫(xiě)一個(gè)程序,打印出下面的信息:* My first program!*(2)編寫(xiě)一個(gè)程序,輸入變量a、b、c的值,輸出表達(dá)式a*(b+c)的值。49第2章 基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第2章 基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式在第1章中,我們已經(jīng)看到程序中使用的各種變量都應(yīng)預(yù)先加以定義,即先定義,后
35、使用。對(duì)變量的定義可以包括3個(gè)方面:數(shù)據(jù)類型、存儲(chǔ)類型、作用域。C語(yǔ)言不僅提供了多種數(shù)據(jù)類型,還提供了構(gòu)造更加復(fù)雜的用戶自定義數(shù)據(jù)結(jié)構(gòu)的機(jī)制。在本章中,主要介紹基本數(shù)據(jù)類型(除枚舉類型外),其他數(shù)據(jù)類型在后續(xù)章節(jié)中再詳細(xì)介紹。另外,本章還將詳細(xì)介紹C語(yǔ)言的運(yùn)算符和表達(dá)式。本章內(nèi)容:² 常量與變量。² 整型數(shù)據(jù)、實(shí)型數(shù)據(jù)、字符型數(shù)據(jù)。² 運(yùn)算符與表達(dá)式。學(xué)習(xí)目標(biāo):² 了解基本數(shù)據(jù)類型及其常量的表示法。² 掌握變量的定義及初始化方法。² 掌握常用運(yùn)算符和表達(dá)式應(yīng)用。² 理解自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。² 能夠?qū)⒁话愕臄?shù)
36、學(xué)算式轉(zhuǎn)化為C語(yǔ)言表達(dá)式。本章任務(wù):在實(shí)際編程中,有時(shí)會(huì)對(duì)不同數(shù)據(jù)類型的數(shù)據(jù)進(jìn)行運(yùn)算,以及計(jì)算一些數(shù)學(xué)算式的值。本章要完成的任務(wù)是,已知整型變量a、b的值,根據(jù)以下算式計(jì)算并輸出x的值。任務(wù)可以分解為兩部分:² 變量的定義及賦值。² 數(shù)學(xué)算式轉(zhuǎn)換成C語(yǔ)言表達(dá)式。2.1 基本數(shù)據(jù)類型2.1.1 數(shù)據(jù)類型一個(gè)程序應(yīng)該包括以下兩方面的內(nèi)容:² 對(duì)數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)。² 對(duì)數(shù)據(jù)的操作。即操作步驟,也就是算法。數(shù)據(jù)是程序加工的對(duì)象,數(shù)據(jù)描述是通過(guò)數(shù)據(jù)類型來(lái)完成的,C語(yǔ)言不僅提供了基本類型、構(gòu)造類型、指針類型和空類型等多
37、種數(shù)據(jù)類型,還提供了構(gòu)造更加復(fù)雜的用戶自定義數(shù)據(jù)結(jié)構(gòu)的機(jī)制。C語(yǔ)言提供的數(shù)據(jù)類型如圖2.1所示。圖2.1 C語(yǔ)言提供的數(shù)據(jù)類型(1)基本類型:基本數(shù)據(jù)類型最主要的特點(diǎn)是,其值不可以再分解為其他類型。也就是說(shuō),基本數(shù)據(jù)類型是自我說(shuō)明的。(2)構(gòu)造類型:構(gòu)造數(shù)據(jù)類型是根據(jù)已定義的一個(gè)或多個(gè)數(shù)據(jù)類型,用構(gòu)造的方法來(lái)定義的。也就是說(shuō),一個(gè)構(gòu)造類型的值可以分解成若干個(gè)“成員”或“元素”。每個(gè)“成員”都是一個(gè)基本數(shù)據(jù)類型或又是一個(gè)構(gòu)造類型。(3)指針類型:指針是一種特殊的,同時(shí)又是具有重要作用的數(shù)據(jù)類型。其值用來(lái)表示某個(gè)變量在內(nèi)存儲(chǔ)器中的地址。雖然指針變量的取值類似于整型量,但這是兩個(gè)類型完全不同的量,因
38、此不能混為一談。(4)空類型:在調(diào)用函數(shù)時(shí),通常應(yīng)向調(diào)用者返回一個(gè)函數(shù)值,這個(gè)返回的函數(shù)值是具有一定的數(shù)據(jù)類型的,應(yīng)在函數(shù)定義及函數(shù)聲明中給以說(shuō)明。但也有一類函數(shù),調(diào)用后并不需要向調(diào)用者返回函數(shù)值,這種函數(shù)可以定義為“空類型”。其類型聲明符為void。在后面的第7章中將對(duì)空類型做進(jìn)一步的介紹。本章將介紹基本數(shù)據(jù)類型中的整型、實(shí)型和字符型,其余類型在以后各章中陸續(xù)介紹。2.1.2 常量與變量對(duì)于基本數(shù)據(jù)類型量,按其取值是否可改變,又分為常量和變量?jī)煞N。在程序執(zhí)行過(guò)程中,其值不能被改變的量稱為常量,其值可變的量稱為變量。它們可與數(shù)據(jù)類型結(jié)合起來(lái)分類。例如,可分為整型常量、整型變量、浮點(diǎn)常量、浮點(diǎn)變
39、量、字符常量、字符變量、枚舉常量、枚舉變量。在程序中,常量可以不經(jīng)說(shuō)明而直接引用,而變量則必須先定義后使用。1. 常量在程序執(zhí)行過(guò)程中,常量區(qū)分為不同的類型,如12、0、-7為整型常量,3.14、-2.8為實(shí)型常量,a、b、c則為字符常量。常量即為常數(shù),一般從其字面形式即可判別。這種常量稱為直接常量。有時(shí)為了使程序更加清晰和便于修改,用一個(gè)標(biāo)識(shí)符來(lái)代表常量,即給某個(gè)常量取個(gè)有意義的名字,這種常量稱為符號(hào)常量。符號(hào)常量在使用之前必須先定義,其一般形式為:#define 標(biāo)識(shí)符 常量#define屬于預(yù)處理命令,凡是以“#”開(kāi)頭的均為預(yù)處理命令。#define稱為宏定義命令,其中的標(biāo)識(shí)符又稱為宏名
40、,功能是把宏名定義為其后的字符串,字符串可以是常量值,也可以是表達(dá)式等。如:#define N 18對(duì)源程序進(jìn)行編譯時(shí),將會(huì)先把程序中出現(xiàn)的所有的宏名N,都置換為18,然后再進(jìn)行編譯?!纠?.1】已知圓的半徑,計(jì)算圓的面積。程序代碼如下:#define PI 3.14#include <stdio.h>main()float area, r;r = 10;area = r * r * PI;printf("area=%fn", area);運(yùn)行結(jié)果:area=314.000000程序說(shuō)明:該程序的功能是計(jì)算圓面積。程序第一行的#define定義了符號(hào)常量PI,其
41、值為圓周率3.14,此后凡在程序中出現(xiàn)的PI都代表圓周率3.14,可以與常量一樣進(jìn)行運(yùn)算。注意,符號(hào)常量也是常量,它的值在其作用域內(nèi)不能改變,也不能再被賦值。例如,下面試圖給符號(hào)常量PI賦值的語(yǔ)句是錯(cuò)誤的:PI = 20; / 錯(cuò)誤!為了區(qū)別程序中的符號(hào)常量名與變量名,習(xí)慣上用大寫(xiě)字母命名符號(hào)常量,而用小寫(xiě)字母命名變量。2. 變量在程序執(zhí)行過(guò)程中,一個(gè)變量必須有一個(gè)名字,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元,在該存儲(chǔ)單元中存放變量的值。請(qǐng)注意變量名和變量值是兩個(gè)不同的概念。變量名在程序運(yùn)行的過(guò)程中不會(huì)改變,而變量值則可以發(fā)生變化。變量名是一種標(biāo)識(shí)符,它必須遵守標(biāo)識(shí)符的命名規(guī)則。在程序中,常量是可以不經(jīng)說(shuō)
42、明而直接引用的,而變量則必須做強(qiáng)制定義,即“先定義,后使用”。這樣做的目的有以下幾點(diǎn)。(1)凡未被事先定義的標(biāo)識(shí)符,均不能用作變量名,這樣能夠保證變量名被正確使用。例如,若有以下變量定義:int count;如果在程序中將變量名count誤寫(xiě)成了conut,如:conut = 5;則在程序編譯時(shí)將會(huì)檢查出conut未經(jīng)定義,并顯示相應(yīng)的出錯(cuò)提示信息,便于用戶發(fā)現(xiàn)錯(cuò)誤,避免變量名使用出錯(cuò)。(2)一個(gè)變量被指定為某一確定的數(shù)據(jù)類型,在編譯時(shí)就能為其分配相應(yīng)大小的存儲(chǔ)單元。(3)一個(gè)變量被指定為某一確定的數(shù)據(jù)類型,便于在編譯時(shí)據(jù)此檢查所進(jìn)行的運(yùn)算是否合法。例如,整型變量可以進(jìn)行求余運(yùn)算,而實(shí)型變量則
43、不能。2.2 整 型 數(shù) 據(jù)2.2.1 整型常量整型常量就是整常數(shù)。在C語(yǔ)言中,使用的整常數(shù)有八進(jìn)制、十六進(jìn)制和十進(jìn)制3種,使用不同的前綴來(lái)相互區(qū)分。除了前綴外,C語(yǔ)言中還使用后綴來(lái)區(qū)分不同長(zhǎng)度的整數(shù)。1. 八進(jìn)制整常數(shù)八進(jìn)制整常數(shù)必須以0開(kāi)頭,即以0作為八進(jìn)制數(shù)的前綴。數(shù)碼取值為07。如0123表示八進(jìn)制數(shù)123,即(123)8,等于十進(jìn)制數(shù)83,即1´82+2´81+3´80=83;-011表示八進(jìn)制數(shù)-11,即(-11)8,等于十進(jìn)制數(shù)-9。(1)以下各數(shù)是合法的八進(jìn)制數(shù):² 015(十進(jìn)制為13)² 0101(十進(jìn)制為65)²
44、 0177777(十進(jìn)制為65535)(2)以下各數(shù)是不合法的八進(jìn)制數(shù):² 256(無(wú)前綴0)² 0382(包含了非八進(jìn)制數(shù)碼8) 2. 十六進(jìn)制整常數(shù)十六進(jìn)制整常數(shù)的前綴為0X或0x,其數(shù)碼取值為09、AF或af。如0x123表示十六進(jìn)制數(shù)123,即(123)16,等于十進(jìn)制數(shù)291,即1´162+2´161+3´160=291;-0x11表示十六進(jìn)制數(shù)-11,即(-11)16,等于十進(jìn)制數(shù)-17。(1)以下各數(shù)是合法的十六進(jìn)制整常數(shù):² 0X2A(十進(jìn)制為42)² 0XA0(十進(jìn)制為160)² 0XFFFF(十
45、進(jìn)制為65535)(2)以下各數(shù)是不合法的十六進(jìn)制整常數(shù):² 5A(無(wú)前綴0X)² 0X3H(含有非十六進(jìn)制數(shù)碼)3. 十進(jìn)制整常數(shù)十進(jìn)制整常數(shù)沒(méi)有前綴,數(shù)碼取值為09。(1)以下各數(shù)是合法的十進(jìn)制整常數(shù):² 237 ² -568 ² 1627(2)以下各數(shù)是不合法的十進(jìn)制整常數(shù):² 023(不能有前導(dǎo)0) ² 23D(含有非十進(jìn)制數(shù)碼)在程序中是根據(jù)前綴來(lái)區(qū)分各種進(jìn)制數(shù)的。因此在書(shū)寫(xiě)常數(shù)時(shí)不要把前綴弄錯(cuò),以免造成結(jié)果不正確。4. 整型常數(shù)的后綴在16位字長(zhǎng)的機(jī)器上,基本整型的長(zhǎng)度也為16位,因此表示的數(shù)的范圍也是有限定的。
46、十進(jìn)制無(wú)符號(hào)整常數(shù)的范圍為065535,有符號(hào)數(shù)為-32768+32767。八進(jìn)制無(wú)符號(hào)數(shù)的表示范圍為00177777。十六進(jìn)制無(wú)符號(hào)數(shù)的表示范圍為0X00XFFFF或0x00xFFFF。如果使用的數(shù)超過(guò)了上述范圍,就必須用長(zhǎng)整型數(shù)來(lái)表示。長(zhǎng)整型數(shù)是用后綴“L”或“l(fā)”來(lái)表示的(注意,字母“L”的小寫(xiě)形式“l(fā)”與數(shù)字“1”看上去很相似,切勿混淆)。下面給出一些例子。(1)十進(jìn)制長(zhǎng)整常數(shù):² 158L(十進(jìn)制為158)² 358000L(十進(jìn)制為358000)(2)八進(jìn)制長(zhǎng)整常數(shù):² 012L(十進(jìn)制為10)² 0200000L(十進(jìn)制為65536)(3)
47、十六進(jìn)制長(zhǎng)整常數(shù):² 0X15L(十進(jìn)制為21)² 0XA5L(十進(jìn)制為165)² 0X10000L(十進(jìn)制為65536)長(zhǎng)整數(shù)158L與基本整常數(shù)158在數(shù)值上并無(wú)區(qū)別。但對(duì)158L,因?yàn)槭情L(zhǎng)整型量,C編譯系統(tǒng)將為它分配4個(gè)字節(jié)的存儲(chǔ)空間。而對(duì)158,因?yàn)槭腔菊停环峙鋬蓚€(gè)字節(jié)的存儲(chǔ)空間。因此在運(yùn)算和輸出格式上要予以注意,避免出錯(cuò)。無(wú)符號(hào)數(shù)也可用后綴表示,整型常數(shù)的無(wú)符號(hào)數(shù)的后綴為“U”或“u”。例如: 358u、0x38Au、235Lu均為無(wú)符號(hào)數(shù)。前綴和后綴可同時(shí)使用以表示各種類型的數(shù)。如0XA5Lu表示十六進(jìn)制無(wú)符號(hào)長(zhǎng)整數(shù)A5,其十進(jìn)制為165。2.2
48、.2 整型變量1. 整型變量的分類整型變量可分為基本整型、短整型、長(zhǎng)整型和無(wú)符號(hào)整型4種。(1)基本整型。類型聲明符為int。(2)短整型。類型聲明符為short int或short。(3)長(zhǎng)整型。類型聲明符為long int或long。(4)無(wú)符號(hào)整型。類型聲明符為unsigned,存儲(chǔ)單元中全部二進(jìn)制位(bit)都用作存放數(shù)據(jù)本身,而不包括符號(hào)。由于省去了符號(hào)位,因此不能表示負(fù)數(shù)。無(wú)符號(hào)型又可與前面的3種類型匹配而構(gòu)成另外幾種類型。無(wú)符號(hào)基本整型:類型聲明符為unsigned int或unsigned。無(wú)符號(hào)短整型:類型聲明符為unsigned short。無(wú)符號(hào)長(zhǎng)整型:類型聲明符為uns
49、igned long。不同數(shù)據(jù)類型變量在內(nèi)存中所占的字節(jié)數(shù)因編譯器和操作系統(tǒng)而異。表2.1列出了64位系統(tǒng)中各種整型變量所占的內(nèi)存字節(jié)數(shù)。表2.1 整型變量所占內(nèi)存字節(jié)數(shù)類 型占內(nèi)存字節(jié)數(shù)int4short int2long int8unsigned int4unsigned short2unsigned long82. 整型變量的定義變量定義的一般形式為: 類型聲明符 變量名1, 變量名2, .;例如:int a, b, c; /* 定義a、b、c為整型變量 */long m, n; /* 定義m、n為長(zhǎng)整型變量 */unsigned p, q; /* 定義p、q為無(wú)符號(hào)整型變量 */變量定
50、義時(shí)應(yīng)注意以下幾點(diǎn)。(1)允許在一個(gè)類型聲明符后定義多個(gè)相同類型的變量。各變量名之間用逗號(hào)間隔。類型聲明符與變量名之間至少用一個(gè)空格間隔。(2)最后一個(gè)變量名之后(即整個(gè)變量定義語(yǔ)句)必須以分號(hào)(;)結(jié)束。(3)變量定義必須放在變量使用之前。一般放在函數(shù)體的開(kāi)頭部分。(4)可在定義變量的同時(shí)為變量賦初值。其格式為:類型聲明符 變量名1 = 初值1, 變量名2 = 初值2, .;【例2.2】整型變量的定義與初始化。程序代碼如下:#include <stdio.h>main()int a=3, b=5; /* 定義整型變量a、b的同時(shí)初始化變量 */ printf("a+b=
51、%dn", a+b);運(yùn)行結(jié)果:a+b=82.3 實(shí) 型 數(shù) 據(jù)2.3.1 實(shí)型常量實(shí)型也稱為浮點(diǎn)型。實(shí)型常量也稱為實(shí)數(shù)或者浮點(diǎn)數(shù)。在C語(yǔ)言中,實(shí)數(shù)只采用十進(jìn)制。它有兩種形式,十進(jìn)制數(shù)形式和指數(shù)形式。1. 十進(jìn)制數(shù)形式十進(jìn)制數(shù)由數(shù)碼09和小數(shù)點(diǎn)組成。例如0.0、.25、5.789、0.13、5.0、300.、-267.8230等均為合法的實(shí)數(shù)。2. 指數(shù)形式指數(shù)由十進(jìn)制數(shù)加階碼標(biāo)志“e”或“E”以及階碼(只能為整數(shù),可以帶符號(hào))組成。其一般形式為a E n (a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù)),其值為a×10n。(1)以下是合法的實(shí)數(shù):² 2.1E5(等于2.1
52、15;105)² 3.7E-2(等于3.7×10-2)² -2.8E-2(等于-2.8×10-2)(2)以下是不合法的實(shí)數(shù):² E7(階碼標(biāo)志E之前無(wú)數(shù)字)² 53.-E3(負(fù)號(hào)位置不對(duì))² 2.7E(無(wú)階碼)2.3.2 實(shí)型變量實(shí)型變量分為兩類。1. 單精度型單精度型變量的類型聲明符為float,在64位系統(tǒng)中,單精度型占4個(gè)字節(jié)(32位)內(nèi)存空間,其數(shù)值范圍(絕對(duì)值)為3.4E-38 3.4E+38,可提供7位有效數(shù)字。2. 雙精度型雙精度型變量的類型聲明符為double,在64位系統(tǒng)中,雙精度型占8個(gè)字節(jié)(64位)內(nèi)存
53、空間,其數(shù)值范圍(絕對(duì)值)為1.7E-308 1.7E+308,可提供16位有效數(shù)字。定義實(shí)型變量的格式和書(shū)寫(xiě)規(guī)則與整型相同。例如: float x, y; /* 定義x、y為單精度實(shí)型變量*/double a, b, c; /* 定義a、b、c為雙精度實(shí)型變量*/也可在定義實(shí)型變量的同時(shí),初始化該變量。例如: float x=3.2, y=5.3; double a=0.2, b=1.3, c; 注意,實(shí)型常量不分單精度和雙精度。一個(gè)實(shí)型常量可以賦值給一個(gè)float或double型變量,根據(jù)變量的類型截取實(shí)型常量中相應(yīng)的有效位數(shù)字。下面的例子說(shuō)明了單精度實(shí)型變量對(duì)有效位數(shù)字的限制。【例2.3
54、】單精度實(shí)型變量對(duì)有效位數(shù)字的限制。程序代碼如下:#include <stdio.h>main()float a;a = 0.123456789;printf("a=%f", a);運(yùn)行結(jié)果:a=0.123457下面的例子說(shuō)明了float類型變量和double類型變量的不同?!纠?.4】演示float類型變量和double類型變量的區(qū)別。程序代碼如下:#include <stdio.h>main()float a;double b;a = 33333.333333;b = 33333.333333333;printf("a=%fnb=%fn", a, b); /* 用格式化輸出函數(shù)輸出a和b的值 */運(yùn)行結(jié)果:a=33333.332031b=33333.333333程序說(shuō)明:本例中,由于變量a是單精度型,有效位數(shù)只有7位,而整數(shù)部分已占5位,故小數(shù)點(diǎn)后面2位之后均為無(wú)效數(shù)字。變量b是雙精度型,有效位為16位,但小數(shù)點(diǎn)后最多保留6位,其余部分四舍五入。2.4 字符型數(shù)據(jù)字符型數(shù)據(jù)包括字符常量、字符變量和字符串常量。2.4.1 字符常量字符常量是用單引號(hào)括
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度時(shí)尚服飾店門(mén)面房買(mǎi)賣(mài)協(xié)議
- 二零二五年度演出活動(dòng)主辦方觀眾免責(zé)協(xié)議模板
- 二零二五年度綜合醫(yī)院與??漆t(yī)院雙向轉(zhuǎn)診合作協(xié)議書(shū)
- 2025年度航空航天知識(shí)產(chǎn)權(quán)保護(hù)及保密合同
- 二零二五年度退股股權(quán)變更與風(fēng)險(xiǎn)控制協(xié)議
- 2025年度裝修公司拖欠工資無(wú)勞動(dòng)合同糾紛解決協(xié)議
- 二零二五年度金融科技內(nèi)部股東股權(quán)轉(zhuǎn)讓合同范本
- 二零二五年度石英石采礦權(quán)轉(zhuǎn)讓合同
- 二零二五年度培訓(xùn)學(xué)校師資培訓(xùn)資料保密及保密期限合同
- 二零二五年度培訓(xùn)機(jī)構(gòu)中途入股投資合作協(xié)議
- 【MOOC】跨文化思想交流英語(yǔ)-南京理工大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 部編人教版五年級(jí)下冊(cè)小學(xué)數(shù)學(xué)全冊(cè)教案
- 2024年世界職業(yè)院校技能大賽高職組“聲樂(lè)、器樂(lè)表演組”賽項(xiàng)參考試題庫(kù)(含答案)
- 2024年共青團(tuán)入團(tuán)考試題庫(kù)及答案
- 2024年共青團(tuán)入團(tuán)考試測(cè)試題庫(kù)及答案
- 2024解析:第十二章機(jī)械效率-講核心(原卷版)
- 四川省德陽(yáng)市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)人教版小升初真題(上學(xué)期)試卷及答案
- 2023年國(guó)家公務(wù)員錄用考試《申論》真題(副省卷)及答案解析
- 2023年海南省公務(wù)員錄用考試《行測(cè)》真題卷及答案解析
- 2024-2030年中國(guó)語(yǔ)言培訓(xùn)行業(yè)競(jìng)爭(zhēng)分析及發(fā)展策略建議報(bào)告版
- 2024-2030年中國(guó)醫(yī)療器械維修設(shè)備行業(yè)供需狀況及發(fā)展策略分析報(bào)告
評(píng)論
0/150
提交評(píng)論