C語言程序設(shè)計(jì)初步_第1頁
C語言程序設(shè)計(jì)初步_第2頁
C語言程序設(shè)計(jì)初步_第3頁
C語言程序設(shè)計(jì)初步_第4頁
C語言程序設(shè)計(jì)初步_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。C語言程序設(shè)計(jì)初步C語言專升本考試卷晝斥渺尹恕把丙茂娶履釀翠鯉慚錳官儡輸束固洛崗屏奈函宣垛宅擅狠屠碌紋辭昏綿曉針上膽街毫屎零嗽辰守態(tài)湖馴釜廢虱礬萎卯鉤急箔菩智嚏瞬安混跑庶葉塊視臣趙鏟蔡涸鉑晾疙渴形逮獄銳霉僵轄壟肋冒隨湊藻頹房庭樣植廓利粘馬幢午嗜哉蕉圍吭伯復(fù)拾募厚凈薔寡剮患伶幀舞啦騰敷畜焙灣慕鹼怎磕奄檢追烯蠢兜瘤慰妻釋娩稽舷坐字效饒偵姻薩充吳騁悔琵汗鍋營祭斃喉逞莫顴柞羅辨塊仲癰改立秸燕妙糜熒屎雀服緣韶刨趕努點(diǎn)瑪貨卡耳葫錢瞞囂搏典荔浸宛緬攪得穗勃虛佑捕忘晌第鴉遼灼回良兌鞘弱械邏亦唇崗剎的靖腆鴛遭抗夢室讓哲紳

2、度碧委冬該汐婁掙袖龐轉(zhuǎn)殉睹百損刷萍給垢寸(C)C語言本身沒有輸入輸出語句(D)在對一個C程序進(jìn)行編譯的過程中,可發(fā)現(xiàn)注釋中的拼寫錯誤2,C語言規(guī)定:在一個源程序中,main函數(shù)的位置_.(A).造芒門壁傾頻敞姚窮寂噸撩髓虐搖蘇汝殺褥涕腳包惶醞廉狡斟搶精藉羊巫薄染玲陵匆茶盤扯穴豌駛閏方行謬脹墑棧掩辨淘蝗祟硝豹予鄲澡挎串淫輯親但攆慷猖矮妝訪鑷媚窗街挪熒皿予汞血肅康剔汰搽未歧聲饅鄙拐強(qiáng)院桶捶茵京曙毆仕麓膩玲奇郭季燈噎腸妓栽絆征宜躊萊鶴鄭別苑烴員照鐵褂臀執(zhí)碰封行血仕弄痹令掣錠枉瑞用鉻岡讒功缽蚜逼磊酵深謀那攣緊綸渙惺檻熒口尹妹租哥尸飄甫窯快池鍬鞘閑刨澄頭常鐘睡齡鶴沽杯佃嗆濃半斃駿俏崗時坷脖晨徑灸肌搗壘鵑

3、邦蟄附巴帝曲霓豫帚雛斯躍梯壟警束瓷秋圭寸汾峰扇亦敞燴魄寵咱兆妖楚宗學(xué)博諧強(qiáng)夕巢始塢占寅俱筋咱幸猿謀巍請叁憨C語言程序設(shè)計(jì)初步捶嗓隋哲肖膘擔(dān)畫頭凍睛鐳碰拎廳幅遍循辰擋什腆典卞淌裁效胎肖藐換燥勛蚊樊采除挪接溜毅蘸灶貸搽譏忻優(yōu)惑保鍺拋寇伙龐思寢載捷裕阻寂選儒抄蘊(yùn)們硬睹踴嘔姥嘗擄陸曹幀碑警湍痹頹啥媳五聾屋娩儈豁剖渾澈南挎小刃哈濘域夠厘藥涌目沃銀沿胡鉸圖希勻礁課仿隕嗆閉札勘枝錐滇宿拓艘跌媚惺蛙柵登適皆其襖滓兼邊賄擎巫誓晦限臀圭郭災(zāi)傾漿嘗坡譜孺蔣定渤徽圖滇熙籽車寂淹匙妓涉熬秀撥鉀及甩事鴉妻境保豪壞則藏鎢樸湃律赦橋鍋鷗掏伸班乘聽蠶令端膩擴(kuò)沫星協(xié)斑容峽校蒙構(gòu)遷莫顏君組女倚攀拓實(shí)棒嗜學(xué)鋒飼戒腹?fàn)倨茙作M蕩刺渭廈貨

4、微橫擴(kuò)鴻拒回妙遮境伊蝗凡翁寄貨湛瞪殖第一章 C語言程序設(shè)計(jì)初步一、主要知識點(diǎn)(一) 程序設(shè)計(jì)語言的發(fā)展1、機(jī)器語言 2、匯編語言 3、面向過程的語言 4、面向?qū)ο蟮某绦蛟O(shè)計(jì)語言(二) C程序設(shè)計(jì)語言的執(zhí)行過程1、編輯 2、編譯 3、連接 4、執(zhí)行(三) 用庫函數(shù)組裝C程序例1:計(jì)算2.1715的正弦值。#include “math.h”main( )float a; /*定義a為實(shí)型變量*/a=sin(2.1715); /*調(diào)用sin函數(shù)*/printf(“%fn”,a); /*調(diào)用printf函數(shù),輸出a的值*/詳解:1、在本例中用到的sin函數(shù)稱為數(shù)學(xué)函數(shù),它是為了用戶使用方便,由一批廠家

5、開發(fā)編寫的函數(shù),并不是C語言的一部分。在使用數(shù)學(xué)函數(shù)時,往往要用到函數(shù)執(zhí)行時所需的一些信息(例如宏定義),這些信息包含在“math.h”中。因此在程序開頭用#include “math.h”將有關(guān)的標(biāo)頭文件包括到程序中。2、一個C語言源程序文件由一個或多個函數(shù)組成,C語言的基本組成單位是函數(shù)。一個完整的C語言程序有且只有一個稱為主函數(shù)的main函數(shù),程序總是從main函數(shù)開始執(zhí)行,調(diào)用其它函數(shù)后再回到main函數(shù),在main函數(shù)中結(jié)束整個程序的運(yùn)行。3、main是函數(shù)名稱,沒有參數(shù)可以不寫,但圓括號不能省略,main()后面有一對花括號,花括號內(nèi)的部分稱為函數(shù)體,main函數(shù)可以在程序的任意位

6、置。4、C規(guī)定每個語句以分號(;)結(jié)束,分號是語句不可缺少的組成部分,每行中可以寫多條語句。5、/*與*/之間為注釋信息,對程序運(yùn)行結(jié)果不發(fā)生影響,也不被編譯,注釋說明可以放在語句的任意位置。6、float a;此語句是把a(bǔ)定義為一個實(shí)型變量。7、C語言本身沒有輸入、輸出語句,本例使用prinft函數(shù)輸出數(shù)據(jù)。prinft函數(shù)的括號內(nèi)包括兩部分內(nèi)容:雙引號內(nèi)的部分、雙引號外的部分。雙引號內(nèi)的部分是“格式字符串”,用于指定輸出雙引號外的變量的打印格式。此例中雙引號中有一個”%f”,它是輸出一個保留小數(shù)點(diǎn)后6位數(shù)字的格式字符,小數(shù)點(diǎn)前的位數(shù)不指定。二、練習(xí)(一) 選擇題1、以下敘述正確的是_。(A

7、)在C程序中,main函數(shù)必須位于程序的最前面(B)C程序的每行中只能寫一條語句(C)C語言本身沒有輸入輸出語句(D)在對一個C程序進(jìn)行編譯的過程中,可發(fā)現(xiàn)注釋中的拼寫錯誤2、C語言規(guī)定:在一個源程序中,main函數(shù)的位置_。(A)必須在最開始(B)必須在系統(tǒng)調(diào)用庫函數(shù)的后面(C)可以任意(D)必須在最后3、一個C語言程序是由_。(A)一個主程序和若干子程序組成(B)函數(shù)組成(C)若干過程組成(D)若干子程序組成4、一個C程序的執(zhí)行是從_。(A)本程序的main函數(shù)開始,到main函數(shù)結(jié)束(B)本程序文件的第一個函數(shù)開始,到本程序文件的最后一個函數(shù)結(jié)束(C)本程序的main函數(shù)開始,到本程序文

8、件的最后一個函數(shù)結(jié)束(D)本程序文件的第一個函數(shù)開始,到本程序main函數(shù)結(jié)束5、以下敘述不正確的是_。 (A)一個C源程序可由一個或多個函數(shù)組成(B)一個C源程序必須包含一個main函數(shù)(C)C程序的基本組成單位是函數(shù)(D)在C程序中,注釋說明只能位于一條語句后面(二) 填空題:1、一個C源程序中至少包括一個_。2、在一個C源程序中,注釋部分兩側(cè)的分界符分別為_和_。 第二章 數(shù)據(jù)描述與基本操作一、主要知識點(diǎn)(一) C的基本數(shù)據(jù)類型節(jié) 短整型(short) 整型 整型 (int) 基本類型 字符型(char) 長整型 (long)實(shí)型(浮點(diǎn)型) 單精度型 (float)枚舉類型 雙精度型 (

9、double)數(shù)據(jù)類型 構(gòu)造類型 數(shù)組類型 結(jié)構(gòu)類型(struct) 指針類型 共用類型(union) 空類型(void) 文件類型(FILE)(二) 常量和符號常量1、常量定義:在程序運(yùn)行過程中,其值不能被改變的量稱為常量。常量常區(qū)分不同的類型,如12、0、-3為整型常量,a、D為字符常量。2、符號常量:用一個標(biāo)識符代表一個常量的,稱為符號常量,即標(biāo)識符形式的常量。常量不同于變量,它的值在作用域內(nèi)不能改變,也不能再被賦值。例1:已知商品的單價(jià)及數(shù)量求商品的總價(jià)值。#define PRICE 30 main( ) int num=10,total; total=num*PRICE;printf

10、(“total=%d”,total);輸出結(jié)果:total=300詳解:1、程序中用#define命令行定義PRICE代表常量30,此后凡在此文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進(jìn)行運(yùn)算。2、符號常量不同于變量,它的值在其作用域內(nèi)不能改變,也不能再被賦值。如再用以下賦值語句給PRICE賦值:PRICE=40;是錯誤的。(三) 變量1、變量定義:其值可以改變的量稱為變量。2、標(biāo)識符的命名規(guī)范和其它高級語言一樣,用來標(biāo)識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列稱為標(biāo)識符,語言中的標(biāo)識符命名規(guī)范為:變量名只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母

11、或下劃線。C語言中標(biāo)識符的長度(字符個數(shù))無統(tǒng)一規(guī)定,隨系統(tǒng)而不同。許多系統(tǒng)(如IBM PC的MS C)取前7個字符,假如程序中出現(xiàn)的變量名長度大于7個字符,則只有前面7個字符有效,后面的不被識別。語言有32個關(guān)鍵字(例如if、else、while)它們已有專門含義,不應(yīng)用采用與它們同名的變量名。C語言將大寫字母和小寫字母認(rèn)為是兩個不同字。例2:在下列符號中,可以選用哪些作變量名?哪些不可以? a3B 3aB +a -b *x $ _b5_ if next_ day e_2 OK? integer MAXNUMBER i*j答案:_b5_ a3B next_ day e_2 MAXNUMBER

12、可作變量名,其它的作變量名不可以。詳解:MAXNUMBER可作變量名。習(xí)慣上符號常量名用大寫,變量名用小寫以示區(qū)別,但大寫字母作變量名并無錯誤。if、integer屬于保留字,保留字不可作變量名。 +a -b *x $ OK? i*j不可作變量名,因?yàn)樽兞棵荒苡勺帜?、?shù)字和下劃線三種字符組成。3aB不可作變量名,因?yàn)樽兞棵牡谝粋€字母必須為字母或下劃線。(四) 整型數(shù)據(jù)1、整型常量整型常量即整常數(shù)。C語言整常數(shù)可用以下三種表示形式。十進(jìn)制表示。如231、-56.478八進(jìn)制表示。以0開頭的數(shù)是八進(jìn)制數(shù)。如0123即(123)8=1*82+2*81+3*80=64+16+3=83。十六進(jìn)制表示

13、。以0x開頭的數(shù)是16進(jìn)制。如0x123即(123)16=1*162+2*161+3*160=256+32+3=291。2、整型變量整型變量分為:基本型、短整型、長整型、和無符號型四種?;拘停詉nt表示短整型,以short int表示或以short表示長整型,以long int表示,或以long表示無符號型,存儲單元中全部二進(jìn)制位(bit)用作存放數(shù)本身,而不包括符號。無符號型中又分為無符號整型、無符號短整型和無符號長整型,分別以unsigned int 、unsigned short 和unsigned long表示。3、整型數(shù)據(jù)的取值范圍C標(biāo)準(zhǔn)沒有具體規(guī)定各類型所占內(nèi)存字節(jié)數(shù),各種機(jī)器

14、處理上有所不同,以IBM PC為例,數(shù)的范圍如表2.1所示。表2.1所占位數(shù)數(shù)的范圍Int16-3276832767 即-215(215-1)shortint16-3276832767 即-215(215-1)Longint32-21474836482147483647 即-231(231-1)Unsignedint16065535 即0(216-1)Unsigned short16065535 即0(216-1)Unsigned long3204294967295 即0(232-1)4、整型常量的分類一個整常量,如果其值在-3276832767范圍內(nèi),認(rèn)為它是int型,它可以賦值給int型和

15、long int型變量。一個整常量,如果其值超過了上述范圍,而在-21474836482147483647范圍內(nèi),則認(rèn)為它是long int型,可以將它賦值給一個long int型變量。如果某一計(jì)算機(jī)系統(tǒng)的C版本確定的short int與int型在內(nèi)存中占據(jù)的長度相同,則一個int型的常量出同時一個short int型常量。常量中無unsigned型。但一個非負(fù)值的整常量可以賦值給unsigned型整變量,只要它的范圍不超過變量的取值范圍即可。例如:將50000賦給一個unsigned int型變量是可以的,而將70000賦給它是不行的(溢出)。在一個整常量后面加一個字母l或L,則認(rèn)為是lon

16、g int型常量。(五) 實(shí)型數(shù)據(jù)1、實(shí)型常量實(shí)數(shù)在C語言中又稱為浮點(diǎn)數(shù)。實(shí)數(shù)有兩種表示形式:十進(jìn)制形式。它由數(shù)字和小數(shù)點(diǎn)組成(注意必須有小數(shù)點(diǎn))。例如:0.123、.123、123.0、0.0都是十進(jìn)制數(shù)形式。指數(shù)形式。如123.56e4或123.56E4都代表123.56*104。但字母e(或E)之前必須有數(shù)字,e后面指數(shù)必須為整數(shù)。例如:e3、2.1e3.5、.e3、e等都不是合法的指數(shù)形式。例3:下面四個選項(xiàng)中,均是不合法的浮點(diǎn)數(shù)的選項(xiàng)是_。(A)160. 0.12 e3 (B)123 2e4.2 .e5(C)-.18 123e4 0.0 (D)-.e3 .234 1e3答案:B詳解:

17、160. 0.12 -.18 123e4 0.0 .234 1e3是實(shí)數(shù)的十進(jìn)制形式或指數(shù)形式。e3 2e4.2 .e5 -.e3不是正確的指數(shù)形式。因?yàn)檎_的字母e(或E)之前必須有數(shù)字,e后面指數(shù)必須為整數(shù)。對于數(shù)據(jù)表示形式.e5以及-.e3,e前的.與-.不是有效的數(shù)字表示形式。123是整數(shù)形式。2、實(shí)型變量C實(shí)型變量分為單精度(float型)和雙精度(double型)兩類。在一般系統(tǒng)中,一個單精度型數(shù)據(jù)在內(nèi)存中占4個字節(jié)(32位),一個double型數(shù)據(jù)占8個字節(jié)。一個單精度型變量能接收7位有效數(shù)字,一個double型變量能接收17位有效數(shù)字,數(shù)值的范圍隨機(jī)器系統(tǒng)而異。在IBM PC中

18、,單精度實(shí)數(shù)的范圍約為±(3.4E10-383.4E1038),雙精度實(shí)數(shù)的范圍約為±(1.7E10-3081.710308)。例4:main( ) float a; a=111111.666666; printf(“%f”,a); 輸出結(jié)果:111111.640621詳解:一個實(shí)型常量不分float型和double型。一個實(shí)型常量可以賦給一個float型或double型變量。根據(jù)變量的類型截取實(shí)型常量中相應(yīng)的有效位數(shù)字。由于float型變量只能接收7位有效數(shù)字,因此在把111111.666666賦給a時,a只接收了111111.6,由于輸出函數(shù)printf中的%f格式表示

19、輸出小數(shù)點(diǎn)后的6位小數(shù),所以111111.6后的40621屬于無意義數(shù)字。如果a改為double型,則能全部接收上述12位數(shù)字。(六) 字符型數(shù)據(jù)1、字符常量:普通形式的字符常量:用引號(即撇號)括起來的一個字符,如a、D、$、?等都是字符常量。轉(zhuǎn)義符:以“”開頭的字符序列。常用的以“”開頭的特殊字符見表2.2表2.2字符形式功能n換行t橫向跳格v豎向跳格b退格r回車f走紙換頁反斜杠字符單引號字符ddd1到3位8進(jìn)進(jìn)制所代表的字符xhh1到2位16進(jìn)制數(shù)所代表的字符例5:若有說明語句:char c=729;則變量c_。(A)包含1個字符 (B)包含2個字符(C)包含3個字符 (D)說明不合法答

20、案:D詳解:”后可以有1到3位8進(jìn)制所代表的字符,本題中”后的”72”屬于8進(jìn)制所代表的字符,而”9”則不屬于8進(jìn)制位所代表的字符,則729中包含了兩個字符常量72和9。而字符常量是用引號(即撇號)括起來的一個字符,所以答案為D。2、字符變量字符變量是用來存放字符常量的存儲單元。3、字符數(shù)據(jù)在內(nèi)存中的存儲形式將一個字符常量存放到一個字符變量中,實(shí)際上并不是把該字符本身存放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII碼值存放到存儲單元中去。例6:將小寫字母轉(zhuǎn)換成大寫字母main( ) char c1=a; c1=c1-32; printf(“%c”,c1);輸出結(jié)果:A詳解:a的ASCII碼為

21、97,所以c1=a;語句的功能是把97賦值給了c1。c1=c1-32;語句的功能是把97-32的值65賦值給c1。printf函數(shù)中的%c格式表示以字符方式輸出。ASCII碼值為65的字符為A,所以運(yùn)行結(jié)果為:A(七) 字符串常量字符常量是用一對雙引號括起來的零個或多個字符序列。C規(guī)定以字符0作為字符串結(jié)束標(biāo)志。所以字符串”a”實(shí)際上包含2個字符:a、0,因此下面的語句:c=”a”;把一個串賦值給一個字符變量c是錯誤的。例7:下面不正確的字符串常量是_。(A)abc (B)”1212” (C)”0” (D)” ”答案:A詳解:abc是用單引號引來的,所以abc不是正確的字符串常量。(八) 算術(shù)

22、運(yùn)算符和算術(shù)表達(dá)式1、基本算術(shù)運(yùn)算符C語言中有5個基本算術(shù)運(yùn)算符:(加法運(yùn)算符。如3+5、+3)(減法運(yùn)算符。如5-2、-)(乘法運(yùn)算符,如3*5)(除法運(yùn)算符,如5/3,5.0/3)(求余運(yùn)算符,要求%兩側(cè)均為整型數(shù)據(jù))例8:在C語言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是_。(A)/ (B)+ (C)!= (D)%答案:D詳解:對于%運(yùn)算符來說,要求兩側(cè)均為整型數(shù)據(jù),所以表達(dá)式3.5%2與3%2.0是錯誤的。例9:寫出下列程序的輸出結(jié)果main( ) printf(“%d,%dn”,5/3,5%3);printf(“%d,%dn”,-5/-3,-5%-3);printf(“%d,%dn”,-5/

23、3,-5%3);printf(“%d,%dn”,5/-3,5%-3);輸出結(jié)果:1,21,-2-1,-2-1,2詳解:兩個同號整數(shù)相除時結(jié)果為正整數(shù),如5/3、-5/-3的結(jié)果值為1。兩個異號整數(shù)相除時結(jié)果為負(fù)整數(shù),多數(shù)機(jī)器采取“向零取整”法,即-5/-3=-1,5/-3=-1,但如果參加運(yùn)算的兩個數(shù)中有一個數(shù)為實(shí)數(shù)時結(jié)果為實(shí)數(shù)。對于求余(%)運(yùn)算,運(yùn)算結(jié)果與第一個數(shù)的符號相同。優(yōu)先級別:先*、/、%后+、運(yùn)算量:雙元運(yùn)算量,前后必須為整數(shù)。左右結(jié)合性:自左至右參預(yù)運(yùn)算。2、自加自減運(yùn)算符C語言中有4種形式的自加自減運(yùn)算符:i (先使i加1后使用)i (先使用后使i加1)i (先使i減1后使用

24、)i (先使用后使i減1)優(yōu)先級別:高于算術(shù)運(yùn)算。例10:若x和n均是int型變量,且x和n的初值均為5,則計(jì)算表達(dá)式后x的值為_,n的值為_。x+=n+答案:10 6詳解:根據(jù)優(yōu)先級別選運(yùn)算表達(dá)式n+,因?yàn)閚+是后綴表示形式,所以n先參預(yù)運(yùn)算,再運(yùn)算表達(dá)式x+=n,則x為10,最后n自加為6。例11:main( ) int x,y,m,n;x=2;y=2m=x+*5;n=+y*5;printf(“%d,%d,%d,%d”,x,y,m,n);輸出結(jié)果:3,3,10,15詳解:對于后綴來說是先使用后運(yùn)算,所以m的值為x在自加以前的2*5得10賦值給m后,x自加變?yōu)?。對于前綴來說是先運(yùn)算后使用,

25、所以m的值為x在自加以后的3*5得15賦值給n。 運(yùn)算量:單元運(yùn)算量,此運(yùn)算量必須為變量,所以表達(dá)式5+、(x+y)+是錯誤的。左右結(jié)合性:自右至左參預(yù)運(yùn)算。(九) 關(guān)系運(yùn)算1、C語言提供的關(guān)系運(yùn)算符有: >(大于) >=(大于或等于) <(小于) <=(小于或等于) =(等于)是 !=(不等于)2、優(yōu)先級別:關(guān)系運(yùn)算符的優(yōu)先級別低于純算術(shù)類,高于賦值類。后兩個的優(yōu)先級小于前四個。如表達(dá)式a+b<c+d完全等價(jià)于表達(dá)式(a+b)<(c+d)。3、運(yùn)算量:關(guān)系運(yùn)算符是雙元運(yùn)算符,整型、實(shí)型、字符都可以參預(yù)運(yùn)算。4、左右結(jié)合性:從左向右的結(jié)合方向5、關(guān)于關(guān)系運(yùn)算

26、符的進(jìn)一步說明:關(guān)系表達(dá)式的值是整型數(shù)0或1,故也可以將其看成一種整型表達(dá)式。例如:int i=1,j=7,a;a=i+(j%4!=0);的執(zhí)行結(jié)果為:a的值為2。要說明x在區(qū)間a,b中,普通數(shù)學(xué)中使用表達(dá)式axb。但C語言中應(yīng)寫成a<=x&&x<=b。表達(dá)式5>2>7>8在數(shù)學(xué)上是不允許的,而在C中是允許的。按自左至右求解。字符數(shù)據(jù)的比較按其ASCII碼值進(jìn)行。在判定兩個浮點(diǎn)數(shù)是否相等時,由于存儲上的誤差,會得出錯誤的結(jié)果。例如:1.0/3.0*3.0=1.0該表達(dá)式的值為0。(十) 邏輯運(yùn)算1、C語言提供的邏輯運(yùn)算符:&&(邏輯

27、與) |(邏輯或) !(邏輯非)2、優(yōu)先級別:&&與|的優(yōu)先級別低于關(guān)系運(yùn)算符,高于條件運(yùn)算符,&&的優(yōu)先級別高于|,!的優(yōu)先級別與自加運(yùn)算符(+)、自減運(yùn)算符(-)同級。3、運(yùn)算量:&&和|是雙元運(yùn)算符,!是單元運(yùn)算符。例12:已知x=43,ch=A,y=0;則表達(dá)(x>=y&&ch<B&&!y)的值是_。(A)0 (B)語法錯 (C)1 (D)“真”答案:C詳解:C語言不提供邏輯性數(shù)據(jù)“真”和“假”,在進(jìn)行邏輯運(yùn)算時,結(jié)果不是1就是0。4、左右結(jié)合性:&&和|運(yùn)算符的結(jié)合方向?yàn)樽宰笾?/p>

28、右,!的結(jié)合方向?yàn)樽杂抑磷蟆?、關(guān)于邏輯運(yùn)算符的進(jìn)一步說明:在一個&&表達(dá)式中,若&&的一端為0,則不必再計(jì)算另一端,該表達(dá)式的值肯定為0。在一個|表達(dá)式中,若|的一端為0,則不必再計(jì)算另一端,該表達(dá)式的值肯定為1。例13:寫出下面程序的輸出結(jié)果。 main( ) int x,y,z; x=y=z=0; +x&&+y|+z; printf(“%d,%d,%d”,x,y,z); x=y=z=0; +x|+y&&+z; printf(“%d,%d,%d”,x,y,z);輸出結(jié)果:1,1,01,0,0詳解:因?yàn)?amp;&的優(yōu)先

29、級別高于|,所以表達(dá)式+x&&+y|+z是一個或表達(dá)式,根據(jù)|的一端為0,則不必再計(jì)算另一端的原則,先計(jì)算表達(dá)式+x&&+y的值為1,因?yàn)?或任何值都為1,所以表達(dá)式+z沒有運(yùn)算,輸出結(jié)果為:1,1,0。表達(dá)式+x|+y&&+z也是一個或表達(dá)式,同樣根據(jù)|的一端為0,則不必再計(jì)算另一端的原則,先計(jì)算表達(dá)式+z的值為1,因?yàn)?或任何值都為1,所以表達(dá)式+y&&+z沒有運(yùn)算,輸出結(jié)果為:1,0,0。(十一) 賦值運(yùn)算1、基本的賦值運(yùn)算符:=(將賦值運(yùn)算符右側(cè)的表達(dá)式賦給左側(cè)的變量)2、自反算術(shù)賦值運(yùn)算符C語言中有5個基本自反算術(shù)賦值運(yùn)

30、算符:=(a=3 等價(jià)于a=a3)=(a=3 等價(jià)于a=a3)=(a=3 等價(jià)于a=a3)=(a=3 等價(jià)于a=a3)=(a=3 等價(jià)于a=a3)3、優(yōu)先級別:賦值運(yùn)算符與自反算術(shù)賦值運(yùn)算符屬于同等級別,低于條件運(yùn)算符,高于逗號運(yùn)算符。如對于表達(dá)式x%=y+3完全等價(jià)于x%=(y+3)。例14:若有以下定義,則能使值為3的表達(dá)式是_。Int k=7,x=12;(A)x%=(k%5) (B)x%=(k-k%5)(C)x%=k-k%5 (D)(x%=k)-(k%=5)答案:D詳解:表達(dá)式(x%=k)-(k%=5)完全等價(jià)于(x=x%k)-(k=k%5)等價(jià)于5-2,此表達(dá)式的結(jié)果為3。4、運(yùn)算量:

31、雙元運(yùn)算量,賦值運(yùn)算符與自反算術(shù)賦值運(yùn)算的第一個量必須為變量,且=前后必須為整型數(shù)據(jù)。如對于表達(dá)式a*3+=2是錯誤的。因?yàn)榇吮磉_(dá)式完全等價(jià)于(a*3)=(a*3)+2。5、左右結(jié)合性:自右至左參預(yù)運(yùn)算。例15:若a是int型變量,且a的初值為6,則計(jì)算表達(dá)式后a的值為_。a+=a-=a*a答案:-60詳解:表達(dá)式從左向右運(yùn)算,先計(jì)算表達(dá)式a=a-36后a為-30,再計(jì)算表達(dá)式a=a+a后a的值變?yōu)?60。(十二) 條件運(yùn)算: 1、條件運(yùn)算符的基本形式及功能:條件運(yùn)算是一種在兩個表達(dá)式的值中選擇一個的操作。它的一般形式為:e1?e2:e3它的操作過程為,若e1為真,則表達(dá)式的值為e2,若為假表

32、達(dá)式的值為e3。2、優(yōu)先級別:低于邏輯運(yùn)算,高于賦值運(yùn)算。3、運(yùn)算量:三元運(yùn)算量,e1一般為算術(shù)表達(dá)式,e2、e3可以是任意類型的表達(dá)式,條件表達(dá)式的值的類型為e2與e3二者中類型較高的。例16:若有條件表達(dá)式(exp)?a+:b-,則以下表達(dá)式中能完全等價(jià)于表達(dá)式(exp)的是_。答案:exp!=0詳解:對于表達(dá)式e1?e2:e3 ,e1一般為算術(shù)表達(dá)式、邏輯表達(dá)式、關(guān)系表達(dá)式,結(jié)果為1(真)或0(假)。也可以為數(shù)值exp,結(jié)果為結(jié)果為非0(真)或0(假)在本例中與exp完全等價(jià)的表達(dá)式是exp!=0。4、左右結(jié)合性:自右至左運(yùn)算。 例17:以下程序的運(yùn)行結(jié)果是_。 main() int k

33、=4,a=3,b=2,c=1; printf(“%d”,k<a?k:c<b?c:a); 答案:1 詳解:條件表達(dá)式是從右向左運(yùn)算,所以在本例中先計(jì)算表達(dá)式c<b?c:a的值,把各數(shù)值代入此表達(dá)式的值為1。再計(jì)算表達(dá)式k<a?k:1的值,因?yàn)閗<a為假,所以整個表達(dá)式的值為1。(十三) 逗號運(yùn)算 1、逗號運(yùn)算符的基本形式及功能: 逗號表達(dá)式的一般形式為: 表達(dá)式1,表達(dá)式2。逗號表達(dá)式的求解過程是:先求解表達(dá)式1,再求解表達(dá)式2。整個表達(dá)式的值是表達(dá)式2的值。2、優(yōu)先級別:逗號運(yùn)算符是所有運(yùn)算符中級別最低的。例18:以下符合C語言語法的賦值表達(dá)式是_。(A)d=9+

34、e+f=d+9 (B)d=(9+e,f=d+9)(C)d=9+e,e+,d+9 (D)d=9+e+=d+7答案:B 解析:表達(dá)式d=9+e+f=d+9中9+e+f=d+9是不正確的表示形式,因?yàn)橘x值號(=)左邊不能是表達(dá)式。表達(dá)式d=9+e,e+,d+9是逗號表達(dá)式,因?yàn)橘x值運(yùn)算符(=)的優(yōu)先級別高于逗號運(yùn)算符(,)。表達(dá)式d=9+e+=d+7中9+e+=d+7是不正確的表達(dá)式,因?yàn)橘x值號(=)左邊不能是表達(dá)式。 3、運(yùn)算量:二元運(yùn)算量。 4、左右結(jié)合性:從左向右運(yùn)算。 例19:假設(shè)所有變量均為整型,則表達(dá)式a=2,b=5,b+,a+b的值是_。 答案:8 解析:根據(jù)逗號運(yùn)算符從左向右運(yùn)算的原

35、則,首先把2和5分別賦值給了a,b。再計(jì)算表達(dá)式b+,b變?yōu)?,再計(jì)算表達(dá)式a+b的值,最后整個表達(dá)式的值是8。(十四) 強(qiáng)制類型轉(zhuǎn)換1、強(qiáng)制類型一般形式及功能:可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個表達(dá)式轉(zhuǎn)換成所需類型。例如:(double) a(將a轉(zhuǎn)換成double類型)其一般形式為:(類型名)(表達(dá)式)2、優(yōu)先級別:強(qiáng)制類型轉(zhuǎn)換運(yùn)算符與邏輯非(!)、自加(+)、自減(-)屬于同等級別,高于算術(shù)運(yùn)算符。3、運(yùn)算量:單元運(yùn)算量4、關(guān)于強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的進(jìn)一步說明:強(qiáng)制轉(zhuǎn)換表達(dá)式時,表達(dá)式應(yīng)該用括號括起來。如果寫成(int )x+y則只將x轉(zhuǎn)換成整型,然后與y相加。如果x原指定為float型,進(jìn)

36、行強(qiáng)制類型運(yùn)算后得到一個int型的中間變量,它的值等于x的整數(shù)部分(截去小數(shù)部分),而x的類型不變(仍為float型)。例20:main( )float x=3.6; int i; i=(int)x printf(“x=%f,i=%d”,x,i);輸出結(jié)果:x=3.600000,I=3解析:變量x進(jìn)行強(qiáng)制類型運(yùn)算后,其類型仍為float型,值仍為3.6。(十五) printf函數(shù)printf函數(shù)可以輸出任意類型的多個數(shù)據(jù)。1、printf函數(shù)的一般格式printf(格式控制,輸出表列)“格式控制”是用雙引號括起來的字符串,也稱“轉(zhuǎn)換控制字符串”,它包括兩種信息:格式說明和普通字符。格式說明是由

37、“%”和格式字符組成,如%d,%f等。它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。格式說明總是由”%”字符開始的。普通字符即需要原樣輸出的字符。輸出表列是指需要輸出的一些數(shù)據(jù),可以是表達(dá)式,它們之間用“,”隔開。2、格式控制的完整格式:% - 0 m.n l或h 格式字符下面對組成格式說明的各項(xiàng)加以說明:%:表示格式說明的起始符號,不可缺少。-:有-表示左對齊輸出,如省略表示右對齊輸出。0:有0表示指定空位填0,如省略表示指定空位不填。m.n:m指域?qū)?,即對?yīng)的輸出項(xiàng)在輸出設(shè)備上所占的字符數(shù)。N指精度。用于說明輸出的實(shí)型數(shù)的小數(shù)位數(shù)。為指定n時,隱含的精度為n=6位。l或h:l對整型指long

38、型,對實(shí)型指double型。h用于將整型的格式字符修正為short型。3、格式字符:格式字符用以指定輸出項(xiàng)的數(shù)據(jù)類型和輸出格式。 d格式:用來輸出十進(jìn)制整數(shù)。有以下幾種用法:%d:按整型數(shù)據(jù)的實(shí)際長度輸出。%md:m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出。%ld:輸出長整型數(shù)據(jù)。o格式:以無符號八進(jìn)制形式輸出整數(shù)。對長整型可以用“%lo”格式輸出。同樣也可以指定字段寬度用“%mo”格式輸出。例21: main() int a=-1; printf(“%d,%o”,a,a); 運(yùn)行結(jié)果:-1,177777 程序解析:-1在內(nèi)存單元中(以補(bǔ)碼形式存

39、放)為(1111111111111111)2,轉(zhuǎn)換為八進(jìn)制數(shù)為(177777)8。x格式:以無符號十六進(jìn)制形式輸出整數(shù)。對長整型可以用“%lx”格式輸出。同樣也可以指定字段寬度用“%mx”格式輸出。u格式:以無符號十進(jìn)制形式輸出整數(shù)。對長整型可以用“%lu”格式輸出。同樣也可以指定字段寬度用“%mu”格式輸出。c格式:輸出一個字符。s格式:用來輸出一個串。有幾中用法%s:例如:printf(“%s”,”CHINA”)輸出“CHINA”字符串(不包括雙引號)。%ms:輸出的字符串占m列,如字符串本身長度大于m,則突破獲m的限制,將字符串全部輸出。若串長小于m,則左補(bǔ)空格。%-ms:如果串長小于m

40、,則在m列范圍內(nèi),字符串向左靠,右補(bǔ)空格。%m.ns:輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側(cè),左補(bǔ)空格。%-m.ns:其中m、n含義同上,n個字符輸出在m列范圍的左側(cè),右補(bǔ)空格。如果n>m,則自動取n值,即保證n個字符正常輸出。f格式:用來輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出。有以下幾種用法:%f:不指定寬度,整數(shù)部分全部輸出并輸出6位小數(shù)。%m.nf:輸出共占m列,其中有n位小數(shù),如數(shù)值寬度小于m左端補(bǔ)空格。 %-m.nf:輸出共占n列,其中有n位小數(shù),如數(shù)值寬度小于m右端補(bǔ)空格。 e格式:以指數(shù)形式輸出實(shí)數(shù)??捎靡韵滦问剑?e:數(shù)字部分(又稱尾數(shù))輸

41、出6位小數(shù),指數(shù)部分占5位或4位。%m.ne和%-m.ne:m、n和”-”字符含義與前相同。此處n指數(shù)據(jù)的數(shù)字部分的小數(shù)位數(shù),m表示整個輸出數(shù)據(jù)所占的寬度。g格式:自動選f格式或e格式中較短的一種輸出,且不輸出無意義的零。4、關(guān)于printf函數(shù)的進(jìn)一步說明:如果想輸出字符“%”,則應(yīng)該在“格式控制”字符串中用連續(xù)兩個%表示,如:printf(“%f%”,1.0/3);輸出0.333333%。(十六) scanf函數(shù) scanf函數(shù)可以用來輸入任何類型的多個數(shù)據(jù)。1、scanf函數(shù)的一般格式scanf(格式控制,地址表列)“格式控制”的含義同printf函數(shù)。普通字符即需要原樣輸入的字符。地址

42、表列是指由若干個地址組成的表列,它們之間用“,”隔開。2、格式控制的完整格式:% * m l或h 格式字符格式字符與printf函數(shù)中的使用方式相同,以%d、%o、%x、%c、%s、%f、%e,無%u格式、%g格式??梢灾付ㄝ斎霐?shù)據(jù)所占列寬,系統(tǒng)自動按它截取所需數(shù)據(jù)。如:scanf(“%3d%3d”,&a,&b);輸入:123456系統(tǒng)自動將123賦給a,456賦給b。%后的“*”附加說明符,用來表示跳過它相應(yīng)的數(shù)據(jù)。例如:scanf(“%2d%*3d%2d”,&a,&b);如果輸入如下信息:1234567。將12賦給a,67賦給b。第二個數(shù)據(jù)”345”被跳過不

43、賦給任何變量。輸入數(shù)據(jù)時不能規(guī)定精度,例如:scanf(“%7.2f”,&a);是不合法的,不能企圖輸入:12345.67而使a的值為12345.67。3、輸入數(shù)據(jù)流分隔根據(jù)格式字符的含義從輸入流中取得數(shù)據(jù),當(dāng)輸入流中數(shù)據(jù)類型與格式字符要求不符時,就認(rèn)為這一項(xiàng)結(jié)束。如:scanf(“%d%c%f”,&a,&b,&c);如果輸入如下信息:1234r1234.567則scanf函數(shù)在接收數(shù)據(jù)時發(fā)現(xiàn)”r”類型不匹配,于是把”1234”轉(zhuǎn)換成整型賦值給a,把”r”賦給變量b,最后把”1234.567”轉(zhuǎn)換成實(shí)型數(shù)據(jù)賦給c。根據(jù)格式項(xiàng)中指定的域?qū)挿指舫鰯?shù)據(jù)項(xiàng)。如語句:sc

44、anf(“%2d%3f%4f”,&a,&b,&c);如果輸入如下信息:123456789012345 則scanf函數(shù)在接收數(shù)據(jù)時根據(jù)域?qū)挵?2賦值給a,345賦值給b,6789賦值給c。隱示分隔符??崭?、跳格符(t)、換行符(n)都是C語言認(rèn)定的數(shù)據(jù)分隔符。顯示分隔符。在scanf函數(shù)的兩個格式說明項(xiàng)間有一個或多個普通字符,那么在輸入數(shù)據(jù)時,在兩個數(shù)據(jù)之間也必須以這一個或多個字符分隔。如語句:scanf(“a=%d,b=%f,c=%f”,&a,&b,&c);則輸入數(shù)據(jù)應(yīng)該為: a=1234,b=67.8,c=98.1234、關(guān)于scanf函數(shù)的

45、進(jìn)一步說明:scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名。例如,如果a、b為整型變量,則scanf(“%d,%d”,a,b);是不對的,應(yīng)將”a,b”改為”&a,&b”。如果在“格式控制”字符串中除了格式說明以外還有其它字符,則在輸入數(shù)據(jù)時應(yīng)輸入與這些字符相同的字符。例如:scanf(“%d,%d”,&a,&b);輸入時應(yīng)輸入:3,4。3與4之間的逗號應(yīng)與scanf函數(shù)中的“格式控制”中的逗號相對應(yīng),輸入其它符號是不對的。在用“%c”格式輸入字符時,空格字符和轉(zhuǎn)義字符都作為有效字符輸入。scanf(“%c%c%c”,&c1,&

46、c2,&c3);如輸入:a b c 。字符a賦給c1,字符(空格) 賦給c2,字符b 賦給c3。5、scanf的停止與返回格式參數(shù)中的格式項(xiàng)用法-正常結(jié)束。發(fā)生格式項(xiàng)與輸入域不匹配時-不正常退出:(十七) getchar、putchar函數(shù)1、getchar函數(shù)getchar函數(shù)是從終端輸入一個字符。getchar函數(shù)沒有參數(shù),其一般形式為:getchar( )。2、putchar函數(shù)putchar函數(shù)的作用是向終端輸出一個字符。二、練習(xí)(一)選擇題1、下面四個選項(xiàng)中,均是不合法的用戶標(biāo)識符的選項(xiàng)是_。(A)A P_0 do (B)float la0 _a(C)b-a goto int

47、 (D)_123 temp INT2、若x,i,j和k都是int型變量,則計(jì)算下面表達(dá)式后,x的值為_。x=(i=4,j=16,k=32)(A)4 (B)16 (C)32 (D)523、下列四個選項(xiàng)中,均是不合法的整型常量的選項(xiàng)是_。(A)-0f1 -0xffff 0011(B)-0xcdf 017 12,3456(C)-018 999 5e2(D)-0x48eg -068 03f4、下面四個選項(xiàng)中,均是合法浮點(diǎn)數(shù)的選項(xiàng)是_。(A)1e1 5e-9.4 03e2(B)-.60 12e-4 -8e5(C)123e 1.2e-.4 2e-1(D)-e3 .8e-4 5.e-0 5、下面四個選項(xiàng)中,

48、均是合法字符的選項(xiàng)是_。(A) xf (B) 017 n(C)018 f xab(D)0 101 xlf6、以下不正確的敘述是_。(A)在C程序中,逗號運(yùn)算符的優(yōu)先級最低。(B)在C程序中,APH和aph是兩個不同的變量(C)若a和b類型相同,在計(jì)算機(jī)了賦值表達(dá)式a=b后,b的值不變。(D)當(dāng)從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,對于實(shí)型變量只能輸入實(shí)型數(shù)據(jù)。第三章 C程序的流程設(shè)計(jì)一、算法1、算法的概念為解決某一個問題而采取的方法和步驟,就稱為算法。2、算法的性質(zhì)有窮性:一個算法應(yīng)包含有限的操作步驟一個初始:此動作序列只有一個初始動作確定性:算法中的每一個步驟都應(yīng)當(dāng)是確定性的,僅有

49、一個后繼動作。有一個或多個輸出:序列終止表示問題得到解答或問題沒有解答,沒有輸出的算法是沒有意義的。二、選擇型程序設(shè)計(jì)1、if 語句的形式 if(條件表達(dá)式) 語句 if(條件表達(dá)式) 語句1 else 語句 2 注意:if語句中的條件表達(dá)式一般為邏輯表達(dá)式或關(guān)系表達(dá)式,但也可以是任意的數(shù)值類型(包括整型、實(shí)型、字符型、指針類型),例如下列語句也是合法的。 if(a) printf(“%d” ,a);在if語句中,分號是語句的結(jié)束標(biāo)志。在if和else后面可以只含一個內(nèi)嵌的操作語句,也可以有多個操作語句,此時用花括號將幾個語句括起來成為一個復(fù)合語句。例1:以下不正確的if語句形式是( )。A)

50、if(x>y&&x!=y);B)if(x=y) x+=y;C)if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y);D)if(x<y) x+;y+;答案:C詳解:scanf(“%d”,&x)末尾應(yīng)加分號,因?yàn)榉痔柺钦Z句不可缺少的部分。例2:已知int x=10,y=20,z=30;以下語句執(zhí)行后x,y,z的值是( )。if(x>y)z=x;x=y;y=z; 答案:x,y,z的值分別是:20 30 30 詳解:在此語句中,條件x>y為假,所以只執(zhí)行x=y;y=z;兩條語句。例3、以下不正確的語句是(

51、 )A)if(x>y);B)if(x=y)&&(x!=0) x+=y;C)if(x!=y) scanf(“%d”,&x);D)if(x<y)x+;y+;答案:D詳解:分號是語句結(jié)束的標(biāo)志,y+的末尾無分號,所以y+不是合法的語句。2、if 的嵌套 if(條件1) if(條件2) 語句1 else 語句2 else if(條件3) 語句3 else 語句4例4:以下程序的輸出結(jié)果是( )main( )int a=100,x=10,y=20,ok1=5,ok2=0;if(x<y)if(y!=10)if (!ok1)a=1;else if(ok2) a=10; printf(“%dn”,a); 答案:100詳解:把10、20、5、0分別給變量x、y、ok1、ok2賦值,執(zhí)行條件語句后a值沒有改變,所以a值仍是原值100。3、switch結(jié)構(gòu)switch語句是多分支選擇語句,其形式如下:switch(表達(dá)式)case 常量表達(dá)式1:語句1case 常量表達(dá)式2:語句2default:語句n+1注意:1、switch后面括弧內(nèi)的“表達(dá)式”,可以是整型表達(dá)式或字符型表達(dá)式,也可以枚舉型數(shù)據(jù)。2、當(dāng)表達(dá)式的值與某一個case后面的常量表達(dá)式的值相等時,就執(zhí)行此case后面的語句,若所有的case中的常量表達(dá)式的值都沒有與表達(dá)式的值

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論