![計(jì)算機(jī)等級(jí)考試1-2_第1頁](http://file4.renrendoc.com/view10/M03/35/0C/wKhkGWXNvrGAKP94AAEnRcrKM-U224.jpg)
![計(jì)算機(jī)等級(jí)考試1-2_第2頁](http://file4.renrendoc.com/view10/M03/35/0C/wKhkGWXNvrGAKP94AAEnRcrKM-U2242.jpg)
![計(jì)算機(jī)等級(jí)考試1-2_第3頁](http://file4.renrendoc.com/view10/M03/35/0C/wKhkGWXNvrGAKP94AAEnRcrKM-U2243.jpg)
![計(jì)算機(jī)等級(jí)考試1-2_第4頁](http://file4.renrendoc.com/view10/M03/35/0C/wKhkGWXNvrGAKP94AAEnRcrKM-U2244.jpg)
![計(jì)算機(jī)等級(jí)考試1-2_第5頁](http://file4.renrendoc.com/view10/M03/35/0C/wKhkGWXNvrGAKP94AAEnRcrKM-U2245.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
I計(jì)算機(jī)等級(jí)考試
C語言程序設(shè)計(jì)
主講人:楊天霞
Email:yang_tian_xia@163.com
JAo\iangeducation
選擇熨翔
成就夢(mèng)想
。用5柱序攻計(jì)
第一章C語言概述
■本章的考試要求:
1.程序的構(gòu)成)main函數(shù)和其他函數(shù)
2.頭文件、數(shù)據(jù)說明、函數(shù)的開始和結(jié)
束標(biāo)志
3.源程序的書寫格式
4.C語言的風(fēng)格
C語言程序設(shè)計(jì)
?LI程序和程序設(shè)計(jì)
1.1.1c程序
修需要計(jì)算機(jī)做的工隹寫成一定形式的
指令,并把它們存儲(chǔ)在計(jì)算機(jī)內(nèi)部的存儲(chǔ)器
中,當(dāng)我彳門給出命令之后,它就按指令順序
自動(dòng)進(jìn)行操作。我們把這種可以連續(xù)執(zhí)行的
叫做“程序”。所以說,程序就是
人與機(jī)器“溝通”的語言,也就是我們常說
的“程序設(shè)計(jì)語言”。
程序設(shè)計(jì)語言的種類很多,用什么樣的
語言寫的程序指令就叫什么程序,比如說用
VB、C++、Java等語言寫的程序就相應(yīng)叫VB程
序、C++程序、Java程序,當(dāng)然用C語言寫的
程序就叫C程序。
C語言程序設(shè)計(jì)
11.L1C程序
計(jì)算機(jī)本身是不能直接識(shí)別由上面所說
的高級(jí)語言編寫的程序的,它只能接受和處
理由。和1的代碼構(gòu)成的二進(jìn)制指令或數(shù)據(jù)。
這種形式的指令是面向機(jī)器的,因此叫它
“機(jī)器語言”。
那么由高級(jí)語言寫出來的程序相對(duì)于機(jī)
器執(zhí)行的機(jī)器語言來說叫“源程序”,把由
二進(jìn)制代碼表示的程序稱為“目標(biāo)程序”。
因此,在編寫完源程序以后,若想在機(jī)器上
執(zhí)行該程序,就要有一種被叫做“編譯程序”
的軟件把源程序翻譯成“目標(biāo)程序”。每種
高級(jí)語言都有與它對(duì)應(yīng)的編譯程序。如C語言
的編譯程序TurboC.
C語言程序設(shè)計(jì)
[1.L1C程序
C語言C語言二進(jìn)制
源程序編譯程序機(jī)器指令
C源程序經(jīng)過C編譯程序編譯之后生成一
個(gè)后綴為.OBJ的二進(jìn)制文件(稱為目標(biāo)文
件),然后由自然保護(hù)區(qū)為“連接程序”
(Link)的軟件,把.OBJ文件與C語言提供的
各種庫(kù)函數(shù)連接起來生成一個(gè)后綴為.EXE的
可執(zhí)行文件??赏ㄟ^點(diǎn)擊或者輸入該文件的
名字就可以執(zhí)行這個(gè)文件了。
C語言程序設(shè)計(jì)
1.1.2程序設(shè)計(jì)
簡(jiǎn)單程序設(shè)計(jì)一般包含以下幾個(gè)部分:
1.確定數(shù)據(jù)結(jié)構(gòu)。
2.確定算法。
3.編碼。
4.在計(jì)算機(jī)上調(diào)試程序。
5.整理并寫出文檔資料。
C語言程序設(shè)計(jì)
1.2算法
學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)的目的就是在用語言作
為工具,設(shè)計(jì)出可供計(jì)算機(jī)運(yùn)行的程序。
那么,如何對(duì)一個(gè)已知的問題進(jìn)行有效
的求解呢?怎樣才能編寫出程序呢?
一般來說,除了待定合理的數(shù)據(jù)結(jié)構(gòu)外,
關(guān)鍵的一步是設(shè)計(jì)算法,有了一個(gè)好的算法,
就可以用任何一種計(jì)算機(jī)高級(jí)語言把算法轉(zhuǎn)
換為程序(編寫程序)。
算法--為解決某個(gè)特定的問題而采取的確定
且有限的步驟。
C語言程序設(shè)計(jì)
:2算法
算法的五個(gè)特性:
1.有窮性;
2.確定性;
3.可行性;
4.有0個(gè)或多個(gè)輸入;
5.有1個(gè)或多人輸出;
算法的描述方法:偽代碼和流程圖。
C語言程序設(shè)計(jì)
1.3結(jié)構(gòu)化程序設(shè)計(jì)和模塊化結(jié)構(gòu)
*-1.3.-1結(jié)-構(gòu)化程序-
結(jié)構(gòu)化程序由三種基本結(jié)構(gòu)組成:
1.順序結(jié)構(gòu);
2.選擇結(jié)構(gòu);
3.循環(huán)結(jié)構(gòu)。
。順序結(jié)構(gòu)
C語言程序設(shè)計(jì)
L3.1結(jié)構(gòu)化程序
。選擇結(jié)構(gòu)
?二分支選擇結(jié)構(gòu)
C語言程序設(shè)計(jì)
J.3.1結(jié)構(gòu)化程序
?多分支選擇結(jié)構(gòu)
k
A1A2
c語言程序設(shè)計(jì)
1.3.1結(jié)構(gòu)化程序
。循環(huán)結(jié)構(gòu)當(dāng)p為真
A
?當(dāng)型循環(huán)結(jié)構(gòu)
直到型循環(huán)結(jié)構(gòu)
c語言程序設(shè)計(jì)
1.3.1結(jié)構(gòu)化程序
已經(jīng)證明,由三種基本結(jié)構(gòu)所絡(luò)組成的
算法可以解決任何復(fù)雜的問題。由三種基本
結(jié)構(gòu)所構(gòu)成的算法稱為結(jié)構(gòu)化算法;由三種
基本結(jié)構(gòu)所構(gòu)成的程序稱為結(jié)構(gòu)化程序。
C語言程序設(shè)計(jì)
例L1先后輸入若干個(gè)整數(shù),要求打印出其中最大的數(shù),
當(dāng)輸入的數(shù)小于0時(shí)結(jié)束。用N-S流程圖表示算法。
解題思路:先輸入一個(gè)數(shù),在沒有其他數(shù)參加比較之前,
它顯然是當(dāng)前最大的數(shù),把它放到變量max
中,讓max始終存放當(dāng)前已比較過的數(shù)中上最大值。
然后輸入第二個(gè)數(shù),并當(dāng)max比較,如果第二個(gè)數(shù)大
于max,則用第二個(gè)數(shù)普換max市原來的值;如果第
二個(gè)數(shù)小于max,則max中原來的值保持不變。如此
循環(huán)下去,直到輸入的數(shù)小于0時(shí)程序結(jié)束。最后
max中的值就是所有輸入數(shù)中的最大值。
根據(jù)上面的思路,畫出N-S流程圖。變量x用來控制循
環(huán)的次數(shù),當(dāng)x>0時(shí),執(zhí)行循環(huán)體;在循環(huán)體內(nèi)進(jìn)行
兩個(gè)數(shù)的比較和和輸入新的x值。
c語言程序設(shè)計(jì)
C語言程序設(shè)計(jì)
J.3.2模塊化結(jié)構(gòu)
當(dāng)計(jì)算機(jī)在處理比較復(fù)雜的任務(wù)時(shí),所編
寫的程序經(jīng)常會(huì)很長(zhǎng),而且通常情況下是由多
人來完成的。這時(shí)就需要要處理的復(fù)雜問題分
解成若干個(gè)子問題,如果這些子問題仍然很大,
可以再劃分更小的子問題,直到劃分的子問題
比較容易求解。而這個(gè)容易求解的小問題我們
可以叫做一個(gè)模塊。通常我們稱這樣的程序設(shè)
計(jì)方法為“模塊化”的方法,由一個(gè)個(gè)功能模
塊構(gòu)成的程序結(jié)構(gòu)為模塊化結(jié)構(gòu)。
C語言是一種結(jié)構(gòu)化程序設(shè)計(jì)語言。提供了
定義“函數(shù)”的功能,沒有子程序的概念,它
提供的函數(shù)可程序的所有功能;C語言允許對(duì)
函數(shù)單獨(dú)進(jìn)行編譯,從而可以實(shí)現(xiàn)模塊化。
C語言程序設(shè)計(jì)
關(guān)鍵字(32個(gè))
■C語言中的關(guān)鍵字(page375):c語言系統(tǒng)中的
保留字符,不能再用其作為變量名、標(biāo)識(shí)符。
autobreakcasecharconst
continuedefaultdodoubleelse
enumexternfloatforgotoifint
longregisterreturnshort
Signedsizeofstaticstructswitch
typedefunionunsigned
voidvolatilewhile
c語言程序設(shè)計(jì)
第二章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式
■本章的考試要求:
1.C語言的數(shù)據(jù)類型(基本類型、構(gòu)造類型、
指針類型、空類型)
2.c語言運(yùn)算符的種類、運(yùn)算符優(yōu)先級(jí)和結(jié)合
性
3.C語言不通類型數(shù)據(jù)間的轉(zhuǎn)換與運(yùn)算
4.c語言表達(dá)式類型和求值規(guī)則
C語言程序設(shè)計(jì)
2.1C語言程序的構(gòu)成和格式
下面是一個(gè)簡(jiǎn)單的C程序例子。
例2.1求矩形的面積。
程序如下:
#include<stdio.h>
main()
{doublea,b,area;/*變量定義*/
a=1.2;/*將矩形的兩條邊長(zhǎng)分別賦給
a和b.*/
C語言程序設(shè)計(jì)
b=3.6;
area=a*b;
/*計(jì)算矩形的面積并存儲(chǔ)到變量area
中*/
printf("a=b=%f,area=%f\n”,a,
b,area);
/*輸出結(jié)果*/
}
運(yùn)行結(jié)果:
a=1.200000,b=3.600000,area=4.320000
c語言程序設(shè)計(jì)
以上程序中,main是主函數(shù)名,C語言規(guī)定
必須用main作為主函數(shù)名。其后的一對(duì)圓括
號(hào)中間可以是空的,但這一對(duì)圓括號(hào)不能省
略。程序中的main。是主函數(shù)的起始行,也
是C程序執(zhí)行的開始行。每個(gè)可執(zhí)行的C程序
都必須有一個(gè)且只能有一個(gè)主函數(shù)。
函數(shù)體由大括弧。括起來。函數(shù)體通常
有兩部分組成:定義(說明)部分和執(zhí)行部
分(語句)。上面的"doublea,b,area;"就
是定義部分;
C語言程序設(shè)計(jì)
從“a=l.2;”到uprintf(a=%f,b=
%f?area=%f\n",a,b,area);"是執(zhí)
行部分。執(zhí)行部分的語句稱為可執(zhí)行語句,
必須放在定義部分之后,語句的數(shù)量不限,
程序中由這些語句向計(jì)算機(jī)系統(tǒng)發(fā)出操作指
令。
語句最后都有一分號(hào)。這是語句
的固定組成部分。
定義語句doublea,b,area;對(duì)程序中所
用到的變量a,b,area進(jìn)行定義,聲明它們是
double類型的變量。
C語言程序設(shè)計(jì)
程序中的ua=l.2;"和"b=3.6;”的作
用分別是給矩形的兩條邊賦值,uarea=a*b;"
的作用是計(jì)算機(jī)出矩形面積并賦給變量area.
輸出語句,printf是C語言中的輸出函數(shù),
它后面的括號(hào)里面有兩部分組成,格式控制
和輸出袤列。格式控制就是雙引號(hào)(雙括號(hào))
內(nèi)的字符串,這里面的字符原樣輸出(除了格
式說明部分和轉(zhuǎn)義字符)。/f”是格式說
明,轉(zhuǎn)義字符“\n”是換行符?!拜敵霰砹小?/p>
是需要輸出的一些數(shù)據(jù),也可以是表達(dá)式。
如例子中的a,b,areao即在輸出“a=
1.200000,b=3.600000,area=
4.320000."后回車換行。
C語言程序設(shè)計(jì)
c程序有比較自由的書寫格式,但一般而
言,我們要從一開始就養(yǎng)成良好的格式習(xí)慣。
/**/表示注釋部分,為便于理解,
我們用漢字表示注釋,當(dāng)然也可以用英語或
漢字拼音作注釋。注釋只是給人看的,對(duì)編
譯和運(yùn)行不起作用。注釋可以加在程序十任
何位置。
注意:/才口*之間不能有空格。不可以嵌套。
如1*1*...*1*1是非法的。
C語言程序設(shè)計(jì)
程序中的#include<stdio.h>通常稱
謂命令行,命令行必須用“曠號(hào)開頭,行尾
不能加號(hào),它不是C程序中的語句。一
對(duì)括號(hào)和之間的stdio.h是系統(tǒng)提
供的頭文件,該文件中包含著有關(guān)輸入輸出
函數(shù)的說明信息。在程序中調(diào)用不同的標(biāo)準(zhǔn)
庫(kù)函數(shù),應(yīng)當(dāng)包含相應(yīng)的文件,以使程序含
有所調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù)的說明信息。至于應(yīng)該
調(diào)用哪個(gè)文件,以后用到時(shí)再——介紹。
C語言程序設(shè)計(jì)
2.2C的數(shù)據(jù)類型
一■個(gè)程序應(yīng)包括以下兩方面內(nèi)容:
(1)對(duì)數(shù)據(jù)的描述。在程序中要指定數(shù)
據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)
(datastructure)o
(2)對(duì)操作的描述。即操作步驟,也就
是算法(algorithm)。
數(shù)據(jù)是操作的對(duì)象,操作的目的是對(duì)數(shù)
據(jù)進(jìn)行加工處理,以得到期望的結(jié)果。打個(gè)
比方,廚師做菜肴,需要有菜譜。菜譜上一
般應(yīng)包括:
①配料,指出應(yīng)使用哪些原料;②操
作步驟,指出如何使用這些原料按規(guī)定的步
驟加工成所需的菜肴。面對(duì)向一些原料可以
加工出不同血味的菜肴。
C語言程序設(shè)計(jì)
作為程序設(shè)計(jì)人員,必須認(rèn)真考慮和設(shè)
計(jì)數(shù)據(jù)結(jié)構(gòu)和掾作步驟(即算法)。因此,著
名計(jì)算機(jī)科學(xué)家沃思(nikiklausWirth)提出
一個(gè)公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序。實(shí)際上,
一個(gè)程序除了以上兩個(gè)主要要素之外,還應(yīng)
當(dāng)采用結(jié)構(gòu)化程序設(shè)計(jì)方法進(jìn)行程序設(shè)計(jì),
并且用某一種計(jì)算機(jī)語言表示。因此,可以
這樣表示:
程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語言工
具和環(huán)境
C語言程序設(shè)計(jì)
也就是說,以上4個(gè)方面是一個(gè)程序設(shè)計(jì)
人員所應(yīng)具春的知識(shí)。在設(shè)并一人程序后要
綜合運(yùn)用這幾方面的知識(shí)。在本書中不可能
全面介紹這些內(nèi)容,它們都屬于宥關(guān)的專門
課程范嶙。在這4個(gè)方面中,算法是靈魂,數(shù)
據(jù)結(jié)構(gòu)是加工好象,語言是工具,編程需要
采用合適的方法。算法是解決“做什么”和
“怎么做”的問題。程序中的操作語句,實(shí)
際上就是算法的體現(xiàn)。算法處理的對(duì)象是數(shù)
據(jù),而數(shù)鬼是以某種存定的形式存點(diǎn)的(例如
整數(shù)、實(shí)數(shù)、字符等形式)。不同的數(shù)據(jù)之間
往往還存在某些聯(lián)系(例如由若干個(gè)整數(shù)組成
一個(gè)整數(shù)數(shù)組)。所謂數(shù)堀結(jié)構(gòu)指的是數(shù)堀的
組織形
C語言程序設(shè)計(jì)
例如,C語言提供了“結(jié)構(gòu)體”這樣一種數(shù)據(jù)
結(jié)構(gòu),而fortran語言就不提供這種數(shù)據(jù)結(jié)構(gòu)。
處理同一類問題,如果數(shù)據(jù)結(jié)構(gòu)不同,算法
也會(huì)不同。
例如,對(duì)10個(gè)整數(shù)排序和對(duì)由10個(gè)整數(shù)構(gòu)成
的數(shù)組排序的算法是不同的。因此,在考慮
算法時(shí),必須注意數(shù)據(jù)結(jié)構(gòu)。實(shí)際上,應(yīng)當(dāng)
綜合考慮算法和數(shù)據(jù)結(jié)構(gòu),選擇最佳的數(shù)據(jù)
結(jié)構(gòu)和算法。
C語言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型形式出現(xiàn)
的。C的數(shù)據(jù)類型如下:
C語言程序設(shè)計(jì)
短整型short
[%型<整型int
長(zhǎng)整型long
基本類型\[單精度型float
重型<
雙精度型double
字符類型char
________________
“數(shù)組數(shù)據(jù)類型決定:
C
結(jié)構(gòu)體struct1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)
數(shù)
<2.數(shù)據(jù)取值范圍
據(jù)構(gòu)造類型共用體union
3.其上可進(jìn)行的操作
類:枚舉類型enum
型
指針類型
空類型void
定義類型typedef
c語言程序設(shè)計(jì)
產(chǎn).2標(biāo)識(shí)符、常量、變量
C語言中數(shù)據(jù)有常量與變量之分,它們分
別屬于以上這些類型。由以上這些數(shù)據(jù)類型
還可以構(gòu)成更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。例如利用指
針和結(jié)構(gòu)體類型可以構(gòu)成表、樹、棧等復(fù)雜
的數(shù)據(jù)結(jié)構(gòu)。在程序中對(duì)用到的所有數(shù)據(jù)都
必須指定其數(shù)據(jù)類型。在本章中主要介紹基
本數(shù)據(jù)類型。
C語言程序設(shè)計(jì)
22標(biāo)識(shí)符、常量、變量
2.2.1標(biāo)識(shí)符定義:
用于變量名、函數(shù)名、標(biāo)號(hào)及其其他各
種用戶定義對(duì)象的名字稱為標(biāo)識(shí)符。
命名規(guī)范:
標(biāo)識(shí)符只能由字母、數(shù)字和下劃線
第一個(gè)字符必須是字母或下劃線
合法的標(biāo)識(shí)符:
sumaverage_total
不合法的標(biāo)識(shí)符:
M.D3df
C語言區(qū)分大小寫,price和Price是不同的標(biāo)識(shí)符。
C語言程序設(shè)計(jì)
22標(biāo)識(shí)符、常量、變量
標(biāo)識(shí)符可以分為三類:
一、關(guān)鍵字
定義:在c語言中有些標(biāo)識(shí)符留作特殊用途,它們?cè)诔绦?/p>
果a固固定的含義,不能另作它用,這些標(biāo)識(shí)符稱為
注:所有的關(guān)鍵字都是由小寫字母組成。
C語言中標(biāo)準(zhǔn)的32個(gè)關(guān)鍵字:
數(shù)據(jù)類型說明:
char,int,long,short,unsigned,float,double,struct,union;
存儲(chǔ)類型說明:auto,extern,register,static
語句說明:
if,else,switch,case,default,while,do,for,return,continue,break,
goto;
其他:sizeof,typeof
c語言程序設(shè)計(jì)
22標(biāo)識(shí)符、常量、變量
二、預(yù)定義標(biāo)識(shí)符
用預(yù)先定義的并具有特定含義的標(biāo)識(shí)符,如:
庫(kù)函數(shù)名printf、預(yù)編譯處理命令define等。
三、用戶標(biāo)識(shí)符
用戶自己定義的標(biāo)識(shí)符,用來給變量、函數(shù)、
數(shù)組或文件命名。
要求:1,符合命名規(guī)范,2,見名知意
C語言程序設(shè)計(jì)
2.2.2常量和符號(hào)常量
在程序運(yùn)行過程中,其值不能被改變的
量稱為常量。常量區(qū)分為不同的類型,如12,
0,-3為整型常量,4.6、-1.23為實(shí)型常量,
冶‘,F(xiàn)'為字符常量。常量一般從其字
面形式即可判別。這種常量稱為字面常量或
直接常量。
也可以用一個(gè)標(biāo)識(shí)符代表一個(gè)常量,如:
例2.2符號(hào)常量的使用。
#definePRICE30
main()
C語言程序設(shè)計(jì)
intnum,total;
num=10;
total=num*PRICE;
printf("total=%dH,total);
)
程序中用#define命令行定義PRICE代表常量
30,此后凡在本文件中出現(xiàn)的PRICE都代表30,
可以和常量一樣進(jìn)行運(yùn)算,程序運(yùn)行結(jié)果為
total=300
有關(guān)#(1.£ine命令行的詳細(xì)用法參見后面章節(jié)。
C語言程序設(shè)計(jì)
這種用一個(gè)標(biāo)識(shí)符代表一個(gè)常量的,稱
為符號(hào)常量,即標(biāo)識(shí)符形式的常量。請(qǐng)注意
符號(hào)常量不同于變量,它的值在其作用域(在
本例中為主函數(shù))內(nèi)不能改變,也不能再被賦
值。如再用以下賦值語句給PRICE賦值是錯(cuò)誤
的。
PRICE=40;
習(xí)慣上,符號(hào)常量名用大寫,變量用小
寫,以示區(qū)別。
使用符號(hào)常量的好處是:
C語言程序設(shè)計(jì)
(1)含義清楚。如上面的程序中,看程序時(shí)
從PRICE就可知道它代表價(jià)格。因此定義符號(hào)
常量名時(shí)應(yīng)考慮“見名知意”。在一個(gè)規(guī)范
的程序中不提倡使用很多的常數(shù),如:sum=
15*30*23.5*43O在檢查程序時(shí)搞不清
各個(gè)常數(shù)究竟代表什么。應(yīng)盡量使用“見名
知意”的變量名和符號(hào)常量。
C語言程序設(shè)計(jì)
⑵在需要改變一個(gè)常量時(shí)能做到“一改全
改”。例如在程序中多處用到某物品的價(jià)格,
如果價(jià)格用常數(shù)表示,則在價(jià)格調(diào)整時(shí),就
需要在程序中作多處修改,若用符號(hào)常量
PRICE代表價(jià)格,只需改動(dòng)一處即可。如:
#definePRICE35
在程序中所有以PRICE代表的價(jià)格就會(huì)一
律自動(dòng)改為35。
C語言程序設(shè)計(jì)
,23變量
其值可以改變的量稱為變量。一個(gè)變量
應(yīng)該有一個(gè)名字,在內(nèi)存中占據(jù)一定的存儲(chǔ)
單元。在該存儲(chǔ)單元中存放變量的值。請(qǐng)注
意區(qū)分變量名和變量值這兩個(gè)不同的概念,
見圖2.1。變量名實(shí)際上是一個(gè)符號(hào)地址,在
對(duì)程序編譯連接時(shí)由系統(tǒng)給每一個(gè)變量名分
酉己一個(gè)內(nèi)存地址o
變量名
3-I——變量值
X、——存儲(chǔ)單元
c語言程序設(shè)計(jì)
注意,大寫字母和小寫字母被認(rèn)為是兩個(gè)不同的字符。
因此,sum和suM,class和Class是兩個(gè)不同的變量名。
一般,變量名用小寫字母表示,與人們?nèi)粘A?xí)慣一致,
以增加可讀性。
ANSIC標(biāo)準(zhǔn)沒有規(guī)定標(biāo)識(shí)符的長(zhǎng)度(字符個(gè)數(shù)),
但各個(gè)C編譯系統(tǒng)都有自己的規(guī)定。有的系統(tǒng)(如IBM
PC的MsC)取8個(gè)字符,假如程序中出現(xiàn)的變量名長(zhǎng)
度大于8個(gè)字符,則只有前面8個(gè)字符有效,后面的不
被識(shí)別。例如,有兩個(gè)變量:student_name和
student-number,由于二者的前8個(gè)字符相同,系統(tǒng)
認(rèn)為這兩個(gè)變量是一回事而不加區(qū)別。可以修它們改
為stud_name和stud_num,以使之區(qū)別。
C語言程序設(shè)計(jì)
在選擇變量名和其他標(biāo)識(shí)符時(shí),應(yīng)注意
做到“見名知意”,即選有含意的英文單詞
(或箕縮寫)作標(biāo)識(shí)符,如count、name、day、
month、total、country等,除了數(shù)值計(jì)算超
序外,一般不要用代數(shù)符號(hào)(如a、b、c、xl、
yl等)作變量名,以增加程序的可讀性。這是
結(jié)構(gòu)化程序的'一個(gè)特征。本書在'一些簡(jiǎn)單的
舉例中,為方便起見,仍用單字符的變量,如
a?b、c等),請(qǐng)讀者注意不要在其他所有程
序中都如此。
C語言程序設(shè)計(jì)
在C語言中,要求對(duì)所有用到的變量作強(qiáng)
制定義,也就是“先定義,后使用”,如例
2.1、例2.2那樣。這樣做的目的是:
(1)凡未被事先定義的,不作為變量名,
這就能保證程序中變量名使用得正確。例如,
如果在定義部分寫了
intstudent;
而在執(zhí)行語句中錯(cuò)寫成staent。如:
staent=30;
C語言程序設(shè)計(jì)
在編譯時(shí)檢查出statent未經(jīng)定義,不
作為變量名。因此輸出“變量statent未經(jīng)聲
明”的信息,便于用戶發(fā)現(xiàn)錯(cuò)誤,避免變量
名使用時(shí)出錯(cuò)。
(2)每一個(gè)變量被指定為一確定類型,
在編譯時(shí)就能為其分配相應(yīng)的存儲(chǔ)單元。如
指定a、b為int型,VC6.0系統(tǒng)為a和b各分配4
個(gè)字節(jié),并按整數(shù)方式存儲(chǔ)數(shù)據(jù)。
C語言程序設(shè)計(jì)
(3)指定每一變量屬于一個(gè)類型,這就
便于在編譯時(shí),據(jù)此檢查該變量所進(jìn)行的運(yùn)
算是否合法。例如,整型變量a和b,可以進(jìn)
行求余運(yùn)算:
a%b
%是“求余力,得到a/b的余數(shù)。如果將a、
b指定為實(shí)型變量,則不允許進(jìn)行“求余”運(yùn)
算,在編譯時(shí)會(huì)給出有關(guān)“出錯(cuò)信息”。
下面各節(jié)分別介紹整型、實(shí)型(浮點(diǎn)
型)、字符型數(shù)據(jù)。
C語言程序設(shè)計(jì)
產(chǎn)3整型數(shù)據(jù)
2.3.1整型常量一三種表示方法
十進(jìn)制:21,-45,0
八進(jìn)制:以數(shù)字O開始,如:010,011,017
注意:018不是合法的八進(jìn)制數(shù),因?yàn)?不是八
進(jìn)制數(shù)字
0,123,4,5,6,7
十六進(jìn)制:以數(shù)字O和字母乂或X開始,
如:
0xl0,0xde,0xf
0,l,2,3,4,5,6,7,8,9,a,b,c,d,e,f(可
以是大寫字母)
C語言程序設(shè)計(jì)
2.3.1整型變量
■整型變量可分為:基本
型、短整型、長(zhǎng)整型和
無符號(hào)型四種。
■一般的微機(jī)中個(gè)整型所
占位數(shù)如下:
類型說明所占位數(shù)數(shù)的范圍
int基本整型32-2147483648?2147483648
short或shortint短整型16-32768?32767
long或longint長(zhǎng)整型32-2147483648?2147483648
unsigned(int)無符號(hào)整型320-4294967295
unsignedshort無符號(hào)短整型160-65535
unsignedlong無符號(hào)長(zhǎng)整型320-4294967295
C語言程序設(shè)計(jì)
24實(shí)型數(shù)據(jù)
2.4.1實(shí)型常量的表示方法
實(shí)數(shù)(realnumber)又稱浮點(diǎn)數(shù)(floating-
pointnumber)o實(shí)數(shù)有兩種表示形式:
⑴十進(jìn)制小數(shù)形式。它由數(shù)字和小數(shù)點(diǎn)組成
(注意必須有小數(shù)點(diǎn))o.123、123.、
123.0、0.0都是十進(jìn)制小數(shù)形式。
⑵指數(shù)形式。如123e3代表123x103。但注意
字母E(或e)之前必須有數(shù)字,且e后面的指數(shù)
必須為整數(shù),如e3、2.1e3.5、.e3、e等都
不是合法的指數(shù)形式。
C語言程序設(shè)計(jì)
一個(gè)實(shí)數(shù)可以有多種指數(shù)表示形式。例
如123.456可以表示為123.456e0,
12.3456el、1.23456e2、0.123456e3.
0.0123456e4.0.00123456e5等。把其中的
L23456e2稱為“規(guī)范化的指數(shù)形式”,即
點(diǎn)字母e(或e)之前的小數(shù)部分工小數(shù)點(diǎn)左
邊應(yīng)宥一位(且只能有一位)非零的數(shù)字。例
如2.3478e2、3.0999e5、6.46832el2都屬
于規(guī)范化的指數(shù)形式,而12.908el0、
0.4578e3.756e0則不屬于規(guī)范化的指數(shù)形
式。一個(gè)實(shí)數(shù)在用指數(shù)形式輸出時(shí),是按規(guī)
范化的指數(shù)形式輸出的。例如,指定I尋實(shí)數(shù)
5689.65按指數(shù)形式輸出,必然輸出
5.68965e+003,而不會(huì)是0.568965e+004或
56.8965e+002o
C語言程序設(shè)計(jì)
2.4.2實(shí)型變量
1.實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式
在常用的微機(jī)系統(tǒng)中,一個(gè)實(shí)型數(shù)據(jù)在內(nèi)存
中占4個(gè)字節(jié)(32位)。與整型數(shù)據(jù)的存儲(chǔ)方
式不同,實(shí)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。
系統(tǒng)把一個(gè)實(shí)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部
分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)
形式。
實(shí)數(shù)3.14159在內(nèi)+.3141591
III
存中的存放形式可數(shù)符小數(shù)部分指數(shù)
以用圖2.7示意。
+,314159X101—-3.14159
C語言程序設(shè)計(jì)
圖中是用十進(jìn)制數(shù)來示意的,實(shí)際上在
計(jì)算機(jī)中是用二進(jìn)制數(shù)來表示小數(shù)部分以及
用2的賽次來表示指數(shù)部分的。在4個(gè)字節(jié)(32
位)中,究竟用多少位來表示小數(shù)部分,多少
位來表示指數(shù)部分,標(biāo)準(zhǔn)C并無具體規(guī)定,由
各C編譯系統(tǒng)自定。不少c編譯系統(tǒng)以24位表
示小數(shù)部分(包括符號(hào)),以8位表示指數(shù)部分
(包括指數(shù)的符號(hào))。小數(shù)部分占的位(bit)數(shù)
愈多,數(shù)的有效數(shù)字愈多,精度愈高。指數(shù)
部分占的位數(shù)愈多,則能表示的數(shù)殖范圍愈
夫。
C語言程序設(shè)計(jì)
2,實(shí)型變量
實(shí)型變量:?jiǎn)尉?/p>
(float)和雙精度
(double)
類型所占位數(shù)有效數(shù)字
單精度(float)327位
雙精度6415?16位
(doub⑹
C語言程序設(shè)計(jì)
實(shí)型數(shù)據(jù)的舍入誤差
由于實(shí)型變量是由有限的存儲(chǔ)單元組成
的,因此能提供的有效數(shù)字總是有限的,在
有效位以外的數(shù)字將被舍去。由此可能會(huì)產(chǎn)
星一些誤差。例如,a力口、的結(jié)果顯然應(yīng)該
比a大。請(qǐng)分析下面的程序:
例2.5實(shí)型數(shù)據(jù)的舍入誤差。
main()
{floata,b;
a=123456.789e5;
b=a+20;
printf(n%f",b);
)
c語言程序設(shè)計(jì)
程序內(nèi)printf函數(shù)中的"f”是輸出一
個(gè)實(shí)數(shù)日才的花式符。程序運(yùn)行時(shí),輸出b的值
與a彳目等。原因是:a的值比20關(guān)很多,a+20
的理論值應(yīng)是12345678920,而一個(gè)實(shí)型變量
只能保證的有效數(shù)字是7位有效數(shù)字,后面的
數(shù)字是無意義的,并不準(zhǔn)確地表示該數(shù)。
運(yùn)行程序得到的a和b的值是:
12345678848.000000,可以看到,前7位是準(zhǔn)
確的,后幾位是不準(zhǔn)確而,把26加在后幾位
上,是無意義的。應(yīng)當(dāng)避免將一個(gè)很大的數(shù)
和一個(gè)很小的藪直接相加或相減,否則就會(huì)
“丟失”小的數(shù)。與此類似,用程序計(jì)算
1.0/3*3的結(jié)果并不等于L
C語言程序設(shè)計(jì)
2.4?3實(shí)型常量的類型
?C編譯系統(tǒng)將實(shí)型常量作為雙精度來處理。
例如:已定義一個(gè)實(shí)型變量f,有如下語句:
f=2.45678*4523.65
系統(tǒng)將2.45678和4523.65按雙精度數(shù)據(jù)
存儲(chǔ)(占64位)和運(yùn)算,得到一個(gè)雙精度的乘
積,然后取前7位賦給實(shí)型變量f。這樣做可
以保證計(jì)算結(jié)果更精確,但是運(yùn)算速度降低
了??梢詫脭?shù)的后面加字母f或f(如1.65f,
654.87f),這樣編譯系統(tǒng)就會(huì)按單精度(32位)
處理。一個(gè)實(shí)型常量可以賦給一個(gè)float型、
double型變量。根據(jù)變量的類型藏取實(shí)型常
量中相應(yīng)的有效位數(shù)字。
C語言程序設(shè)計(jì)
假如a已指定為單精度實(shí)型變量:
floata;
a=llllll.Ill;
由于float型變量只能接收7位有效數(shù)字,
因此最后兩位小數(shù)不起作用。如果a改為
doub1e型,則能全部接收上述9位數(shù)字并存儲(chǔ)
在變量a中。
C語言程序設(shè)計(jì)
2.5字符型數(shù)據(jù)
字符型常量:
舉傷|:'A','n','?'等
轉(zhuǎn)義字符:就是以‘'‘開
頭的字符序列。
字符形式功能字符形式功能
\n換行\(zhòng)f走紙換頁
\t橫向跳格\\字符'
\v豎向跳格\''字符
\b退格\ddd1到3位8進(jìn)制所代表的字符
\r回車\xhh1到2位16進(jìn)制所代表的字符
C語言程序設(shè)計(jì)
[2.5.1字符常量
C的字符常量是用單引號(hào)(即撇號(hào))括起來
的一個(gè)字符。如匕‘,‘X’,d,
等都是字符常量。注意,,『
和是不同的字符常量。
除了以上形式的字符常量外,c還允許用
一種特殊形式的字符常量,就是以一個(gè)
開頭的字符序列。例如,前面已經(jīng)遇到過的,
在printf函數(shù)中的\n',它代表一個(gè)“換
行”符。這是一種“控制字符”,在屏幕上
是不能顯示的。在程序中也無法用一個(gè)一般
形式的字符表示,只能采用特殊形式來表示。
C語言程序設(shè)計(jì)
262字符變量
字符型變量用來存放字符常量,請(qǐng)注意
只能放一個(gè)字符,不要以為在一個(gè)字符變量
中可以放一個(gè)字符串(包括若干字符)。字符
變量的定義形£4口卡:
charcl,c2;
它表示cl和c2為字符型變量,各可以放
一個(gè)字符,因此在函數(shù)中可以用下面語句對(duì)
cl、c2賦值:
cl=/az;c2=,bz;
在所有的編譯系統(tǒng)中都規(guī)定以一個(gè)字節(jié)
來存放一個(gè)字符,或者說一個(gè)字符變量在內(nèi)
存中占一個(gè)字節(jié)。
C語言程序設(shè)計(jì)
2.6.3字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式
將一個(gè)字符常量放到
clc2
一個(gè)字符變量中,實(shí)際上HH
并不是把該字符本身放到
內(nèi)存單元中去,而是I尋該(a)
字符的相應(yīng)的ASCH代碼放clc2
到存儲(chǔ)單元中。例如字符0110000101100010
冶'的ASCH代碼為97,(b)
為98,在內(nèi)存中變量
cl、c2的值如圖2.8(a)所
示。實(shí)際上是以二進(jìn)制形圖2.8
式存放的,如圖2.8(b)所
示。
C語言程序設(shè)計(jì)
既然在內(nèi)存中,字符數(shù)據(jù)以ASCH碼存儲(chǔ),
它的存儲(chǔ)形式就與整數(shù)的存儲(chǔ)形式類似。這
樣,在字符型數(shù)據(jù)和整型數(shù)據(jù)之間的轉(zhuǎn)換就
比較方便了。一個(gè)字符數(shù)據(jù)既可以以字符形
式輸出,也可以以整數(shù)形式輸出。以字符形
式輸出時(shí),需要先將存儲(chǔ)單元中的ASCH碼轉(zhuǎn)
換成相應(yīng)字符,然后輸出。以整數(shù)形式輸
出時(shí),直接修ASCH碼作為整數(shù)輸出。也可以
對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)相當(dāng)于對(duì)它
們的ASCH碼進(jìn)行算術(shù)運(yùn)算,只是將其一個(gè)字
節(jié)轉(zhuǎn)化為4個(gè)字節(jié),然后參加運(yùn)算。
C語言程序設(shè)計(jì)
例2.6向字符變量賦以整數(shù)。
main()
{charcl,c2;
cl=97;
c2=98;
printf(n%c%c\nn,cl,c2);/*以字符形式
輸出*/
printf(n%d%d\nH,cl,c2);/*轉(zhuǎn)換為整數(shù)
形£輸由*/
}
cl、c2被指定為字符變量。但在第3和第
4行中,將整數(shù)97和98分別賦給cl和c2,它的
作用相當(dāng)于以下兩個(gè)賦值語句:
C語言程序設(shè)計(jì)
cl='a';c2='';
因?yàn)橐?和&的ASCH碼為97和98。在
程序的第3和第4行是把97和98兩個(gè)整數(shù)直接
存放至ijcl和c2的內(nèi)存單元中。而cl='a'和
c2=b則是先將字符匕'和E化成
ASCII碼97和98,然后放到內(nèi)存單元中。二者
的作用和結(jié)果是相同的。
第5行輸出兩個(gè)字符a和b。V是輸出
字符時(shí)必須使用的格式符。程序第6行輸出兩
個(gè)整數(shù)97和98。
C語言程序設(shè)計(jì)
a01100001存儲(chǔ)(ASCH碼)
〃%c〃"%d〃輸出格式符圖2.9
a97顯示
程序運(yùn)行時(shí)輸出如下:
ab
9798
可以看到:字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的。
它們既可以用字符形式輸出(用%c),也可以
用整數(shù)形式輸出(用%d),見圖2.9。但是應(yīng)注
意字符數(shù)據(jù)只占一個(gè)字節(jié),它只能存放。?
255范圍內(nèi)的整數(shù)。C語言程序設(shè)計(jì)
"例2.7大小寫字母的轉(zhuǎn)換。
main()
{charcl,c2;
cl=/az;
c2=/bz;
cl=cl-32;
c2=c2-32;
printf("%c%c",cl,c2);
}
運(yùn)行結(jié)果為
AB
c語言程序設(shè)計(jì)
程序的作用是將兩個(gè)小寫字母a和b轉(zhuǎn)換
成大寫字母A和B。冶'的ascii碼為97,而2
為65,力,為98,'B'為66。從ASCII代碼表
中可以看到每一個(gè)小寫字母比它相應(yīng)的大寫
字母的ascii碼大32。c語言允許字符數(shù)據(jù)與
整數(shù)直接進(jìn)行算術(shù)運(yùn)算,即公+32會(huì)得到整
數(shù)97,冶'-32會(huì)得到整數(shù)65。
C語言程序設(shè)計(jì)
字符數(shù)據(jù)與整型數(shù)據(jù)可以互相賦值。如:
inti;
charc;
i=,az;
c=97;
是A法的。如果用格式符“%d”修i的值輸出,
可得到97。用V輸出c,可得字符匕'。
如果在上面語句之后執(zhí)行以下語句:
printf(H%c,%d\nH,c,c);
printf(n%c,%d\n",i,i);
輸出:
a,97
a,97
c語言程序設(shè)計(jì)
]]2,6,4字符串常量
—前面已提到,字符常量是由一對(duì)單引號(hào)
括起來的單個(gè)字符。c語言除了允許使用字符
常量外,還允許使用字符串常量。字符串常
量是一對(duì)雙引號(hào)括起來的字符序列。如:
“howdoyoudo.",“CHINA",“a”,都是
字符串常量。可以輸出一個(gè)字符串,如:
printf("howdoyoudo.H);
不要將字符常量與字符串常量混淆。W
是字符常量,“屋是字符串常量,二者不同。
假設(shè)c被指定為字符變量:
C語言程序設(shè)計(jì)
charc;
c=zaz;
是正確的。
而?=匕";是錯(cuò)誤的。
c="CHINA”也是錯(cuò)誤的。
不能把一個(gè)字符串賦給一個(gè)字符變量。
有人不能理解冶'和匕”究竟有什么
區(qū)別?c規(guī)定:在每一個(gè)字符串的結(jié)尾加一個(gè)
“字符串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字
符串是否結(jié)束。C規(guī)定以字符作為字符
串結(jié)束標(biāo)志。
C語言程序設(shè)計(jì)
’\0’是一個(gè)ASCH碼為。的字符,從ascii代碼
表中可以看到ascii碼為0的字符是“空操作
字符”,即它不引起任何控制動(dòng)作,也不是
一個(gè)可顯示的字符。如果有一'個(gè)字符串
“CHINA",實(shí)際上在內(nèi)存中是CHIN
A\0
它的長(zhǎng)度不是5個(gè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電動(dòng)車專賣店銷售協(xié)議書
- 教育技術(shù)專業(yè)工具操作作業(yè)指導(dǎo)書
- 2025年貴陽貨運(yùn)資格證題目答案
- 2024-2025學(xué)年三年級(jí)語文下冊(cè)第三單元12一幅名揚(yáng)中外的畫作業(yè)設(shè)計(jì)新人教版
- 2024年高中歷史第一單元古代中國(guó)的政治制度易混易錯(cuò)高考體驗(yàn)含解析新人教版必修1
- 四年級(jí)混合運(yùn)算計(jì)算題100題
- 五年級(jí)蘇教版數(shù)學(xué)下冊(cè)《質(zhì)數(shù)與合數(shù)》聽評(píng)課記錄(校內(nèi)大組)
- 2022-2023學(xué)年第二學(xué)期高一中職數(shù)學(xué)期末考試模擬測(cè)試題
- 粵教版道德與法治八年級(jí)下冊(cè)8.1《社會(huì)合作與公平》聽課評(píng)課記錄2
- 空壓機(jī)維修及保養(yǎng)合同范本
- 2024中考病句訓(xùn)練20題附答案 (一)
- 呼吸科護(hù)理培訓(xùn)簡(jiǎn)介
- 會(huì)議系統(tǒng)設(shè)備維護(hù)方案
- 建筑施工合同:水庫(kù)大壩工程
- 期末復(fù)習(xí)(試題)-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)蘇教版
- 少兒口才培訓(xùn)主持課件
- 小紅書種草營(yíng)銷師模擬題及答案(單選+多選+判斷)
- 2024年5月26日河南省事業(yè)單位聯(lián)考《公共基礎(chǔ)知識(shí)》試題
- 工廠安全保安服務(wù)管理制度
- 網(wǎng)絡(luò)安全攻防演練報(bào)告
- 新《學(xué)前教育法》知識(shí)講座課件
評(píng)論
0/150
提交評(píng)論