版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、第1章 程序設計基礎大學計算機基礎2主要內(nèi)容1.1 程序設計語言的發(fā)展1.2 算法與程序設計1.3 C語言簡介1.4 C語言的結(jié)構(gòu)與執(zhí)行1.5 C語言的運行與調(diào)試大學計算機基礎3教學目的和基本要求:要求學生了解程序語言及算法的概念,C語言特點,C程序開發(fā)過程,簡單C程序結(jié)構(gòu)。 教學重點:算法的概念、C程序開發(fā)過程、簡單C程序結(jié)構(gòu)。 大學計算機基礎41.1 程序設計語言的發(fā)展機器語言:計算機可以直接識別、執(zhí)行的二進制代碼。其優(yōu)點是執(zhí)行速度快;但難寫、難讀、難理解和難修改。 匯編語言:使用助記符來代替機器語言中復雜、繁瑣的指令的語言。如Z-80機中加法指令為ADD。其特點是過分依賴于機器碼,即僅適
2、合某類相同或相似的計算機,因此不易移植。大學計算機基礎51.1 程序設計語言的發(fā)展高級語言:獨立于計算機硬件結(jié)構(gòu),讓用戶使用面向問題的形式,更加方便編程人員的語言。高級語言分為如下兩類 (1) 編譯型:“先編譯后執(zhí)行”,過程為:源代碼-目標代碼-機器代碼,其執(zhí)行與源程序相互獨立。比如PASCAL,C等。 (2) 解釋型:“邊解釋邊運行”,程序執(zhí)行離不開源代碼的支持,不利于源程序的保護和保密。比如BASIC,F(xiàn)oxBASE+等。大學計算機基礎61.1 程序設計語言的發(fā)展面向結(jié)構(gòu)(面向過程)的設計語言有: BASIC,F(xiàn)ORTRAN,COBOL:面向事務處理的高級語言,適合于編寫管理信息系統(tǒng)方面的
3、程序有: PASCAL,C語言,PROLOG,F(xiàn)oxBASE+等面向?qū)ο蠛涂梢暬Z言: C+,Java,Visual BASIC,Visual C+,Visual Foxpro,Visual J+,Delphi,PowerBuilder等。網(wǎng)頁(Web)/網(wǎng)絡(Network)編程語言: HTML,DHTML,JavaScript/Jscript,VBScript,JavaApplet,Java等。 大學計算機基礎71.2 算法與程序設計1算法及其表示 2 結(jié)構(gòu)化程序設計與面向?qū)ο蟪绦蛟O計大學計算機基礎81.2.1、算法及其表示 算法是計算機科學中的重要概念之一,它指明了問題的計算過程,是對給
4、定問題解題方案的準確而完整的描述。 計算機沒有軟件的支持將無法工作,軟件是計算機的靈魂,而軟件的核心是算法。用計算機解決問題的方法和步驟就是算法,計算機執(zhí)行算法,用計算機解決各種數(shù)據(jù)處理問題的主要方式就是尋找和設計各種算法,將算法變成代碼的過程即程序設計。 算法及其表示1大學計算機基礎91.2.1、算法及其表示 算法具備如下5個特征: 有窮性 確定性 輸入 輸出 可行性算法特征2大學計算機基礎101.2.1、算法及其表示 算法可以用多種方法描述,常見的表示方法有:自然語言描述法、偽代碼表示法、傳統(tǒng)流程圖表示法、N-S流程圖表示法等?!纠?-1】已經(jīng)杯A中盛放的是油,杯B中盛放的是水,另有一個空
5、杯C,三個杯容積相同,請用自然語言表示算法?!窘獯稹?第1步:將A中的油全部倒入C中,使A成為空杯; 第2步:將B中的水全部倒入A中,使B成為空杯; 第3步:將C中原在A中的油,倒入B中,完成A與B中液體 的交換。 算法的表示3大學計算機基礎111.2.1、算法及其表示符號符號名稱含義起止框開始和結(jié)束 輸入/輸出框輸入/輸出操作 處理框 內(nèi)容進行處理 判斷框條件進行判斷 流程線流程的方向 連接點 使流程圖清晰 (1)使用傳統(tǒng)流程圖表示算法 大學計算機基礎12真給a 和b賦值a、?、等;轉(zhuǎn)義字符:n、t、v、b、r、f、0、”、ddd、xhh等。大學計算機基礎432.2.2 標識符的分類標識符可
6、分如下幾類: 關鍵字亦稱保留字,關鍵字在C語言中有特定的含義,用戶在使用自定義的常量名、變量名、函數(shù)名、類型名、文件名時,要絕對避免使用關鍵字,C語言中的保留字32個,保留字用小寫字母表示,大寫的可以由用戶自由使用,盡量不用,以免與系統(tǒng)保留字混淆. 關鍵字1大學計算機基礎442.2 標識符描述數(shù)據(jù)類型定義的有:typedef、void;描述存儲類型的有:auto、extern、register、static、volatile;描述數(shù)據(jù)類型的有:char、int、float、double、long、short、signed、struct、union、unsigned、const、enum;描述語
7、句:break、case、continue、default、if、else、switch、for、do、while、return、sizeof、goto。大學計算機基礎452.2 標識符 預定義標識符包括C語言中提供的一些庫函數(shù)的名字(如printf,scanf,getchar,putchar等)和編譯預處理命令(define include等),建議用戶在自定義常、變量時,也要避免與這些標識符沖突。 用戶在程序設計過程中,會經(jīng)常用到常量、變量、自定義函數(shù)、文件名、類型名等 ,這些要用戶定義。預定義標識符2用戶定義標識符3大學計算機基礎462.2 標識符下面給出一些合法的標識符: sum,av
8、erage,_total,temp,a_1,char1,Max,min下面這些是不合法的標識符: 1a,$total,a,a.next 在使用標識符的時候盡量采取“見名識義、常用從簡”的原則,保證變量具有可讀性,又不要讓變量名過長。 大學計算機基礎47常量 程序執(zhí)行過程中,其值不能被改變的量稱為常量,C語言中出現(xiàn)的常量有如下類型:整型常量、實型常量、字符常量、字符串常量等。2.3 常量大學計算機基礎482.3 常量1整型常量 2實型常量 3字符常量 4字符串常量 5符號常量與預處理簡介 大學計算機基礎492.3.1 整型常量2.3.1 整型常量整型常量在C語言中又分: 十進制整數(shù) 八進制整數(shù)
9、十六進制整數(shù) 十進制整數(shù)以人們通常習慣的十進制整數(shù)形式給出. 八進制整數(shù)必須以0開頭,其數(shù)碼取值范圍為07. 以下是合法的八進制數(shù): 012(對應十進制整數(shù)10),-012(對應十進制數(shù)-10),0177777(對應十進制數(shù)65535),0177777(對應十進制數(shù)-65535)。十進制整數(shù)1八進制整數(shù)2大學計算機基礎502.3 常量以下是不合法的八進制整數(shù): 255(無前綴0),03A2(包含非法數(shù)碼)【例2-1】輸出八進制數(shù)。#include/*在visual C+6.0 下調(diào)試通過*/main() int x,y;x=012;y=-0177777;printf(x=%d,y=%dn,x,
10、y);大學計算機基礎512.3 常量 十六進制整數(shù)的前綴為0 x或0X,其數(shù)碼取值范圍為09,AF,af。 以下是合法的十六進制整數(shù): 0X12(十進制數(shù)18),-0 x12(十進制數(shù)-18),0XA1,0Xffff(十進制數(shù)為65535)以下各數(shù)不是合法的十六進制整數(shù): 6B(無前綴0 x),0 x5H(含有非法數(shù)碼H)在整型數(shù)據(jù)的后邊加上后綴“L”或“l(fā)”(小寫字母l)來表示的該數(shù)據(jù)是一個長整型的數(shù)據(jù)。例如:589L十進制012L八進制 0X17L十六進制 十六進制整數(shù)3大學計算機基礎522.3.2 實型常量 實型常量也稱為浮點型。有兩種形式:十進制小數(shù)形式和指數(shù)形式。十進制小數(shù)形式:由數(shù)
11、碼09和小數(shù)點組成。如下均為合法的實數(shù):0.12,1.23,-2.5145,125.0指數(shù)形式:,由十進制數(shù),加上階碼標志“e”或“E”及階碼(只能為整數(shù),可以帶符號)組成。 如:指數(shù)值1.2E6等于1.21065.21E-2等于5.2110-20.91E8等于0.91108-1.8E-9等于-1.810-9大學計算機基礎532.3.3 字符常量 字符常量是用西文半角單引號括起來的一個字符。在C語言中,字符常量有以下特點:(1) 字符常量只能用單引號“”括起來,不能用雙引號或括號。(2) 字符常量只能是單個字符,不能是字符串。(3) 字符可以是字符集中任意字符,但數(shù)字被定義為字符型之后就不能參
12、與數(shù)值運算。 大學計算機基礎542.3.3 字符常量 除了以上形式的字符常量外,C語言還允許使用一種特殊形式的字符常量,即轉(zhuǎn)義字符,它以一個反斜線“”開頭,后跟一個或幾個字符的字符序列 。轉(zhuǎn)義字符 轉(zhuǎn)義字符的意義 ASCII代碼 n 換行 10t水平制表 9b退格 8r回車 13f換頁 12反斜線符 92單引號符 39”雙引號符 34ddd13位八進制數(shù)xhh12位十六進制數(shù)大學計算機基礎552.3.3 字符常量【例2-2】輸出轉(zhuǎn)義字符?!境绦蚍治雠c解答】#include /*visual C+ 6.0 */main()printf(abctderftgn);printf(1234567812
13、345678n);/*參照物*/printf (htibbjk);printf(1234567812345678n);/*參照物*/輸出結(jié)果為:fgde1234567812345678hjk1234567812345678Press any key to continue大學計算機基礎562.3.4 字符串常量 字符串常量是由一對雙引號括起的字符序列。例如,“211 Project”,“Chinese”,“college”等都是合法的字符串常量。 字符串常量和字符常量的數(shù)據(jù)結(jié)構(gòu)不同,其主要區(qū)別如下:(1) 字符常量由單引號括起來,字符串常量由雙引號 括起來;(2) 字符常量只能是單個字符,字符
14、串常量含一個或多個字符。 大學計算機基礎572.3.4 字符串常量C在內(nèi)存中占一個字節(jié),表示為:“C”在內(nèi)存中占兩個字節(jié),表示為: 可以把一個字符常量賦予一個字符變量,但是不能把一個字符串常量賦予一個字符量。 字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串半角字符數(shù)加1,因為在增加的一個字節(jié)中存放字符“0”(ASCII碼值為0),這是字符串結(jié)束的標志。 CC0大學計算機基礎582.3.5 符號常量與預處理 在C語言中,可以用一個標識符來表示一個常量,稱為符號常量。符號常量在使用之前必須先定義,其一般形式為:#define 標識符 常量 其中,#include也是一條預處理命令(預處理命令都以“#”開頭),
15、稱為宏定義命令,其功能是把該標識符定義為常量。一經(jīng)定義,以后程序中所有的標識符都代表該常量,如果要修改這個常量,可以實現(xiàn)整個程序中“一改全改”。 經(jīng)常將符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區(qū)別。 大學計算機基礎592.4 變量1整型變量 2實型變量 3字符變量 大學計算機基礎60 變量是指在程序執(zhí)行過程中可以被改變和賦值的量。程序中每一個變量有一個符合C語言標識符規(guī)范的名稱,在內(nèi)存中占據(jù)一定的存儲單元。變量的使用方法是先聲明(定義變量),后使用。 變量名與變量值是有區(qū)別的,變量的“名”是指變量所代表的存儲單元的標志,而“值”是指存儲單元的內(nèi)容.例: 2.4 變量A _變量 變
16、量值3大學計算機基礎612.4.1 整型變量 如: short int x; /*變量的聲明,定義整型變量*/ x=10; /*變量賦值*/ 0000000000001010 變量x在內(nèi)存中的地址是0 x0013ff70 數(shù)據(jù)在內(nèi)存中的二進制存儲示意圖 (1) 基本型:類型說明符為int,在內(nèi)存中占4個字節(jié)。(2) 短整型:類型說明符為short int或short,占2個字節(jié)。(3) 長整型:類型說明符為long int或long,4個字節(jié)。(4) 無符號型:類型說明符為unsigned,。 無符號型又可與上述三種類型匹配而構(gòu)成,不能表示負數(shù): 整型數(shù)據(jù)在內(nèi)存中的存儲形式 1整型變量的分類2
17、大學計算機基礎622.4.1 整型變量【例2-3】測試當前C編譯環(huán)境下數(shù)據(jù)類型占用的字節(jié)數(shù)?!境绦蚍治雠c解答】#include main()printf(“int占%d字節(jié)。n”,sizeof(int);printf(“l(fā)ong int占%d字節(jié)。n”,sizeof(long int);printf(“short int占%d字節(jié)。n”,sizeof(short int);printf(“unsigned int占%d字節(jié)。n”,sizeof(unsigned int);printf(“unsigned long int占%d字節(jié)。n”,sizeof(unsigned long int);pr
18、intf(“unsigned short int占%d字節(jié)。n”,sizeof(unsigned short int);輸出結(jié)果為:int占4字節(jié)。long int占4字節(jié)。short int占2字節(jié)。unsigned int占4字節(jié)。unsigned long int占4字節(jié)。unsigned short int占2字節(jié)。大學計算機基礎632.4.1 整型變量變量定義的一般形式為: 類型說明符 變量名標識符1,變量名標識符2,;例如:int x,y,z; /*x,y,z為整型變量*/long int n,m;/*n,m為長整型變量,long int 可簡寫為long */unsigned i
19、nt a,b;/*a,b為無符號整型變量,unsigned int 可簡寫為unsigned*/注意:(1)允許在一次定義相同 類型的多個變量 (2)最后一個變量名之 后必須以分號結(jié)尾。 整型變量的定義3大學計算機基礎642.4.2 實型變量 實型數(shù)據(jù)一般占用4個字節(jié)(32位)的內(nèi)存空間,按指數(shù)形式存儲。例如,實數(shù)12.345在內(nèi)存中的存儲形式如圖2-4所示: 圖2-4 實型數(shù)據(jù)的表示 +/-,用0,1表示(數(shù)符) 0.12345 +/-,用0,1表示(階符) 2實型數(shù)據(jù)在內(nèi)存中的存放形式1大學計算機基礎652.4.2 實型變量 實型變量分為單精度(float型),長單精度型(long flo
20、at),雙精度(double型)和長雙精度(long double型)4類,其中float型占用4個字節(jié),其它數(shù)據(jù)類型均占用8個字節(jié)。 由于實型變量由有限的存儲單元組成,因此能提供的數(shù)字是有限的,而在有效位以外的數(shù)字將被舍去。這樣可能會產(chǎn)生一些誤差,例如,a+20的顯然就應該比a大。請分析下面的程序。實型變量數(shù)據(jù)的分類 2實型數(shù)據(jù)的舍入誤差3大學計算機基礎662.4.2 實型變量【例2-4】實型數(shù)據(jù)的舍入誤差。【程序分析與解答】#include main()float a,b;a=123456.789e5; /*12345678900*/b=a+20;printf(%fn,b);輸出結(jié)果為:1
21、2345678868.000000大學計算機基礎672.4.3 字符變量 字符變量用來存儲字符常量,其說明符是char. 字符變量的賦值有如下方式:(1) 若ch_a是一個字符變量,ch=ch_a;(2) 將字符常量a賦值給ch,ch=a;(3) 將某個字符的ASCII碼賦給ch,ch=65,則ch的內(nèi) 容為A,但由于整型變量在存儲上均超過1個字節(jié),如果將一個整型變量賦值給一個字符變量時,只會將其最低8個位賦值給ch。 而ch=A則是錯誤的. 如下字符變量的輸出形式:printf(%c,ch);(2) printf(%d,ch); (3) putchar(ch); 大學計算機基礎682.5 數(shù)
22、據(jù)間的混合運算1各數(shù)據(jù)類型轉(zhuǎn)換規(guī)則 2自動類型轉(zhuǎn)換與強制轉(zhuǎn)換 大學計算機基礎69不同數(shù)據(jù)類型轉(zhuǎn)換規(guī)則 整型、單精度型、雙精度型數(shù)據(jù)可以混合運算。字符型數(shù)據(jù)可以與整型通用,因此,整型、實型(包括單、雙精度)、字符型數(shù)據(jù)間可以混合運算。在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型, 然后進行運算。轉(zhuǎn)換的規(guī)則按圖所示 2.5.1 各數(shù)據(jù)類型轉(zhuǎn)換規(guī)則double float long unsigned int char, short大學計算機基礎702.5.2 自動類型轉(zhuǎn)換與強制轉(zhuǎn)換 變量的數(shù)據(jù)類型的轉(zhuǎn)換方法有兩種,一種是自動轉(zhuǎn)換,一種是強制轉(zhuǎn)換。 自動轉(zhuǎn)換遵循以下規(guī)則:若參與運算量的類型不同,則先
23、轉(zhuǎn)換成同一類型,然后進行運算。轉(zhuǎn)換按照數(shù)據(jù)長度增加的方向進行,以保證運算精度不降低。 所有的浮點運算都是以雙精度進行的。char型和short型運算時,必須先轉(zhuǎn)換成int型。賦值運算中,賦值號兩邊的數(shù)據(jù)類型不同時,賦值號右邊量的類型將轉(zhuǎn)換為左邊量的類型。 自動類型轉(zhuǎn)換1大學計算機基礎712.5 數(shù)據(jù)間的混合運算其一般形式為: (類型說明符)(表達式)例如: (float) a /*把a轉(zhuǎn)換為實型*/ (int)(x+y) /*把x+y的結(jié)果轉(zhuǎn)換為整型*/ 無論是強制轉(zhuǎn)換或是自動轉(zhuǎn)換,都只是為了本次運算的需要而對變量的數(shù)據(jù)長度進行的臨時性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時對該變量定義的類型。 強制轉(zhuǎn)換 2
24、大學計算機基礎722.5.2 自動類型轉(zhuǎn)換與強制轉(zhuǎn)換【例2-5】數(shù)據(jù)類型的強制轉(zhuǎn)換。【程序分析與解答】#include main()float f=5.75;printf(int)f=%d,f=%fn,(int)f,f);輸出結(jié)果為:(int)f=5,f=5.750000大學計算機基礎73變量預先設置初值可以有如下幾種情況: (1)對各變量分別賦初值 int a=3; float pi=3.14159; char cha; (2)定義變量時對部分變量賦值 int a,b,c=5; (3)對幾個變量賦相同的初值 如:若對幾個變量賦予初值3,應寫成 int a=3,b=3,c3; 2.6 變量賦初
25、值大學計算機基礎742.6 變量賦初值強制類型轉(zhuǎn)換運算符 () 自增、自減運算符如: +i,-i (在變量i使用之前,先使i的值加(減)1) i+,i- (在變量i使用之后,使i的值加(減)1)使用自增、自減運算符需要注意的若干問題:+或-運算符,只能用于變量,而不能用于常量或表達式。+和-的結(jié)合方向是“自右至左”。大學計算機基礎752.7 運算符和表達式1C語言運算符簡介與表達式的類型 2表達式的求值規(guī)則 3算術(shù)運算符和算術(shù)表達式 4賦值運算符和賦值表達式 5逗號運算符和逗號表達式 6關系運算符和關系表達式 7邏輯運算符和邏輯表達式 大學計算機基礎76C的運算符有以下幾類:(1) 算術(shù)運算符
26、:+ - * / %(2) 關系運算符: = = !=(3) 邏輯運算符:! & |(4) 位運算符: | &(5) 賦值運算符:= (6) 條件運算符: ? :(7) 逗號運算符:,C語言表達式的類型 賦值表達式; 算術(shù)表達式; 關系表達式; 邏輯表達式; 條件表達式; 逗號表達式2.7.1 C語言運算符與表達式的類型大學計算機基礎772.7.2 表達式的求值規(guī)則 這些運算符在C語言中規(guī)定了優(yōu)先級和結(jié)合性,在求值時先按運算符的優(yōu)先級別高低次序執(zhí)行,如果某個運算對象左右兩側(cè)的運算符的優(yōu)先級別相同,則按規(guī)定的“結(jié)合方向”處理,其中算術(shù)運算符的結(jié)合方向為“自左至右”,而對于賦值運算符則采用“自右至
27、左”的結(jié)合方向。 有關運算符的優(yōu)先級別和結(jié)合性參看附錄。 大學計算機基礎782.7.3 算術(shù)運算符和算術(shù)表達式(1) + (加法運算符,或正值運算符。如3+5、+3)(2) - (減法運算符,或負值運算符。如5-2、-3)(3) * (乘法運算符。如3*5)(4) / (除法運算符。如5/3,5.0/3)(5) % (模運算符,又稱求余運算符,%兩側(cè)均 應為整型數(shù)據(jù),如7%4的值為3)。 基本的算術(shù)運算符1大學計算機基礎792.7.3 算術(shù)運算符和算術(shù)表達式(8) 指針運算符: * &(9) 求字節(jié)數(shù)運算符: sizeof (10) 強制類型轉(zhuǎn)換運算符: (類型)(11) 分量運算符:. -(
28、12) 下標運算符:(13) 其他:如函數(shù)調(diào)用運算符()大學計算機基礎802.7.3 算術(shù)運算符和算術(shù)表達式+i,-i (在變量i使用之前,先使i的值加(減)1)i+,i- (在變量i使用之后,使i的值加(減)1)使用自增、自減運算符需要注意的若干問題:(1) +或-運算符,只能用于變量,而不能用于常量或表達式。(2) +和-的結(jié)合方向是“自右至左”。 算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性2強制類型轉(zhuǎn)換運算符()3自增、自減運算符 4大學計算機基礎812.7.4 賦值運算符和賦值表達式賦值符號“=”就是賦值運算符 使用“=”連接的式子稱為賦值表達式,其一般形式為: 變量=常量、變量或表達式賦值運
29、算符具有右結(jié)合性。如:a=b=c=3賦值運算符和賦值表達式1大學計算機基礎822.7.4 賦值運算符和賦值表達式 (1) 將實型數(shù)據(jù)(包括單、雙精度)賦給整型變量時,舍棄實數(shù)的小數(shù)部分。 (2) 將整型數(shù)據(jù)賦給單、雙精度變量時,數(shù)值不變,但以浮點數(shù)形式存儲到變量中。 (3) 將一個double型數(shù)據(jù)賦給float變量時,截取其前面7位有效數(shù)字, (4) 將一個float型數(shù)據(jù)賦給double變量時,數(shù)值不變,有效位數(shù)擴展到16位。 (5) 字符型數(shù)據(jù)賦給整型變量時,將字符數(shù)據(jù)(8位)放到整型變量低8位中。 類型轉(zhuǎn)換 2大學計算機基礎832.7 運算符和表達式 在賦值符“=”之前加上其他運算符可
30、以構(gòu)成復合的運算符。如,+=,- =,*=,/=,%=,=,&=,=,|=。如:a+=2 /* 等價于 a=a+2 */x*=y+8 /* 等價于 x=x*(y+8) */ 由賦值運算符將一個變量和一個表達式連接起來的式子稱為“賦值表達式”。 它的一般形式為: 變量 賦值運算符 表達式 復合的賦值運算符3賦值表達式4大學計算機基礎842.7.5 逗號運算符和逗號表達式 逗號運算符是一種特殊的運算,用以連接兩個表達式,又稱為“順序求值運算符”。逗號表達式的一般形式為: 表達式1,表達式2,表達式n 例如 x=2*5,x*3,此時整個逗號表達式的值為30。注:賦值運算符的優(yōu)先級別高于逗號運算符 大
31、學計算機基礎852.7.6 關系運算符和關系表達式1.關系運算符在語言中有以下關系運算符:(1) 小于(2) 大于(4) = 大于或等于(5) = 等于(6) != 不等于2.關系表達式關系表達式的一般形式為:表達式1 關系運算符 表達式2大學計算機基礎862.7.7 邏輯運算符和邏輯表達式邏輯運算符及其優(yōu)先級語言中提供了三種邏輯運算符:(1) & 與運算(2) | 或運算(3) ! 非運算高大學計算機基礎872.7 運算符和表達式【例2-6】調(diào)試以下程序,理解邏輯表達式。#include main()char c=k;int i=1,j=2,k=3;float x=3e+5,y=0.85;p
32、rintf(%d,%dn,!x*!y,!x);printf(%d,%dn,x|i&j-3,ij&xy)?x:y (2) 條件運算符“?”和“:”是一對運算符,不能分開單獨使用。(3) 條件運算符的結(jié)合性是自右至左。例如:ab?a:cd?c:d應理解為ab?a:(cd?c:d)大學計算機基礎892.7 運算符和表達式【例2-7】調(diào)試以下程序,理解條件表達式。#include main() int x,y,max; printf(g請輸入兩個整數(shù),x,y: ); scanf(%d,%d,&x,&y); printf(最大值=%dn,xy?x:y);輸出結(jié)果為:請輸入兩個整數(shù),x,y: 3,5最大值
33、=5大學計算機基礎902.7.9 位運算符和位運算位運算符和位運算分別是:(1) & 按位與運算符(2) | 按位或運算符(3) 按位異或運算符(4) 取反運算符(5) 右移運算符大學計算機基礎912.7 運算符和表達式 若變量A的值為0 xAA(10101010),B的值為0 x55(01010101),則:(1) A & B = 0 x00(00000000b) 按位與(2) A | B = 0 xFF(11111111b) 按位或(3) A B = 0 xFF(11111111b) 按位異或(4) A = 0 x55(01010101b) 取反(5) A1 = 0 x2A(0010101
34、0b) 右移以上運算符在第10章將會進行詳細講解。第3章 順序結(jié)構(gòu)程序設計與編譯預處理大學計算機基礎93主要內(nèi)容 3.2 賦值語句 3.3 輸入與輸出 3.4 常用函數(shù)舉例 3.5 編譯預處理 3.1 C語句概述 3.6 順序結(jié)構(gòu)程序設計舉例 大學計算機基礎94 C語言的語句用來向計算機系統(tǒng)發(fā)出指令,單獨的一條語句或者是復合語句完成特定的操作,這些操作的不同組合,用來實現(xiàn)一系列數(shù)據(jù)處理功能。 C語言程序是一個由main()體內(nèi)的若干變量的聲明、賦值等操作以及若干函數(shù)組成的,沒有編譯過的程序稱為源程序。源程序的某些行稱為語句,每個語句的最后有一個半角分號“;”,用來表示語句的結(jié)束。用“;”隔開的
35、語句,可以寫在同一行,也可以寫成幾行,但這些語句必須包含在函數(shù)體中。3.1 C語句概述大學計算機基礎953.1 C語句概述C語言的語句 C語言的語句可以分為5類:表達式語句、函數(shù)調(diào)用語句、控制語句、復合語句和空語句。1.表達式語句 例如:m=2; score=math+English; i+; x=10,y=12; 2.函數(shù)調(diào)用語句 其一般形式為: 函數(shù)名(實際參數(shù)表);大學計算機基礎963.1 C語句概述3. 控制語句(1) 條件判斷語句:if().else. /*分支語句*/switch(表達式/變量). /*多分支語句*/(2) 循環(huán)語句:do.while(條件) /*“先執(zhí)行,后判斷”
36、的“當”型循環(huán)*/while(條件). /*“先判斷,后執(zhí)行”的“當”型循環(huán)*/for(條件). /*for循環(huán),循環(huán)次數(shù)相對確定下使用*/(3) 流程轉(zhuǎn)向語句goto /*強制程序跳轉(zhuǎn),不推薦使用*/break /*中止執(zhí)行switch或者循環(huán)*/continue /*結(jié)束循環(huán)體中的其中一趟*/return /*從函數(shù)中返回*/大學計算機基礎973.1 C語句概述4. 復合語句 把多個語句用語句1;語句2;.語句n這種形式構(gòu)成一個比較復雜的語句稱為復合語句,又稱為語句塊。如兩個變量之間數(shù)據(jù)的交換。此時,應把復合語句看成一個單條語句。例如:if(ab)temp=a;a=b;b=temp; 大學
37、計算機基礎983.1 C語句概述5. 空語句 只有“;”號的語句稱為空語句 .如:for(i=0;i32768;i+); /*空語句,注意它的意義*/大學計算機基礎99賦值語句的構(gòu)成形式賦值語句是由賦值表達式再加上“;”構(gòu)成,其一般形式為: 變量=表達式; 例如:sum=0;x=y+z;a=b=c=10;連續(xù)賦值與賦值運算符的右結(jié)合性 而賦值語句允許給多個變量連續(xù)賦相同的值,例如:int a,b,c; /*必須在變量聲明處定義a,b,c三個變量*/a=b=c=3; /*連續(xù)賦值*/3.2 賦值語句大學計算機基礎100 輸入與輸出是以計算機為主體而言的。信息從計算機的外部輸入設備(鍵盤、鼠標、移
38、動存儲設備等)向計算機輸入數(shù)據(jù)稱為輸入,計算機向外部設備(顯示器、打印機、文件設備等)輸出數(shù)據(jù)稱為輸出。 在C語言中,沒有輸入/輸出語句,所有數(shù)據(jù)的輸入和輸出功能是通過一組庫函數(shù)來實現(xiàn)的,在調(diào)用這些輸入或輸出庫函數(shù)的時候,需要使用預編譯命令#include將有關“頭文件”包含到源文件中,這些“頭文件”的文件名格式為*.h。3.3 輸入與輸出大學計算機基礎1013.4 輸入與輸出 使用標準輸入/輸出庫函數(shù)時,要在main()函數(shù)所在源文件中包含“stdio.h”文件,因此,源文件的開頭經(jīng)常有以下預編譯命令:#include 或#include stdio.h“ 本小節(jié)主要介紹單個字符的輸入和輸出
39、,格式輸入和輸出,并簡單介紹一下文件操作中的輸入和輸出,這些函數(shù)分別是getchar( )、putchar( )、printf( )和fscanf( )、fprintf( )。大學計算機基礎1023.4 輸入與輸出1字符數(shù)據(jù)的輸入與輸出 2格式輸入與輸出 3文件操作中的輸入與輸出簡介 大學計算機基礎1033.4.1 字符數(shù)據(jù)的輸入與輸出函數(shù)的一般調(diào)用形式為:putchar(ch); ch必須是一個整型變量或一個字符型變量,ch還可以是轉(zhuǎn)義字符常量。例如:putchar(A); /*輸出大寫字母A*/putchar(97); /*輸出小寫字母a*/putchar(ch); /*輸出字符變量ch的
40、值*/putchar(101); /*輸出大寫字母A */putchar(n); /*換行,(執(zhí)行控制功能,*/單個字符輸出函數(shù)putchar1大學計算機基礎1043.4.1 字符數(shù)據(jù)的輸入與輸出【程序分析與解答】#include main()int i_ch; /*定義整型變量i_ch,這個變量用i代表整型,*/i_ch=65; /*65是大寫字母A的ASCII碼*/putchar(i_ch);putchar(n);i_ch=97; /*97是小寫字母a的ASCII碼*/putchar(i_ch);putchar(n);大學計算機基礎1053.4.1 字符數(shù)據(jù)的輸入與輸出一般調(diào)用形式為:ch
41、ar ch;ch=getchar();【程序分析與解答】#include main()char ch; printf(在此輸入任意一個字符并回車:n);ch=getchar( ); putchar(ch); /*回顯剛才的輸入*/putchar(n); 利用getchar( ),手動控制程序暫停執(zhí)行。 單個字符輸入函數(shù)getchar( ) 2大學計算機基礎1063.4.2 格式輸入與輸出 printf和scanf函數(shù)可以一次輸出或者輸入若干個任意類型數(shù)據(jù), 有效解決輸入復雜數(shù)據(jù)的問題,使用時,可以不包含頭文件stdio.h。 輸出函數(shù)printf格式:printf(格式控制字符串,輸出表列)
42、printf( )函數(shù)參數(shù)的第一部分,由格式字符串和普通字符組成,格式字符串是以“%”開頭,在輸出表列中,必須有一個變量與這個格式字符相對應;普通字符在輸出時按原樣輸出. 格式輸出函數(shù)printf()1大學計算機基礎1073.4.2 格式輸入與輸出例如:printf(“總和=%d,平均值=%5.2fn,sum,average); 格式字符串 輸出表列【程序分析與解答】#include main() int ch1=77,ch2=78;printf(ch1=%d,ch2=%dn,ch1,ch2); printf(ch1=%c,ch2=%cn,ch1,ch2); printf(%c %cn,ch1
43、,ch2); 大學計算機基礎1083.4.2 格式輸入與輸出 格式控制是通過格式字符串來實現(xiàn)的,格式字符串的一般形式為: %標志輸出最小寬度.精度長度修飾符類型 其中,方括號內(nèi)的項可選,也可以省略,下面就介紹以上6項的使用方法: %:格式字符串的起始符號,不可省。 標志:標志字符為+、-、#、空格4種,其意義如下所示:大學計算機基礎1093.4.2 格式輸入與輸出 標志 為+時,輸出值為正時在值前補“+”號,為負時值前補“-”號 標志為-時,輸出結(jié)果左對齊,右邊補空格;缺省則輸出結(jié)果右對齊,左邊填空格或零 標志為#時,輸出8進制數(shù)時加前綴0;輸出16進制數(shù)時加前綴0 x。 輸出最小寬度:通常用
44、10進制整數(shù)來表示輸出數(shù)據(jù)項的最小位數(shù),若實際位數(shù)多于指定位數(shù),則按實際位數(shù)輸出,若實際寬度少于指定位數(shù),則用空格或0填補。 大學計算機基礎1103.4.2 格式輸入與輸出 精度:精度格式以“.”開頭,后跟10進制整數(shù),用來指示保留幾位小數(shù)。 長度修飾符:常用的長度修改符為h、l兩種,英文字母h表示輸出項按短整型數(shù)據(jù)輸出,英文字母l表示輸出項按長整型數(shù)據(jù)輸出。 類型:類型字符用來表示待輸出數(shù)據(jù)的類型,必須用半角英文字符。 格式字符d(或i) ox(或X); u;c;s;f;lf;e(或E);g(或G);%(輸出一個%符號 )。 大學計算機基礎1113.4.2 格式輸入與輸出【例3-1】數(shù)據(jù)在內(nèi)
45、存中的存儲與8進制輸出?!境绦蚍治雠c解答】#include main()unsigned short int a=-1;printf(%d,%on,a,a); 輸出結(jié)果為:65535,177777大學計算機基礎1123.4.2 格式輸入與輸出 輸入函數(shù)scanf格式 :scanf(格式控制字符串,地址表列) 地址表列中給出各變量的地址,地址是由地址運算符“&”后跟變量組成,但對字符號串的輸入例外。格式輸入函數(shù)scanf()2大學計算機基礎1133.4.3 文件操作中的輸入與輸出fprintf(文件指針,格式字符串,輸出表列);fscanf(文件指針,格式字符串,輸出表列);大學計算機基礎114
46、1.求絕對值函數(shù) (1)int abs(int x); (2)double fabs(double x); 2.求自然對數(shù)值函數(shù) double log(double x); 3.冪函數(shù) double pow(double x, double y); 4.求平方根函數(shù) double sqrt(double x); 5.產(chǎn)生隨機數(shù)函數(shù) int rand(void); 3.5 常用函數(shù)舉例大學計算機基礎1153.5 常用函數(shù)舉例【例3-2】產(chǎn)生10100間的隨機整數(shù),并輸出。#include #include #include main()int a,b;srand(time(0);/*時間作為隨便
47、數(shù)種子,每運行一次,隨機值均不同*/a=rand()%91+10;/*rand()返回隨機整數(shù),該數(shù)對91求余,數(shù)據(jù)范圍是0-90*/b=rand()%91+10;/*因為rand()是隨機的,求余結(jié)果亦隨機*/printf(a=%d,b=%dn,a,b);大學計算機基礎1163.6 編譯預處理1宏 定 義 2文件包含 大學計算機基礎117 C語言中常用的預處理功能有兩種,分別是宏定義和文件包含。合理使用編譯預處理功能編寫程序,便于程序閱讀、修改、移植和調(diào)試,也便于開發(fā)小組協(xié)同開發(fā)程序。 C語言中編譯預處理命令以“#define”開頭,且每行末尾不能加分號。宏定義 在源程序中允許用一個標識符來
48、表示一個字符串,稱為“宏”。 在語言中,“宏”分為有參數(shù)和無參數(shù)兩種。下面分別討論這兩種“宏”的定義和調(diào)用。 3.6.1 宏定義大學計算機基礎1183.6 編譯預處理不帶參數(shù)的宏的一般定義方式為:#define 標識符 字符串說明:(1)“#define”為宏定義的關鍵字,“標識符”表示定義的宏名,“標識符”用大寫字母,以便區(qū)分于變量名或函數(shù)名,也可以用小寫字母;(2) 宏定義的末尾不可以;作為結(jié)束,如果不小心加了分號,會將分號一起替換; (3)“字符串”是一個字符系列,對于整型,實型常量可直接書寫,對于字符型常量,需要添加單引號,對于字符串常量,需要添加雙引號。“字符串”還可以是一個表達式。
49、 不帶參數(shù)的宏定義1大學計算機基礎1193.6 編譯預處理【例3-14】宏定義中的數(shù)據(jù)格式#define CH c #define STRING Programming#define R 1 /*這是數(shù)字1*/#define PI 3.14159#define L 2*PI*R #define S PI*R*R#include main()printf(%c,%sn,CH,STRING);printf(L=%f,S=%fn,L,S);輸出結(jié)果:c,ProgrammingL=6.283180,S=3.141590大學計算機基礎1203.6 編譯預處理 帶參數(shù)的宏定義不是進行簡單的字符串替換,還要
50、進行參數(shù)替換。其定義的一般形式為#define宏名(參數(shù)表) 字符串 字符串中包含在括弧中所指定的參數(shù)。如:#define S(a,b) a*barea=S(3,2); 定義矩形面積S,a和b是邊長。在程序中用了S(3,2),把3、2分別代替宏定義中的形式參數(shù)a、b,即用3、2代替S(3,2)。因此賦值語句展開為area=3*2;帶參數(shù)的宏定義2大學計算機基礎1213.6 編譯預處理【例3-3】使用帶參數(shù)宏定義求圓周長。#define PI 3.1415926#define S(r) 2*PI*rmain()float a,area;a=3.6;area=S(a);printf(半徑=%fn圓
51、面積=%fn,a,area);輸出結(jié)果:半徑=3.600000圓面積=22.619466大學計算機基礎1223.6.2 文件包含 所謂“文件包含”處理是指一個源文件可以將另外一個源文件的全部內(nèi)容包含到當前的源文件中。其一般形式為 #include “文件名” 或 #include 它的作用是用指定的文件的全部內(nèi)容來代替當前文件中進行文件包含的那一行內(nèi)容,如當前源文件中,包含文件#include “myfunc.h”,在編譯時,myfunc.h文件中的若干行代碼,就會自動替換#include “myfunc.h”然后進行編譯。 大學計算機基礎123 【例3-4】從鍵盤上輸入一個4位的整數(shù),要求分
52、離出它的個、十、百和千位,并倒序輸出程序代碼如下:#include main()int x,a,b,c,d;/*abcd分別表示千、百、十、個位*/printf(請輸入一個4位整數(shù),并回車:);scanf(%d,&x);d=x%10; /*個位*/c=(x%100)/10; /*十位*/b=(x%1000)/100; /*百位*/a=x/1000; /*千位*/printf(%d%d%d%dn,d,c,b,a); 3.7 順序結(jié)構(gòu)程序設計舉例大學計算機基礎1243.7 順序結(jié)構(gòu)程序設計舉例【例3-】輸入三角形的3邊,利用海倫公式求三角形面積,輸入的3個數(shù)據(jù)能構(gòu)成三角形。海倫公式如下:半周長l=
53、(a+b+c)/2,面積s=sqrt(l*(l-a)*(l-b)*(l-c)。#include #include main()double a,b,c,l,s;/*abcd分別表示千、百、十、個位*/printf(請輸入一個三角形的3條邊,如:3,4,5,并回車:);scanf(%lf,%lf,%lf,&a,&b,&c);l=(a+b+c)/2;s=sqrt(l*(l-a)*(l-b)*(l-c);printf(海倫公式求面積,s=%.2lfn,s);大學計算機基礎1253.7 順序結(jié)構(gòu)程序設計舉例 例3- 求一元二次方程的兩個實根。算法分析: 輸入方程系數(shù)a、 b、 c。 計算判別式d。 計
54、算兩個實根 x1、 x2。 輸出兩個實根 x1、 x2。 數(shù)據(jù)分析: 輸入量: 方程系數(shù)a、 b、 c, float中間量: 判別式d, float輸出量: 兩個實根 x1、 x2, float大學計算機基礎1263.7 順序結(jié)構(gòu)程序設計舉例include stdio.hinclude math.hmain( )float a, b, c; float d; float x1, x2; printf(請輸入方程系數(shù)a、 b、 c : ); scanf(%f, %f, %f, &a, &b, &c); d=b*b-4*a*c; x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(
55、d)/(2*a); printf(第一個根=%5.2fn 第二個根=%5.2f n, x1, x2); 輸入數(shù)據(jù): 1, 3, -4運行結(jié)果: 第一個根=-4.00 第二個根= 1.00 第 4 章 選 擇 結(jié) 構(gòu) 程 序 設 計大學計算機基礎128主要內(nèi)容4.1 關系運算與邏輯運算 4.2 if語句 4.3 switch語句 4.4 應用舉例 大學計算機基礎1294.1 關系運算與邏輯運算1關系表達式的應用 2邏輯表達式的應用 大學計算機基礎130 在C語言中,實現(xiàn)選擇結(jié)構(gòu)可以有兩類語句:1、一類是if語句; 2、另一類是switch構(gòu)成的多分支語句。關系表達式的概念與作用 由關系運算符組成
56、的表達式,稱為關系表達式.。關系運算符兩邊的運算對象可以是C語言中任意合法的表達式. 關系運算有一個確定的結(jié)果,真(非0)或假(0)。 在選擇結(jié)構(gòu)中,關系表達式經(jīng)常出現(xiàn)在if語句中,表達式必須有一個確定的值以決定要執(zhí)行的分支程序段。 4.1.1 關系表達式的應用大學計算機基礎1314.1.2 邏輯表達式的應用邏輯表達式的概念與作用 由邏輯運算符(&;|;!)組成的表達式,稱為邏輯表達式。 邏輯表達式只有兩種值,0(假)或1(真). 參與邏輯運算的操作數(shù)可以是假值(0)或真值(任何非0的數(shù)值),也可以是任何類型的數(shù)據(jù),如字符型,實型或指針型數(shù)據(jù),還可以是一個表達式。邏輯表達式的表示方式比較靈活,
57、即使是同一個條件,也可以用另一種方式來表示。 大學計算機基礎1324.1 關系運算與邏輯運算 【例4-1】寫出判別某一年year是否閏年的邏輯表達式。閏年的條件是符合下面二者之一:能被4整除,但不能被100整除。能被4整除,又能被400整除。【解答】閏年的表示方法:(year%4=0 & year%100!=0)|year%400=0;非閏年的表示方法:!(year%4=0 & year%100!=0)|year%400=0);還可以這樣表示非閏年:(year%4!=0|year%100=0)&year%400!=0;大學計算機基礎1334.2 if語句1 if語句的3種形式 2if語句的嵌套
58、與語句塊的使用 大學計算機基礎134單分支:if 它的形式是: if(表達式) 語句;其流程如右圖所示。 4.2.1 if語句的3種形式語句表達式真(1)假(0)單分支1大學計算機基礎1354.2.1 if語句的3種形式【例4-1】輸入兩個數(shù),把較小的數(shù)輸出。#include main()int x,y,min;printf(輸入兩個整數(shù):eg.x,yn);scanf(%d,%d,&x,&y);min=x;if(ymin)min=y;printf(min=%dn,min);大學計算機基礎1364.2.1 if語句的3種形式這是分支結(jié)構(gòu)的第二種基本形式,它的語法形式是:if(表達式) 語句1;e
59、lse 語句2;語句1表達式真(1)假(0)語句2圖4-2 雙分支結(jié)構(gòu)流程圖雙分支:if-else 形式2大學計算機基礎1374.2.1 if語句的3種形式【例4-2】輸入一個整數(shù),判斷該數(shù)的奇偶性。#include main()int x;printf(輸入一個整數(shù),然后回車: n);scanf(%d,&x);if(x%2=0)printf(%d是偶數(shù)。n,x);else printf(%d是奇數(shù)。n,x);大學計算機基礎1384.2.1 if語句的3種形式 單分支和雙分支可以完成一些簡單的判斷,當在程序設計中,有多個分支選擇時,可采用if-else-if這種形式,甚至可以嵌套更多,它的語法
60、形式是:if(表達式1) 語句1;else if(表達式2) 語句2;else if(表達式n) 語句n;else 語句 m;多分支:if-else-if形式3大學計算機基礎1394.2.1 if語句的3種形式多分支結(jié)構(gòu)流程圖如下圖4-3所示。真(1)真(1)語句1表達式1假(0)表達式2假(0)表達式3假(0)表達式4語句2語句3語句4語句m假(0)真(1)圖4-3 多分支結(jié)構(gòu)流程圖大學計算機基礎1404.2.1 if語句的3種形式【例4-3】輸從鍵盤輸入一個字符,判斷其是否為數(shù)字、大小寫字母或控制字符。#include main()char ch;printf(輸入一個字符,然后回車: n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025下半年江蘇省鹽城市射陽縣事業(yè)單位統(tǒng)一招聘15人高頻重點提升(共500題)附帶答案詳解
- 2025下半年四川涼山鹽源縣事業(yè)單位考試招聘工作人員17人高頻重點提升(共500題)附帶答案詳解
- 2025上半年遼寧省交通廳所屬事業(yè)單位擬聘人員歷年高頻重點提升(共500題)附帶答案詳解
- 2025上半年江西省九江市事業(yè)單位招聘514人歷年高頻重點提升(共500題)附帶答案詳解
- 2025上半年四川遂寧射洪市部分事業(yè)單位招聘工作人員129人歷年高頻重點提升(共500題)附帶答案詳解
- 2025上半年四川省自貢富順縣事業(yè)單位考試招聘275人高頻重點提升(共500題)附帶答案詳解
- 2025上半年四川瀘州合江縣事業(yè)單位招聘21人歷年高頻重點提升(共500題)附帶答案詳解
- 2025三峽財務限責任公司招聘高頻重點提升(共500題)附帶答案詳解
- 外派董事企業(yè)文化融合
- 招投標項目進度管理要點
- GB/T 19633.2-2024最終滅菌醫(yī)療器械包裝第2部分:成型、密封和裝配過程的確認的要求
- DB32-T 4750-2024 模塊化裝配式污水處理池技術(shù)要求
- 企業(yè)員工績效管理與員工工作動機的激發(fā)
- 大學體育訓練計劃書
- 中國文化概要智慧樹知到期末考試答案章節(jié)答案2024年溫州大學
- 新建學校辦學方案
- 妊娠合并肺結(jié)核的診斷與治療
- 網(wǎng)絡畫板智慧樹知到期末考試答案2024年
- (正式版)JBT 14544-2024 水下機器人用直流電動機技術(shù)規(guī)范
- 2024年杭州市水務集團有限公司招聘筆試參考題庫附帶答案詳解
- 2024年江西人民出版社有限責任公司招聘筆試參考題庫附帶答案詳解
評論
0/150
提交評論