C語言程序設(shè)計第一單元_第1頁
C語言程序設(shè)計第一單元_第2頁
C語言程序設(shè)計第一單元_第3頁
C語言程序設(shè)計第一單元_第4頁
C語言程序設(shè)計第一單元_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第1章 C語言程序設(shè)計基礎(chǔ)知識計算機基礎(chǔ)知識C語言程序基本知識 在計算機上執(zhí)行C語言程序?qū)W習(xí)目標(biāo) 掌握計算機運算基礎(chǔ)理解計算機程序的基本概念熟悉C語言基礎(chǔ)知識了解C語言程序的結(jié)構(gòu)學(xué)會在VC環(huán)境下編輯、編譯、執(zhí)行C程序 能夠仿照例子用C語言編寫簡單的程序1.1 計算機基礎(chǔ)知識1.1.1 計數(shù)制概念數(shù)制(二、八、十、十六);數(shù)制轉(zhuǎn)換1.1.2 數(shù)值和非數(shù)值的表示原碼、反碼和補碼;定點數(shù)和浮點數(shù)的表示1.1.3 計算機運算基礎(chǔ)算術(shù)運算;邏輯運算1.1.4 程序與程序設(shè)計語言程序;程序設(shè)計語言;高級語言1.1.5 程序執(zhí)行高級語言處理程序計算機的二進制世界計算機的世界是一個二進制世界計算機是信息處理的

2、工具,任何信息必須被轉(zhuǎn)換成二進制形式數(shù)據(jù)后才能由計算機進行處理、存儲和傳輸計算機硬件系統(tǒng)的主要功能部件均是僅有兩種穩(wěn)定狀態(tài)(電位的高和低,用0和1這兩個數(shù)字表示)的電子元器件組成1. 進位計數(shù)制:指用一組特定的數(shù)字符號按照一定的進位規(guī)則來表示數(shù)的計數(shù)方法。使用任何一種計數(shù)制都必須了解兩個重要概念:基數(shù)和位權(quán)?;鶖?shù):進位計數(shù)制中所使用的不同基本符號的個數(shù)。位權(quán):數(shù)碼在不同的位置上有不同的值,確定數(shù)位上實際值所乘因子。任意進制的一個數(shù)都可以表示為它的各位數(shù)字與位權(quán)乘積之和。假設(shè)有一個R進制的數(shù)P,共有m位整數(shù)和n位小數(shù),每位數(shù)字用 Di(-nim1 )表示,即P=Dm-1Dm-2D1D0D-1D-

3、n,它可展開為:P = Dm-1Rm-1Dm-2Rm-2D0R0D-1R-1 D-nR-n此多項式的值即為R進制的數(shù)P。1.1.1 計數(shù)制概念計算機內(nèi)部采用二進制的主要原因(1)容易表示,電路簡單可靠。二進制數(shù)只有“0”和“1”兩個基本符號,易于用兩種對立的物理狀態(tài)表示。例如,可用電燈開關(guān)的“閉合”狀態(tài)表示“1”,用“斷開”狀態(tài)表示“0”;晶體管的導(dǎo)通表示“1”,截止表示“0”。一切有兩種對立穩(wěn)定狀態(tài)的器件都可以表示二進制的“0”和“1”。而十進制數(shù)有10個基本符號( 09 ),要用10種狀態(tài)才能表示,實現(xiàn)起來很困難。(2)運算簡單。二進制數(shù)的算術(shù)運算特別簡單,加法和乘法僅各有 3條運算規(guī)則(

4、 00 = 0,01 = 1,11 = 1 0和00 = 0,01 = 0,11 = 1 ),運算時不易出錯。(3)邏輯性強。二進制數(shù)的“1”和“0”正好可與邏輯值“真”和“假”相對應(yīng),這樣就為計算機進行邏輯運算提供了方便。算術(shù)運算和邏輯運算是計算機的基本運算,采用二進制可以簡單方便地進行這兩類運算。2. 數(shù)制轉(zhuǎn)換(1) R進制數(shù)轉(zhuǎn)換為十進制數(shù)。轉(zhuǎn)換規(guī)則:將各位數(shù)碼與位權(quán)相乘求和,所得數(shù)即為轉(zhuǎn)換結(jié)果。例如:(10110.1)2 = 2 4 222 12-1 = (22.5)10(456.45)8 = 48 258 168048-158-2 =(302.578125)10(2AF)16 = 21

5、6 2A16 1F16 0 = 216161016 151 =(687)10()十進制數(shù)轉(zhuǎn)換為R進制數(shù)十進制整數(shù)轉(zhuǎn)換為R進制整數(shù)。轉(zhuǎn)換規(guī)則:“除R取余法”。即用十進制數(shù)反復(fù)地除以基數(shù),記下每次得到的余數(shù),直至商為0。將所得余數(shù)按最后一個余數(shù)到第一個余數(shù)的順序依次排列起來即為轉(zhuǎn)換結(jié)果。 十進制小數(shù)轉(zhuǎn)換成R進制小數(shù)。轉(zhuǎn)換規(guī)則:“乘R取整法”。即用十進制小數(shù)乘以基數(shù),得到一個乘積,將乘積的整數(shù)部分取出來,將乘積的小數(shù)部分再乘以基數(shù)。重復(fù)以上過程,直至乘積的小數(shù)部分為 0或滿足轉(zhuǎn)換精度要求為止。最后將每次取得的整數(shù)依次從左到右排列即為轉(zhuǎn)換結(jié)果。一個十進制數(shù)既有整數(shù)部分,又包括小數(shù)部分,要將其轉(zhuǎn)換成 R

6、進制數(shù)的轉(zhuǎn)換規(guī)則是:將該十進制數(shù)的整數(shù)部分和小數(shù)部分分別進行轉(zhuǎn)換,然后將兩個轉(zhuǎn)換結(jié)果拼接起來即可。 例如,將83轉(zhuǎn)換成二進制數(shù),逐次除2取余:可得到:(83)10 =(1010011)2例如,將0.8125轉(zhuǎn)換為二進制小數(shù),逐次乘2取整:可得: (0.8125)10 =(0.1101)2 注意:并非所有的十進制小數(shù)都能完全準(zhǔn)確地轉(zhuǎn)換成對應(yīng)的二進制小數(shù),此時可以在采用在滿足題目所要求的精度條件下用0舍1入的方法進行處理(類似于十進制中的四舍五入的方法)。在轉(zhuǎn)換過程中,做的乘法次數(shù)越多,結(jié)果就越精確。例如,將0.335轉(zhuǎn)換為二進制小數(shù),精確到0.001。 可得:(0.335)10 =(0.0101

7、)2 (0.011)2(3)二進制數(shù)與八進制、十六進制數(shù)之間的轉(zhuǎn)換(3.1)二進制數(shù)轉(zhuǎn)換為八進制數(shù) 二進制數(shù)轉(zhuǎn)換成八進制數(shù):“三位并一位”,即以小數(shù)點為基準(zhǔn),整數(shù)部分從右至左,每三位一組,最高位不足時補0;小數(shù)部分從左至右,每三位一組,最低有效位不足時補0。然后,每組改成等值的一位八進制數(shù)即可。例如:(3.2)八進制數(shù)轉(zhuǎn)換為二進制數(shù) 八進制數(shù)轉(zhuǎn)換成二進制數(shù):“一位拆三位”,即把一位八進制數(shù)寫成等值的3位二進制數(shù),然后按權(quán)連接即可。 (3.3)二進制數(shù)轉(zhuǎn)換為十六進制數(shù) 二進制數(shù)轉(zhuǎn)換成十六進制數(shù):“四位并一位”,即以小數(shù)點為基準(zhǔn),整數(shù)部分從右至左,每四位一組,最高位不足時補0;小數(shù)部分從左至右,每

8、四位一組,最低有效位不足時補0。然后,每組改成等值的一位十六進制數(shù)即可。(3.4)十六進制數(shù)轉(zhuǎn)換為二進制數(shù) 十六進制數(shù)轉(zhuǎn)換成二進制數(shù):“一位拆四位”,即把一位十六進制數(shù)寫成等值的四位二進制數(shù),然后按權(quán)連接即可。1.1.2 數(shù)值和非數(shù)值的表示1原碼、反碼、補碼的表示計算機中參與運算的數(shù)據(jù)有兩種:無符號數(shù)和有符號數(shù)數(shù)的值:二進制,用0、1表示符號:正、負(fù)號只能用0、1表示,且存放在最高數(shù)位上。正整數(shù):它的原碼、反碼、補碼相同,最高位為符號位(值為0),其它位是數(shù)值位,存放整數(shù)的二進制形式。負(fù)整數(shù):三種編碼表示方式不相同。 (1)原碼 負(fù)數(shù)的原碼最高位為符號位,值為1,其它位是數(shù)值位,存放負(fù)整數(shù)絕對

9、值的二進制形式。 如: -55原=10110111,-1原=10000001 在原碼表示中,0有兩種表示形式,即:+0原=00000000,-0原=10000000 (2)反碼負(fù)數(shù)的反碼最高位為符號位,值為1,數(shù)值位是原碼的數(shù)值位按位求反。 如: -55反=11001000,-1反=11111110 在反碼表示中,0也有兩種表示形式,即: +0反=00000000,-0反=11111111(3)補碼 負(fù)數(shù)的補碼最高位為符號位,值為1,數(shù)值位是原碼的數(shù)值位按位求反再加1,即反碼加1。 如:-55補=11001001,-1補=11111111 在補碼表示中,0只有一種表示形式,即: +0補=-0補

10、=00000000 計算機中將減法轉(zhuǎn)換為加法的基礎(chǔ)減去一個數(shù),等于加上這個負(fù)數(shù)的補碼。 高位丟失 負(fù)數(shù)的補碼 10000101 還原后的原碼:-52. 定點數(shù)和浮點數(shù)定點數(shù)小數(shù)點的位置固定的數(shù),小數(shù)點的位置是約定默認(rèn)的。 固定在機器數(shù)的最低位之后(稱為定點純整數(shù)),用于表示整數(shù)固定在符號位之后,數(shù)值位之前(稱為定點純小數(shù)),用于表示小于1的純小數(shù)。 定點數(shù)表示法簡單直觀,但是表示的數(shù)值范圍受表示數(shù)據(jù)的字長限制,運算時容易產(chǎn)生溢出。 符號位隱含小數(shù)點位置定點整數(shù)表示 隱含小數(shù)點位置符號位定點小數(shù)表示浮點數(shù)小數(shù)點的位置可以變動的數(shù),類似十進制中的科學(xué)計數(shù)法。 在計算機中通常把浮點數(shù)分成階碼和尾數(shù)兩

11、部分來表示。 例:1100101.011=0.11001010112111,其中階碼是(111)2,尾數(shù)是(0.1100101011) 2。 -0.0000101101=-0.1011012-100,其中階碼是(-100)2,尾數(shù)是(-0.101101) 2。一般浮點數(shù)在機器中的格式為: 指數(shù)的符號位冪次尾數(shù)的符號位規(guī)格化之后小數(shù)的值N = 尾數(shù)基數(shù)階碼浮點數(shù) N = 尾數(shù)基數(shù)階碼浮點數(shù)是定點整數(shù)和定點小數(shù)的混合。階碼:是一個帶符號的整數(shù)(定點整數(shù))尾數(shù):用純小數(shù)表示數(shù)的有效部分(定點小數(shù))階碼的位數(shù)決定數(shù)的范圍,尾數(shù)的位數(shù)決定數(shù)的精度。例如:二進制數(shù) -1001110110.101011 可

12、以寫成: -0.1001110110101011 21010 若規(guī)定階碼8位,尾數(shù)24位表示,則這個數(shù)在機器中的格式為: 0 0001010 1 100111011010101100000003. 非數(shù)值表示(文字和符號)(1)ASCII碼 ASCII碼是美國國家標(biāo)準(zhǔn)信息交換碼 (American National Standard Code for Information Interchange )的簡稱,是目前國際上使用最廣泛的字符編碼。 (2)二-十進制編碼(BCD碼)(3)漢字編碼 輸入碼 交換碼 機內(nèi)碼 字形碼表1.2 ASCII字符編碼表 十進制編碼值為031、127的是控制字符,

13、不可打印,32是空格,其余94個是普通字符,有具體字形,可打印。09、AZ、az 的編碼是順序排列的二進制數(shù)的兩種基本運算:算術(shù)運算包括:加、減、乘、除。邏輯運算包括:與、或、非。算術(shù)運算規(guī)則:“逢二進一,借一當(dāng)二”加:0+0=0 0+1=1 1+0=1 1+1=10(向高位進一)減:0-0=0 1-0=1 1-1=0 0-1=1(向高位借一)乘:00=0 01=0 10=0 11=1除:01=0 11=1例: 111+1010=? 10.11010=?1.1.3 計算機運算基礎(chǔ)1000111001 邏輯運算邏輯量間的運算稱為邏輯運算,結(jié)果仍為邏輯量基本邏輯運算包括與(運算符)、或(運算符)、

14、非(運算符) 、異或(運算符)邏輯與運算規(guī)則:00=0 01=0 10=0 11=1邏輯或運算規(guī)則:00=0 01=1 10=1 11=1邏輯非運算規(guī)則:0=1 1=0 邏輯異或運算規(guī)則: 00=0 01=1 10=1 11=0二進制數(shù)的邏輯運算11011101=001000101101110110110100110111011011010010010100111111011101110110110100011010011.1.4 程序設(shè)計語言和程序執(zhí)行機器語言機器語言:一系列的機器指令。與硬件密切相關(guān),計算機能直接識別、執(zhí)行,沒有通用性。例:0110000010000001 (加法)0110

15、000010000001 (加法)0100000001000010 (減法)0100000001000010 (減法)匯編語言匯編語言:機器語言符號化,面向機器的程序設(shè)計語言,通用性差。必須由匯編程序?qū)⑵浞g成機器語言程序后才可執(zhí)行。MOV AX, 300HADD BX, AXMOV 2100H, BX HLT匯編程序連接程序匯編連接匯編語言源程序機器語言目標(biāo)程序可執(zhí)行程序(.ASM)(.OBJ)(.EXE)運行運行結(jié)果高級語言高級語言:面向問題的程序設(shè)計語言。通常源程序的每一條語句對應(yīng)一組機器指令,它必須經(jīng)過翻譯程序,翻譯成機器語言指令形式才能執(zhí)行。void main( ) int a, b

16、, c; a=300; b=18; c=a+b; printf(“ a+b= %dn”, c);編譯程序連接程序編譯連接高級語言源程序機器語言目標(biāo)程序可執(zhí)行程序運行運行結(jié)果解釋程序高級語言源程序解釋執(zhí)行運行結(jié)果1.2 C語言程序基本知識1.2.1 簡單C語言程序示例 【例1-1】第一個程序/* 例1.1源程序,屏幕上輸出字符串 */#include void main()printf(Welcome to CnA simple programn);注釋編譯預(yù)處理主函數(shù)語句輸出:Welcome to CA simple program【例1-2】 一個簡單的加法計算程序,求兩個整數(shù)的和。#inc

17、lude void main() int x,y,sum; /定義變量 printf(Input data:n ); /顯示提示信息 scanf(%d, &x); /輸入一個整數(shù) printf(Input data:n ); /顯示提示信息 scanf(%d, &y); /輸入一個整數(shù) sum=x+y; /計算和 printf(sum=%dn, sum); /輸出和 程序運行:Input data:34Input data:53sum=87 注釋【例1-3】 輸入三個數(shù)實數(shù),輸出其中的最大數(shù)。#includedouble max(double x, double y)/ 定義max函數(shù) dou

18、ble m;/ 定義變量m if (xy) m=x;/ 比較兩數(shù)x和y,較大者賦值給m else m=y; return m;/ 返回m的值void main() double a,b,c,t,maxdata; printf(Please input a b c:n ); scanf(%lf%lf%lf,&a,&b,&c); t=max(a,b); / 調(diào)用函數(shù)max,求a、b兩較大者 maxdata=max(t,c); / 調(diào)用函數(shù)max,求t、c兩較大者 printf(“max=%fn,maxdata); / 輸出maxdata 程序運行:Please input a b c:7 9 -4max=9.000000函數(shù)1.2.2 C語言程序的結(jié)構(gòu)函數(shù) 有且只能有一個主函數(shù) main()編譯預(yù)處理“#”開頭全局變量注釋 /* 注釋內(nèi)容 */ /

溫馨提示

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

最新文檔

評論

0/150

提交評論