C語(yǔ)言培訓(xùn)講稿_第1頁(yè)
C語(yǔ)言培訓(xùn)講稿_第2頁(yè)
C語(yǔ)言培訓(xùn)講稿_第3頁(yè)
C語(yǔ)言培訓(xùn)講稿_第4頁(yè)
C語(yǔ)言培訓(xùn)講稿_第5頁(yè)
已閱讀5頁(yè),還剩260頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C語(yǔ)言講授內(nèi)容21世紀(jì)高等學(xué)校精品規(guī)劃教材2011年6月2日陳立C語(yǔ)言的概論編譯環(huán)境變量運(yùn)算符的介紹表達(dá)式的概念輸入輸出函數(shù)的運(yùn)用順序程序設(shè)計(jì)程序設(shè)計(jì)的根本概念程序的概念存儲(chǔ)在計(jì)算機(jī)中的可以被計(jì)算機(jī)識(shí)別并運(yùn)行的一系列指令什么是程序設(shè)計(jì)

就是用戶(hù)告訴計(jì)算機(jī)按照程序員的思路一步一步的去工作。程序設(shè)計(jì)的一般過(guò)程問(wèn)題分析與描述、編寫(xiě)程序代碼、運(yùn)行與調(diào)試程序設(shè)計(jì)的方法面向過(guò)程的程序設(shè)計(jì)方法面向?qū)ο蟮某绦蛟O(shè)計(jì)方法程序設(shè)計(jì)語(yǔ)言大致可分為三類(lèi):〔1〕機(jī)器語(yǔ)言計(jì)算機(jī)的“自然語(yǔ)言”,由“0”和“1”組成的符號(hào)序列表示指令。機(jī)器語(yǔ)言程序可以被計(jì)算機(jī)直接執(zhí)行?!?〕匯編語(yǔ)言用英文單詞的縮寫(xiě)來(lái)表示指令,與機(jī)器語(yǔ)言指令一一對(duì)應(yīng)。執(zhí)行時(shí)需要通過(guò)“匯編程序”轉(zhuǎn)換為機(jī)器語(yǔ)言執(zhí)行?!?〕高級(jí)語(yǔ)言類(lèi)似于人類(lèi)的自然語(yǔ)言,一條語(yǔ)句可對(duì)應(yīng)多條指令。執(zhí)行時(shí)可通過(guò)“編譯程序”或者“解釋程序”轉(zhuǎn)換為機(jī)器語(yǔ)言執(zhí)行。C語(yǔ)言屬于高級(jí)語(yǔ)言中的一種,由C語(yǔ)言直接編寫(xiě)的代碼稱(chēng)為C語(yǔ)言“源程序”,計(jì)算機(jī)無(wú)法直接執(zhí)行,而必須通過(guò)編譯程序轉(zhuǎn)換成為機(jī)器語(yǔ)言程序再由計(jì)算機(jī)執(zhí)行,即生成“目標(biāo)程序”。

C語(yǔ)言源程序的后綴名為“.c”,編譯之后生成的目標(biāo)程序后綴名為“.obj”,再由連接程序與庫(kù)函數(shù)連接生成后綴名為“.exe”的可執(zhí)行文件,在windows中直接執(zhí)行。C語(yǔ)言概況C語(yǔ)言概況C語(yǔ)言的特點(diǎn)C語(yǔ)言是具有低級(jí)語(yǔ)言功能的高級(jí)語(yǔ)言。C語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。運(yùn)算符豐富,表達(dá)式能力強(qiáng)。數(shù)據(jù)結(jié)構(gòu)豐富,便于數(shù)據(jù)的描述與存儲(chǔ)。C語(yǔ)言是結(jié)構(gòu)化、模塊化的編程語(yǔ)言??墒褂煤甓x,可移植性好。缺乏之處:運(yùn)算符及其優(yōu)先級(jí)過(guò)多、語(yǔ)法定義不嚴(yán)格等C程序開(kāi)發(fā)過(guò)程〔1〕確定數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)的組織形式。在C語(yǔ)言中,數(shù)據(jù)結(jié)構(gòu)是通過(guò)數(shù)據(jù)類(lèi)型的形式表達(dá)出來(lái)的。即將需要處理的數(shù)據(jù)用C語(yǔ)言支持的形式表示?!?〕確定算法。算法:求解的步驟地描述,也即操作的具體步驟。將求解的步驟用特定的形式進(jìn)行描述。〔3〕編寫(xiě)程序代碼。將算法轉(zhuǎn)換成為C語(yǔ)言程序代碼。C程序開(kāi)發(fā)過(guò)程〔4〕編譯連接,修改錯(cuò)誤。通過(guò)編譯器將C語(yǔ)言源程序轉(zhuǎn)換成為可執(zhí)行的目標(biāo)程序。C語(yǔ)言編譯器能夠自動(dòng)尋找局部程序錯(cuò)誤〔主要是語(yǔ)法錯(cuò)誤〕,提示錯(cuò)誤原因及錯(cuò)誤位置。在這些錯(cuò)誤未被改正之前,不會(huì)生成目標(biāo)程序?!?〕運(yùn)行,修改錯(cuò)誤。局部錯(cuò)誤編譯器無(wú)法查出,但會(huì)導(dǎo)致程序中斷運(yùn)行,稱(chēng)為運(yùn)行時(shí)錯(cuò)誤;有些程序能夠正常運(yùn)行,但運(yùn)行結(jié)果與期望的結(jié)果不符,稱(chēng)為邏輯錯(cuò)誤。運(yùn)行時(shí)錯(cuò)誤和邏輯錯(cuò)誤出現(xiàn)時(shí),都必須返回編輯源程序,修改后再編譯運(yùn)行。C語(yǔ)言的介紹目前我們所用到的C語(yǔ)言有很多種其中以Microsoftc、turboc、borlandc、Quickc(QC)常見(jiàn),他們?cè)诠δ苌鲜且粯拥?。都是?shí)現(xiàn)C程序的編輯和編譯。但在使用的過(guò)程中有些不一樣的地方。所以請(qǐng)大家按照自己的個(gè)人習(xí)慣去選擇。編輯程序就是對(duì)代碼進(jìn)行錄入和排版,使各種語(yǔ)句組合在一起形成一個(gè)整體編譯就是對(duì)編輯好的C代碼程序進(jìn)行一次翻譯使之生成機(jī)器可以識(shí)別的代碼簡(jiǎn)單的C語(yǔ)言程序舉例1【例1-1】在計(jì)算機(jī)屏幕上輸出”Hello,World!”#include"stdio.h"main(){ printf("HelloWorld!\n"); getch〔〕;}main是主函數(shù)名〔有且只有一個(gè)〕語(yǔ)句〔分號(hào)“;”結(jié)束〕#include“stdio.h”是一條預(yù)處理命令printf打印函數(shù)說(shuō)明:簡(jiǎn)單的C語(yǔ)言程序舉例2如:試求兩個(gè)整數(shù)的和并輸出結(jié)果Main(){ Inta,b,sum; a=123; b=456; Printf(“兩數(shù)的和是:%d”,sum); Getch();}“%d,%f”為輸出格式符,分別表示十進(jìn)制整型和實(shí)型,它指定輸出結(jié)果時(shí)的數(shù)據(jù)類(lèi)型和格式int表示a、b的數(shù)據(jù)類(lèi)型是整型a=123賦值語(yǔ)句表示a的值是123、b的的值是456說(shuō)明簡(jiǎn)單的C語(yǔ)言程序舉例3【例1-3】輸入矩形的兩條邊長(zhǎng),求矩形的面積。

#include"stdio.h"voidmain(){ inta,b,s; scanf("%d,%d",&a,&b); s=area(a,b); printf("areais%d\n",s);}intarea(inta,intb){ ints; s=a*b; returns; }簡(jiǎn)單的C語(yǔ)言程序說(shuō)明說(shuō)明程序由主函數(shù)main和被調(diào)用函數(shù)area組成兩個(gè)函數(shù)在位置上是獨(dú)立的scanf是C語(yǔ)言提供的標(biāo)準(zhǔn)輸入函數(shù)“&”的含義是取地址C語(yǔ)言程序總結(jié)C程序由函數(shù)組成。每個(gè)C程序有且僅有一個(gè)主函數(shù),該主函數(shù)的函數(shù)名規(guī)定為main。一個(gè)C程序由一個(gè)main函數(shù)和假設(shè)干個(gè)子函數(shù)構(gòu)成。函數(shù)可分為兩局部:函數(shù)說(shuō)明和函數(shù)體。C程序的書(shū)寫(xiě)格式自由,一行內(nèi)可以寫(xiě)幾條語(yǔ)句,一條語(yǔ)句也可以寫(xiě)在多行上,每條語(yǔ)句后必須以“;”作為語(yǔ)句的結(jié)束。多條語(yǔ)句構(gòu)成的復(fù)合語(yǔ)句要以一對(duì){}括起來(lái)。C語(yǔ)言程序總結(jié)C程序的執(zhí)行總是從主函數(shù)main開(kāi)始,并在主函數(shù)中結(jié)束。主函數(shù)的位置在程序中是任意的,其他函數(shù)總是通過(guò)函數(shù)調(diào)用語(yǔ)句來(lái)執(zhí)行。主函數(shù)可以調(diào)用任何其他函數(shù),任何非主函數(shù)之間也可以相互調(diào)用,但是均不能調(diào)用主函數(shù)。C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句??梢杂?*……*/對(duì)C程序中的任何局部作注釋。C程序的本卷須知

每一個(gè)都必須有一個(gè)main()函數(shù)函數(shù)體由大括弧{}括起來(lái)括號(hào)是一組一組輸入的大括弧內(nèi)每一條語(yǔ)句后必須有一分號(hào)符號(hào)和字母都要用半角格式的請(qǐng)大家試一試寫(xiě)一C程序完成以下樣例*************

verygood!*************Main(){Printf(“************************\n”);Printf(“verygood!\n”);Printf(“************************”);getch();}算法概述算法的含義算法是指解決問(wèn)題的方法和步驟。正確的算法有以下幾個(gè)特征:可行性確定性有窮性輸入輸出算法介紹不正確的算法第1步:令n等于0。第2步:n加1。第3步:轉(zhuǎn)向第2步。正確的算法第1步:令n等于0。第2步:n加1。第3步:如果n小于100,那么轉(zhuǎn)向第2步;否那么停止。算法表示傳統(tǒng)流程圖、N-S圖、偽代碼、自然語(yǔ)言和計(jì)算機(jī)程序語(yǔ)言等傳統(tǒng)流程圖算法舉例【例1-4】畫(huà)出求1+2+3+…+100之和的流程圖算法表示N-S圖TC語(yǔ)言編程環(huán)境TurboC2.0編程環(huán)境C語(yǔ)言編程環(huán)境TC的根本配置C語(yǔ)言編程環(huán)境關(guān)鍵操作F2

將當(dāng)前文件以指定的文件名存盤(pán)續(xù)表F3

裝入指定文件F7

調(diào)試程序,執(zhí)行單步操作,可進(jìn)入被調(diào)用函數(shù)F8

調(diào)試程序,執(zhí)行單步操作,不進(jìn)入被調(diào)用函數(shù)F9

編譯、連接源程序,生成可執(zhí)行文件F10

激活主菜單Ctrl+F9

運(yùn)行程序Alt+F5

用戶(hù)窗口,用來(lái)查看運(yùn)行結(jié)果。C語(yǔ)言編程環(huán)境關(guān)鍵操作編譯〔Ctrl+F7〕。生成e1_1.obj連接〔F7〕。生成e1_1.exe運(yùn)行〔Ctrl+F5〕。執(zhí)行e1_1.exe請(qǐng)參照本章例題編寫(xiě)一個(gè)C程序,輸出以下信息:**********************************

Thisismyfirstcprogram.**********************************用TurboC2.0或VisualC++6.0調(diào)試本章的3個(gè)程序C語(yǔ)言的數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型概述整數(shù)類(lèi)型整數(shù)類(lèi)型簡(jiǎn)稱(chēng)整型,整型數(shù)據(jù)沒(méi)有小數(shù)局部。整型可分為:根本整型:用int表示。短整型:用shortint或short表示。長(zhǎng)整型:用longint或long表示。整數(shù)類(lèi)型介紹實(shí)型數(shù)據(jù)類(lèi)型實(shí)數(shù)類(lèi)型簡(jiǎn)稱(chēng)實(shí)型〔小數(shù)〕,有時(shí)又稱(chēng)浮點(diǎn)數(shù)據(jù)類(lèi)型包括:?jiǎn)尉雀↑c(diǎn)數(shù)類(lèi)型:簡(jiǎn)稱(chēng)浮點(diǎn)類(lèi)型,類(lèi)型名為float。雙精度浮點(diǎn)數(shù)類(lèi)型:簡(jiǎn)稱(chēng)雙精度類(lèi)型,類(lèi)型名為double。長(zhǎng)雙精度類(lèi)型:類(lèi)型名為longdouble。實(shí)型數(shù)據(jù)類(lèi)型字符型數(shù)據(jù)字符類(lèi)型的數(shù)據(jù)簡(jiǎn)稱(chēng)字符型數(shù)據(jù)C語(yǔ)言中用char表示,在內(nèi)存中占一個(gè)字節(jié)。字符類(lèi)型的數(shù)據(jù)包括計(jì)算機(jī)所用編碼字符集中的所有字符。常用的ASCII字符集,共128個(gè)。擴(kuò)展的ASCII字符集共256個(gè)字符。字符數(shù)據(jù)與整型數(shù)據(jù)是相似的〔除了占用的存儲(chǔ)空間不同〕字符型數(shù)據(jù)算術(shù)運(yùn)算符算術(shù)運(yùn)算符

+ 加

- 減 * 乘

/ 除

% 余(mod)優(yōu)先級(jí)別是和數(shù)學(xué)上一樣的:先加減后乘除算術(shù)運(yùn)算符、表達(dá)式如:

a=3+5 a=5-2 a=3*2 a=4/2 a=3%2是將右邊的計(jì)算機(jī)結(jié)果放到左邊的A中試一試試求40除以23的余數(shù)Main(){Inta; /*聲明一個(gè)整型變量*/a=40%23;Printf(“40除以23的余數(shù)是:%d”,a);Getch();}這是一句注釋增強(qiáng)程序的可閱讀性試求兩數(shù)的和、差、積、商、余Main(){Inta,b,c,d,e;A=40+20;b=40-20;c=40*20;d=40/20;e=40%20;Printf(“和是%d\n差是%d\n積是%d\n商是%d\n余是%d”,a,b,c,d,e);Getch();}占位符%d標(biāo)志輸出是一整型數(shù)據(jù)%f標(biāo)志輸出是一實(shí)型數(shù)據(jù)%c標(biāo)志輸出是一字符型型數(shù)據(jù)標(biāo)識(shí)符標(biāo)識(shí)符所謂標(biāo)識(shí)符是指給程序中的變量、常量、數(shù)組、函數(shù)、結(jié)構(gòu)體、文件等對(duì)象的名字。簡(jiǎn)言之就是一名字,可以由程序設(shè)計(jì)者指定,也可以由系統(tǒng)指定。(可以是26個(gè)英文字母包括大小寫(xiě)(共52個(gè))、數(shù)字0~9、下劃線_)標(biāo)識(shí)符可分為:關(guān)鍵字、特定字符、一般標(biāo)識(shí)符其命名規(guī)那么:以字母或下劃線開(kāi)頭,由字母、數(shù)字或下劃線組成的序列。大小寫(xiě)敏感。如Name和name是兩個(gè)不同的標(biāo)識(shí)符不能使用系統(tǒng)的關(guān)鍵字標(biāo)識(shí)符命名建議不建議使用系統(tǒng)預(yù)定義標(biāo)識(shí)符(特定字符)如define、include、scanf、printf盡量做到“見(jiàn)名知義”如max、name等,不用像abc、a1、a2等標(biāo)識(shí)符。防止使用易混字符1、l、i;0、o;2、z等以下是合法的標(biāo)識(shí)符 Sum,PI,_sysflayNumber_of_movesJ5_7以下是不合法的標(biāo)識(shí)符 Number-of-moves(含有非法的字符-) Pieceflag(含有非法的字符空格) 5-7-9〔數(shù)字開(kāi)頭〕 $123.4〔$開(kāi)頭,含有非法字符〕標(biāo)識(shí)符舉例標(biāo)識(shí)符的關(guān)鍵關(guān)鍵字是系統(tǒng)自定義使用的C語(yǔ)言中的常量常量指在程序運(yùn)行中其值不能被改變的量??煞譃椋褐苯映A亢头?hào)常量直接常量:就是時(shí)常所說(shuō)的常數(shù)〔常量〕。如:整型常量〔1、2、3、4〕、實(shí)型常量〔3.14、5e-3〕、字符型常量〔‘a(chǎn)’〕、字符串常量等(“student”、“hello”)。符號(hào)常量:是在一個(gè)程序或程序的一局部中指定的用名字代表的常量,從字面上不能直接看出其類(lèi)型和值。整型常量十進(jìn)制整型常量:同數(shù)學(xué)上的表示方法,如168、-1、65535等。八進(jìn)制整型常量:以0開(kāi)頭,由數(shù)字0~7組成,如0101、-045等。十六進(jìn)制整型常量:以0x或0X開(kāi)頭的數(shù)字序列表示十六進(jìn)制數(shù),如0x12,整型常量的本卷須知如要說(shuō)明是無(wú)符號(hào)類(lèi)型那么在數(shù)據(jù)后加u或U、如65535u、168U等。如果說(shuō)明為長(zhǎng)整型,那么在數(shù)據(jù)后面加l或L,如-1L。八進(jìn)制、十進(jìn)制和十六進(jìn)制只是整數(shù)的不同書(shū)寫(xiě)形式,提供多種寫(xiě)法只是為了使用方便,我們可以根據(jù)需要選擇適當(dāng)?shù)臅?shū)寫(xiě)方式。C語(yǔ)言中不用二進(jìn)制形式表示整數(shù)。C語(yǔ)言中,一般只使用無(wú)符號(hào)的八進(jìn)制和十六進(jìn)制數(shù),而不使用有符號(hào)的八進(jìn)制和十六進(jìn)制數(shù),因此沒(méi)有專(zhuān)門(mén)的無(wú)符號(hào)八進(jìn)制和十六進(jìn)制標(biāo)識(shí)符。整型常量舉例以下是非法的整型常量:09:0開(kāi)頭應(yīng)該是八進(jìn)制,但9不是合法的八進(jìn)制數(shù)字。0X6G:0X開(kāi)頭應(yīng)該是十六進(jìn)制,但G不是合法的十六進(jìn)制數(shù)字。以下是合法的整型常量:00000101:八進(jìn)制,相當(dāng)于十進(jìn)制的65。-012:八進(jìn)制,相當(dāng)于十進(jìn)制的-10。65535LU:十進(jìn)制,無(wú)符號(hào)長(zhǎng)整型。0XFF:十六進(jìn)制,相當(dāng)于十進(jìn)制的255。實(shí)型常量實(shí)型常量只能用十進(jìn)制形式表示表示形式:小數(shù)形式。由數(shù)字序列和小數(shù)點(diǎn)組成,如3.1415926、-0.15、.15、2.等都是合法的實(shí)型常量。指數(shù)形式。由十進(jìn)制數(shù)加上階碼標(biāo)志“e”或“E”及階碼組成,如3.14e-4或3.14E-4表示3.14×10-4。實(shí)型常量的本卷須知字母e或E之前的尾數(shù)局部必須有數(shù)字,例如E2是不合法的。e或E后面的指數(shù)局部必須是整數(shù),指數(shù)局部無(wú)整數(shù)或?yàn)樾?shù)均是錯(cuò)誤的,例如5e和5E-5.5均是不合法的表示。C語(yǔ)言中,默認(rèn)實(shí)型常量為double類(lèi)型,假設(shè)有后綴“f”或“F”,那么為float類(lèi)型。字符常量單個(gè)字符常量:字符型常量是由一對(duì)單引號(hào)括起來(lái)的單個(gè)字符構(gòu)成例如'A'、'b'、'8

字符‘A’~‘Z’的ASCII碼值是65~90。字符‘a(chǎn)’~‘z’的ASCII碼值是97~122。字符‘0’~‘9’的ASCII碼值是48~57。空格字符'□'的ASCII碼值是32。

字符常量分單個(gè)字符和轉(zhuǎn)義字符常量字符常量中的轉(zhuǎn)義字符字符串常量字符串常量是由一對(duì)雙引號(hào)括起的字符序列,例如“1234567”、“Hello

World”等都是字符串常量。"\\123\101"共有5個(gè)字符占6個(gè)字節(jié),其中\(zhòng)\、\101分別代表一個(gè)字符,輸出為\123A

符號(hào)常量舉例【例2-1】輸入圓的半徑,計(jì)算周長(zhǎng)和面積。#definePI3.14159voidmain(){floatr,c,s;scanf("%f",&r);c=2*PI*r;s=PI*r*r;printf("r=%f,c=%f,s=%f\n",r,c,s);}定義符號(hào)常量C語(yǔ)言中的變量在程序運(yùn)行過(guò)程中,其存儲(chǔ)的值可以被改變的量稱(chēng)為變量變量必須通過(guò)標(biāo)識(shí)符進(jìn)行說(shuō)明,稱(chēng)為變量名。變量名和內(nèi)存單元地址存在映射關(guān)系,程序可以通過(guò)變量名尋址,從而訪問(wèn)其存儲(chǔ)的數(shù)據(jù)。01001101……doublea;&a=63006301630263036304630563066307變量的定義和說(shuō)明數(shù)據(jù)類(lèi)型變量名1[,變量名2,…,變量名n];inti,j,k;floatx;longa,b,c;4個(gè)根本要素:名字、類(lèi)型、初值和作用域變量的定義和說(shuō)明變量名為標(biāo)識(shí)符的一種。變量的數(shù)據(jù)類(lèi)型可以是根本數(shù)據(jù)類(lèi)型,也可以是復(fù)雜數(shù)據(jù)類(lèi)型。變量的作用域是指變量在程序中有定義的范圍,即該變量名在某段代碼區(qū)域是否有意義。變量需要賦初值。沒(méi)有被賦值的變量其初值取決于存儲(chǔ)類(lèi)型,靜態(tài)存儲(chǔ)的變量將自動(dòng)為0,否那么被隨機(jī)初始化。變量的賦值方式變量賦初值的兩種方式變量說(shuō)明時(shí)直接賦初值,稱(chēng)為變量的初始化,如:inta=10,b=9,c=6;floatx=3.0,y=1.0,z=2.0;用賦值語(yǔ)句賦初值,如:floatx;x=10.0;變量的使用編譯系統(tǒng)將對(duì)每一個(gè)變量根據(jù)它被定義的類(lèi)型分配相應(yīng)的存儲(chǔ)單元。變量存儲(chǔ)單元地址可用“&變量名”求得??梢杂瞄L(zhǎng)度運(yùn)算符sizeof()求出任意類(lèi)型變量存儲(chǔ)單元的字節(jié)數(shù)。編譯系統(tǒng)根據(jù)變量被定義的類(lèi)型檢查該變量進(jìn)行運(yùn)算的合法性。如果沒(méi)有給變量賦初始值,普通變量將存儲(chǔ)隨機(jī)值,直到給它賦值為止。整形數(shù)據(jù)的存儲(chǔ)C語(yǔ)言中的整型數(shù)據(jù)分為有符號(hào)和無(wú)符號(hào)兩大類(lèi)〔在內(nèi)存中一般其最高位〔最左邊一位〕表示數(shù)的符號(hào),以0表示正1表示負(fù),數(shù)值以補(bǔ)碼形式存放。正數(shù)的補(bǔ)碼就是該數(shù)的二進(jìn)制數(shù)。負(fù)數(shù)的補(bǔ)碼就是:先取該數(shù)的絕對(duì)值;然后以二進(jìn)制形式表示;再對(duì)其取反;然后加1。如-10的補(bǔ)碼:0000000000001010取反11111111111110101再加1得到1111111111110110所以-10的16位存儲(chǔ)形式為:1111111111110110

inta=65,b=32767,c=-1;unsigned

inta=65,b=65535;整型數(shù)據(jù)的存儲(chǔ)舉例2字節(jié)的int型整數(shù)的補(bǔ)碼整型數(shù)據(jù)的存儲(chǔ)整形數(shù)據(jù)的補(bǔ)碼轉(zhuǎn)換負(fù)數(shù)的轉(zhuǎn)換步驟如下:32768取絕對(duì)值,如|-32768|等于32768216-|a|,如216-|-32768|等于65536–32768等于32768轉(zhuǎn)換成二進(jìn)制,如1000000000000000〔32768等于215〕數(shù)據(jù)的存儲(chǔ)實(shí)型數(shù)據(jù)的存儲(chǔ)(在計(jì)算機(jī)內(nèi)部凡實(shí)數(shù)都是以浮點(diǎn)形式存儲(chǔ)一般用4個(gè)字節(jié)前三個(gè)字節(jié)存放數(shù)字局部,一個(gè)字節(jié)存放指數(shù)局部)

字符數(shù)據(jù)的存儲(chǔ)與使用

標(biāo)識(shí)符、常量與變量舉例【例2-2】演示字符數(shù)據(jù)的存儲(chǔ)和引用。#include<stdio.h>voidmain(){ charc; inti;c='A'; i=c; printf("c=%d,c=%c\n",c,c); printf("i=%d,i=%c\n",i,i); c=c+32; printf("c=%c\n",c); c=0x80; printf("c=%c,c=%d\n",c,c);}運(yùn)算符與表達(dá)式學(xué)習(xí)運(yùn)算符要注意以下幾方面問(wèn)題運(yùn)算符的功能。運(yùn)算符與操作對(duì)象即操作數(shù)〔包括常量、變量、函數(shù)調(diào)用等〕的關(guān)系:操作數(shù)的個(gè)數(shù)〔單目、雙目、三目〕。求操作數(shù)的類(lèi)型〔如求余運(yùn)算符%要求操作數(shù)是整型〕。結(jié)合方向運(yùn)算符的優(yōu)先級(jí)。運(yùn)算結(jié)果的數(shù)據(jù)類(lèi)型運(yùn)算符連接操作數(shù)形成的式子叫表達(dá)式。算術(shù)運(yùn)算符算術(shù)運(yùn)算符與算術(shù)表達(dá)式+〔加〕、-〔減〕、*〔乘〕、/〔除〕、%〔取模,或稱(chēng)求余運(yùn)算符〕。雙目運(yùn)算符,結(jié)合方向均為從左到右。%〔取?!尺\(yùn)算符僅用于整型變量或整型常量的運(yùn)算,a%b結(jié)果為a除以b的余數(shù),余數(shù)的符號(hào)與被除除數(shù)相同,如:7%3的值為1;17%-3的結(jié)果為2;-19%4的結(jié)果為-3。+、-、*、/運(yùn)算符的兩個(gè)操作數(shù)既可以是整數(shù),也可以是實(shí)數(shù)。/〔除法〕運(yùn)算符,當(dāng)對(duì)兩個(gè)整型的數(shù)據(jù)相除時(shí)為整除操作數(shù)據(jù)類(lèi)型的轉(zhuǎn)換強(qiáng)制類(lèi)型轉(zhuǎn)換〔顯式轉(zhuǎn)換〕運(yùn)算符:〔類(lèi)型〕例如:(double)a(int)(x+y)(float)5/3表達(dá)式一定要加括號(hào)〔因強(qiáng)制類(lèi)型轉(zhuǎn)換是單目運(yùn)算,優(yōu)先級(jí)高〕,例如上面最后一個(gè)表達(dá)式中只是將5轉(zhuǎn)變成float型,而不是將5/3轉(zhuǎn)變成float型。假設(shè)對(duì)變量實(shí)型顯式轉(zhuǎn)換,將得到新類(lèi)型的一個(gè)值,原變量的類(lèi)型及其存儲(chǔ)值均不變。類(lèi)型轉(zhuǎn)換舉例【例2-5】演示強(qiáng)制類(lèi)型轉(zhuǎn)換。#include<stdio.h>voidmain(){ inti; floatf; f=3.1415926; printf("i=%d,f=%f\n",i,f); i=(int)f; printf("i=%d\n",i); f=5/3; printf("f=%f\n",f); f=(float)5/3; printf("f=%f\n",f); printf("f=%d\n",f);/*實(shí)數(shù)按整型數(shù)方式輸出*/ printf("i=%f\n",i);/*整型按實(shí)數(shù)方式輸出*/}自加自減運(yùn)算符與表達(dá)式自增自減運(yùn)算符:++和–單目運(yùn)算符,右結(jié)合作用對(duì)象必須是變量前綴運(yùn)算inti=5,j; j=++i;j等于6?!蚕仍鲋岛笠谩澈缶Y運(yùn)算inti=5,j; j=i++;j等于5。〔先引用后增值〕賦值運(yùn)算符與賦值表達(dá)式賦值運(yùn)算符與賦值表達(dá)式變量=表達(dá)式“=”是賦值運(yùn)算符,不同于等號(hào)〔等號(hào)是==〕。右結(jié)合inta,b;a=b=100;連續(xù)賦值,只有最后一步有效。例如:inta;a=100;a=200;賦值運(yùn)算符的優(yōu)先級(jí)較低〔只高于逗號(hào)運(yùn)算符〕,因此一般情況下表達(dá)式無(wú)須加括號(hào)。例如:a=2+5/3相當(dāng)于:a=(2+5/3)賦值運(yùn)算可以構(gòu)成一個(gè)表達(dá)式,其值可以再賦給其他變量。例如:a=b=100;其實(shí)相當(dāng)于:a=(b=100);復(fù)合賦值運(yùn)算符+=、-=、*=、/=、%=、<<=、>>=、&=、^=和|=a+=100;等價(jià)于a=a+100;a*=b;等價(jià)于a=a*b;……簡(jiǎn)化程序,使程序精練;提高編譯效率,產(chǎn)生質(zhì)量較高的目標(biāo)代碼。

表達(dá)式的書(shū)寫(xiě)舉例算術(shù)表達(dá)式的書(shū)寫(xiě)(-b+sqrt(b*b-4*a*c))/(2*a)設(shè)有變量聲明floata=3.0;intb=2;計(jì)算表達(dá)式

2+sqrt(1.0+a)*b++/2。解:2+sqrt(1.0+a)*b++/2

2+sqrt(4.0)*b++/2

2+2.0*2/2

2+4.0/2

2+2.0

4.0

逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式(表達(dá)式1),(表達(dá)式2),(表達(dá)式3),…,(表達(dá)式n)表達(dá)式n的值就是整個(gè)逗號(hào)表達(dá)式的值?!纠?-7】演示逗號(hào)表達(dá)式。#include<stdio.h>voidmain(){ inta; printf("1+2+3+4+5=%d\n",

(a=1,a=a+2,a=a+3,a=a+4,a=a+5)); printf("a=%d\n",a);}數(shù)據(jù)類(lèi)型轉(zhuǎn)換類(lèi)型轉(zhuǎn)換概述不同類(lèi)型數(shù)據(jù)的存儲(chǔ)長(zhǎng)度和存儲(chǔ)方式不同,一般不能直接混合運(yùn)算。為了提高編程效率,增加應(yīng)用的靈活性,C語(yǔ)言允許不同數(shù)據(jù)類(lèi)型相互轉(zhuǎn)換。不同數(shù)據(jù)類(lèi)型的差異double比f(wàn)loat高級(jí)。實(shí)數(shù)比整數(shù)高級(jí)。整數(shù)中長(zhǎng)的比短的高級(jí),如:long>int>short>char無(wú)符號(hào)〔unsigned〕比有符號(hào)〔signed〕高級(jí)數(shù)據(jù)類(lèi)型轉(zhuǎn)換數(shù)據(jù)類(lèi)型轉(zhuǎn)換產(chǎn)生的效果數(shù)據(jù)類(lèi)型級(jí)別的提升與降低符號(hào)位擴(kuò)展與零擴(kuò)展截去高位產(chǎn)生數(shù)值的變化喪失精度實(shí)數(shù)轉(zhuǎn)換成整數(shù)時(shí),由于截去小數(shù)將喪失精度。double型轉(zhuǎn)換成float型時(shí),有效數(shù)字減少〔四舍五入〕,精度喪失。long型轉(zhuǎn)換成float型時(shí),由原來(lái)可達(dá)10位整數(shù)變成只有7位有效數(shù)字,精度喪失,但由于數(shù)的范圍擴(kuò)大了,數(shù)據(jù)類(lèi)型從較低級(jí)提升到較高級(jí)數(shù)據(jù)類(lèi)型轉(zhuǎn)換

自動(dòng)類(lèi)型轉(zhuǎn)換float在運(yùn)算時(shí)自動(dòng)轉(zhuǎn)換成double。char和short在運(yùn)算時(shí)自動(dòng)轉(zhuǎn)換成int。int和unsigned混合運(yùn)算時(shí),將int轉(zhuǎn)換成unsigned數(shù)據(jù)。int或unsigned與long混合運(yùn)算時(shí),都轉(zhuǎn)換成long數(shù)據(jù)。int、unsigned、long與浮點(diǎn)型數(shù)據(jù)混合運(yùn)算時(shí),都轉(zhuǎn)換成double

數(shù)據(jù)類(lèi)型轉(zhuǎn)換強(qiáng)制類(lèi)型轉(zhuǎn)換強(qiáng)制類(lèi)型轉(zhuǎn)換的格式為:(類(lèi)型名)(表達(dá)式)強(qiáng)制類(lèi)型轉(zhuǎn)換用于不能自動(dòng)轉(zhuǎn)換的情況。例如:(int)5.0%3 /*實(shí)型數(shù)據(jù)求余運(yùn)算*/(int)(f+0.5) /*第一位小數(shù)的四舍五入算法*/(int)(f*10+0.5)/10.0/*第二位小數(shù)的四舍五入算法*/C語(yǔ)言的數(shù)據(jù)類(lèi)型。C語(yǔ)言的數(shù)據(jù)類(lèi)型有4類(lèi):根本類(lèi)型、構(gòu)造類(lèi)型、指針類(lèi)型和空類(lèi)型。根本數(shù)據(jù)類(lèi)型包括整型、實(shí)型、字符型3種。它們的表示方法、數(shù)據(jù)的取值范圍等各有特點(diǎn)。常量和變量。常量指在程序運(yùn)行中其值不能被改變的量,包括整數(shù)、長(zhǎng)整數(shù)、無(wú)符號(hào)整數(shù)、浮點(diǎn)數(shù)、字符、字符串、符號(hào)常量等。其中特別要注意字符和字符串的區(qū)別。變量是指在程序運(yùn)行過(guò)程中其值可以被改變的量,包括各種整型、實(shí)型、字符型等。變量的名稱(chēng)可以是任何合法的標(biāo)識(shí)符,但不能是關(guān)鍵字。給變量命名時(shí)應(yīng)盡量做到“見(jiàn)名知義”。C語(yǔ)言共有13類(lèi)運(yùn)算符。運(yùn)算符主要有算術(shù)運(yùn)算符〔包括自加、自減運(yùn)算符〕、關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符和逗號(hào)運(yùn)算符等。每種運(yùn)算符運(yùn)算對(duì)象的個(gè)數(shù)、優(yōu)先級(jí)、結(jié)合性也各有不同。一般而言,單目運(yùn)算符優(yōu)先級(jí)較高,賦值運(yùn)算符優(yōu)先級(jí)較低。大多數(shù)雙目運(yùn)算符為左結(jié)合性,單目、三目及賦值運(yùn)算符為右結(jié)合性。表達(dá)式。表達(dá)式是由運(yùn)算符連接各種類(lèi)型的數(shù)據(jù)〔包括常量、有值變量和函數(shù)調(diào)用等〕組合而成的式子。表達(dá)式的求值應(yīng)按照運(yùn)算符的優(yōu)先級(jí)和結(jié)合性所規(guī)定的順序進(jìn)行。數(shù)據(jù)類(lèi)型轉(zhuǎn)換。不同類(lèi)型的數(shù)據(jù)在進(jìn)行混合運(yùn)算時(shí),需要進(jìn)行類(lèi)型轉(zhuǎn)換。類(lèi)型轉(zhuǎn)換有3種方式:自動(dòng)類(lèi)型轉(zhuǎn)換。當(dāng)不同類(lèi)型的數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),按照“精度”不降低的原那么從低級(jí)向高級(jí)自動(dòng)進(jìn)行轉(zhuǎn)換。賦值類(lèi)型轉(zhuǎn)換。當(dāng)賦值運(yùn)算符兩側(cè)的類(lèi)型不一致時(shí),將表達(dá)式值的類(lèi)型轉(zhuǎn)換成變量的類(lèi)型再賦給變量。強(qiáng)制類(lèi)型轉(zhuǎn)換。當(dāng)希望將一個(gè)表達(dá)式強(qiáng)制轉(zhuǎn)換成所需類(lèi)型時(shí)可進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換。在自動(dòng)類(lèi)型轉(zhuǎn)換中,float自動(dòng)轉(zhuǎn)換成double,char和short自動(dòng)轉(zhuǎn)換成int進(jìn)行計(jì)算,而不管是否存在混合類(lèi)型的運(yùn)算。在程序設(shè)計(jì)中要合理使用數(shù)據(jù)類(lèi)型,防止數(shù)值的變化和精度的喪失。下面程序的輸出是_________。#include<stdio.h>voidmain(){inta=10,b=10;printf("%d,%d,%d,%d\n",a--,a,--b,b);}下面程序的輸出是_________。#include<stdio.h>voidmain(){inti=1,j,k;j=i++; printf("j=%d,i=%d\n",j,i);k=++i; printf("k=%d,i=%d\n",k,i);j=i--; printf("j=%d,i=%d\n",j,i);k=--i; printf("k=%d,i=%d\n",k,i);i=j=5;printf("i+j=%d,++j=%d\n",i+j,++j);}C語(yǔ)言語(yǔ)句表達(dá)式語(yǔ)句表達(dá)式;

例如:x=100/*表達(dá)式*/〔注意二者的區(qū)別〕x=100;/*語(yǔ)句*/函數(shù)調(diào)用語(yǔ)句函數(shù)名(參數(shù)列表);

例如:printf("HelloWorld!\n");C語(yǔ)言語(yǔ)句控制語(yǔ)句控制語(yǔ)句用于完成一定的控制功能,以實(shí)現(xiàn)程序的結(jié)構(gòu)化。C語(yǔ)言有9種控制語(yǔ)句,可分為以下3類(lèi):條件判斷語(yǔ)句:if語(yǔ)句、switch語(yǔ)句。轉(zhuǎn)向語(yǔ)句:break語(yǔ)句、continue語(yǔ)句、goto語(yǔ)句、return語(yǔ)句。循環(huán)語(yǔ)句:for語(yǔ)句、while語(yǔ)句、do-while語(yǔ)句。C語(yǔ)言語(yǔ)句復(fù)合語(yǔ)句復(fù)合語(yǔ)句是用花括號(hào)將假設(shè)干語(yǔ)句組合在一起,又稱(chēng)分程序例如,下面是一個(gè)復(fù)合語(yǔ)句:

{

i=5;

printf("%d\n",i);

}空語(yǔ)句;程序結(jié)構(gòu)程序結(jié)構(gòu)簡(jiǎn)介在C語(yǔ)言中,程序結(jié)構(gòu)一般分為順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。任何復(fù)雜的程序都是由這3種根本結(jié)構(gòu)組成的?!纠?-1】簡(jiǎn)單的程序結(jié)構(gòu)。#include<stdio.h>voidmain(){inta,b,c; /*聲明局部,定義了3個(gè)整型變量*/a=100; /*執(zhí)行局部開(kāi)始,直到最后的花括號(hào)*/b=200;c=a+b;printf("a+b=%d\n",c);}程序結(jié)構(gòu)【例3-2】由多個(gè)函數(shù)構(gòu)成的程序結(jié)構(gòu)。#include<stdio.h>voidmain() /*主函數(shù)*/{inta,b,c; /*聲明局部,定義變量的類(lèi)型*/scanf("%d,%d",&a,&b); /*通過(guò)輸入函數(shù),給變量a、b賦值*/c=sum(a,b); /*調(diào)用sum函數(shù),將函數(shù)值賦給變量c*/printf("a+b=%d\n",c); /*輸出變量c的值*/}intsum(inta,intb) /*定義一個(gè)sum函數(shù)*/{intc;c=a+b;return(c);/*將變量c的值通過(guò)返回語(yǔ)句帶回調(diào)用處*/}程序結(jié)構(gòu)順序結(jié)構(gòu)程序運(yùn)行時(shí)按語(yǔ)句書(shū)寫(xiě)的次序依次執(zhí)行最簡(jiǎn)單、最根本的結(jié)構(gòu)【例3-3】分析下面程序結(jié)構(gòu)。#include<stdio.h>voidmain(){inta,b,c;scanf("%d,%d",&a,&b);c=a+b;printf("c=%d\n",c);}賦值語(yǔ)句根本賦值語(yǔ)句變量=表達(dá)式;正確的賦值語(yǔ)句:a=100;a=a+200; /*兩個(gè)賦值語(yǔ)句,最后a變成300*/a=b=c=100; /*相當(dāng)于a=(b=c=100);*/c=(a=100,b=a,a+b);/*右邊是逗號(hào)表達(dá)式*/錯(cuò)誤的賦值語(yǔ)句:c+2=a+b; /*左邊不是變量名,是表達(dá)式*/賦值運(yùn)算符“=”可以理解成,例如:c=a+b可以看成ca+b。賦值語(yǔ)句復(fù)合賦值語(yǔ)句a+=3;/*相當(dāng)于a=a+3*/b-=6;/*相當(dāng)于b=b-6*/c/=2;/*相當(dāng)于c=c/2*/在構(gòu)造以上賦值語(yǔ)句之前,變量必須已經(jīng)初始化或賦值。下面的程序是錯(cuò)誤的:inta;a+=10;因?yàn)閍+=10相當(dāng)于a=a+10,而右邊表達(dá)式中的a是剛剛定義的,還沒(méi)有具體的值。數(shù)據(jù)輸入與輸出C語(yǔ)言本身不提供輸入輸出語(yǔ)句,其數(shù)據(jù)的輸入和輸出功能是由函數(shù)來(lái)實(shí)現(xiàn)的#include<stdio.h>printf〔格式輸出〕、scanf〔格式輸入〕、putchar〔輸出字符〕,getchar〔輸入字符〕TurboC中允許在使用這兩個(gè)函數(shù)時(shí)不用#include命令使用數(shù)學(xué)函數(shù)庫(kù)時(shí),要用到math.h文件數(shù)據(jù)輸入與輸出格式化輸出函數(shù)printf功能是向系統(tǒng)指定的設(shè)備輸出假設(shè)干個(gè)任意類(lèi)型的數(shù)據(jù)調(diào)用形式printf(格式控制字符串,輸出列表);格式控制字符串是用雙引號(hào)括起來(lái)的字符串,它包括兩個(gè)信息:格式說(shuō)明。由“%”和格式字符組成,如%d、%c、%f等。它的作用是將要輸出的數(shù)據(jù)轉(zhuǎn)化成指定的格式輸出,格式說(shuō)明都是由“%”字符開(kāi)始的。一般字符?;蛘叻Q(chēng)為非格式說(shuō)明符,即按原樣輸出的字符。數(shù)據(jù)輸入與輸出格式化輸出函數(shù)printf輸出列表是需要輸出的變量、函數(shù)、表達(dá)式。

例如:printf("a+b=%d\n",c);“%d”是格式說(shuō)明,用來(lái)控制輸出項(xiàng)c的輸出格式?!癮+b=”和“\n”都是一般字符,原樣輸出,“\n”是轉(zhuǎn)義字符,代表?yè)Q行符。假設(shè)c為300,那么輸出結(jié)果為:a+b=300數(shù)據(jù)輸入與輸出格式化輸出函數(shù)printf格式說(shuō)明%[標(biāo)志][最小寬度][.精度][長(zhǎng)度]類(lèi)型[] 表示可選項(xiàng)[標(biāo)志] 可以是-、+、0數(shù)據(jù)輸入與輸出格式化輸出函數(shù)printf[最小寬度]:十進(jìn)制整數(shù),表示輸出的最少位數(shù)。[.精度]:“.”加上十進(jìn)制整數(shù)n,其含義是:如果輸出的是數(shù)值,那么該數(shù)表示小數(shù)位數(shù),假設(shè)實(shí)際小數(shù)位數(shù)大于該值,那么超出局部四舍五入;如果輸出的是字符,那么表示輸出字符的個(gè)數(shù)。[長(zhǎng)度]:可以是h、l。h表示按短整型量輸出,l表示按長(zhǎng)整型量或雙精度量輸出。數(shù)據(jù)輸入與輸出格式化輸出函數(shù)printf類(lèi)型:格式說(shuō)明符中必須要有的,它表示輸出列表里要輸出的數(shù)據(jù)類(lèi)型格式化輸出函數(shù)printf注意:可以在格式控制字符串中包含前面所講的“轉(zhuǎn)義字符”,如‘\n’〔換行〕、‘\t’〔橫向跳格〕、‘\r’〔回車(chē)〕、‘\b’〔退格〕、\’〔代表撇號(hào)字符〕、\\反斜杠字符等。跟在%后面的格式符除X〔表示輸出的十六進(jìn)制數(shù)用大寫(xiě)字母輸出〕、E〔表示輸出的指數(shù)e用大寫(xiě)字母E輸出〕、G〔表示假設(shè)選用指數(shù)形式輸出,那么用大寫(xiě)字母E輸出〕外,其余必須是小寫(xiě)字母。如%d不能寫(xiě)成%D。假設(shè)想輸出字符“%”,那么在格式字符串中用連續(xù)兩個(gè)%表示。如:printf("%f%%",1.0/4);

輸出:0.250000%。數(shù)據(jù)輸入與輸出格式化輸入函數(shù)scanfscanf函數(shù)的功能是從鍵盤(pán)上將數(shù)據(jù)按用戶(hù)指定的格式輸入并賦給指定的變量調(diào)用的一般形式為:scanf(格式控制字符串,地址列表);其中格式控制字符串的定義與使用方法和printf函數(shù)相同,但不能顯示非格式字符。地址列表是要賦值的各變量地址。地址是由地址運(yùn)算符“&”后跟變量名組成,如&x表示變量x的地址。默認(rèn)的分隔符有空格、回車(chē)符、Tab〔跳格〕鍵例scanf函數(shù)的使用#include<stdio.h>voidmain(){inta,b;scanf("%d%d",&a,&b);printf("a=%d,b=%d\n",a,b);}運(yùn)行時(shí)按以下方式輸入a、b的值:100-200程序?qū)⑤敵觯篴=100,b=-200格式化輸入函數(shù)scanf格式說(shuō)明%[*][寬度][長(zhǎng)度]類(lèi)型

[*]:表示輸入的數(shù)值不賦給相應(yīng)的變量,即跳過(guò)該數(shù)據(jù)不讀。[寬度]:十進(jìn)制正整數(shù),表示輸入數(shù)據(jù)的最大寬度。[長(zhǎng)度]:長(zhǎng)度格式符為l和h,l表示輸入長(zhǎng)整型數(shù)據(jù)或雙精度實(shí)型數(shù)據(jù);h表示輸入短整型數(shù)據(jù)。格式化輸入函數(shù)scanf類(lèi)型格式化輸入函數(shù)scanf注意:scanf函數(shù)中的“格式控制字符串”后面的輸入項(xiàng)應(yīng)該是地址,而不應(yīng)是變量名。例如:scanf("%d,%d",&a,&b);不能將語(yǔ)句寫(xiě)成:scanf("%d,%d",a,b);scanf不支持輸入精度控制。例如:scanf("%8.3f",&x);是不合法的。在“格式控制字符串”中除了格式說(shuō)明符外,也允許出現(xiàn)其他字符,但在輸入數(shù)據(jù)時(shí)在對(duì)應(yīng)位置上應(yīng)輸入與這些字符相同的字符。例如:scanf("a=%d,b=%d",&a,&b);

那么輸入時(shí)應(yīng)輸入:a=12,b=-2格式化輸入函數(shù)scanf注意:輸入數(shù)據(jù)時(shí),遇到以下情況認(rèn)為該數(shù)據(jù)輸入結(jié)束:按指定的寬度結(jié)束。遇空格,或回車(chē)鍵,或Tab鍵。遇非法輸入。如例3-6第5局部:

scanf(“%d%c%d”,&a,&c,&b);

之所以輸入:100A-200可以分別使得a、b、c為100、-200、'A',其主要原因是讀入100后遇到字符A,不是數(shù)字字符,從而變量a的輸入結(jié)束。當(dāng)輸入的數(shù)據(jù)與輸出的類(lèi)型不一樣時(shí),雖然編譯沒(méi)有提示出錯(cuò),但結(jié)果將不正確。字符數(shù)據(jù)的輸入與輸出字符輸入函數(shù)getchar從標(biāo)準(zhǔn)設(shè)備〔鍵盤(pán)〕上讀入一個(gè)字符【例3-7】字符輸入函數(shù)的使用。#include<stdio.h>voidmain(){charc1,c2;c1=getchar();c2=getchar();printf("%c,%c\n",c1,c2);}字符數(shù)據(jù)的輸入與輸出字符輸出函數(shù)putchar向標(biāo)準(zhǔn)輸出設(shè)備〔顯示器〕輸出一個(gè)字符.例如:putchar('A'); /*輸出字符A*/putchar(65); /*輸出65所對(duì)應(yīng)的字符A*/putchar('\n'); /*輸出換行符*/在上例最后的花括號(hào)“}”前添加語(yǔ)句:putchar(c1);putchar(c2);putchar('\n');程序舉例【例3-8】從鍵盤(pán)上輸入兩個(gè)整數(shù)放入變量a和b中,編程將這兩個(gè)變量中的數(shù)據(jù)交換。#include<stdio.h>main(){inta,b,t;a=3;b=5;t=a;a=b;b=t;printf("a=%d,b=%d\n",a,b);}【例3-9】從鍵盤(pán)上輸入一個(gè)小寫(xiě)英文字母,編程輸出該字母所對(duì)應(yīng)的大寫(xiě)字母?!痉治觥看髮?xiě)字母A~Z的ASCII碼值為65~90,小寫(xiě)字母a~z的ASCII碼值為97~122。每對(duì)字母的ASCII碼值差都是32,即'a'-'A'、'b'-'B'、'c'-'C'、…、'z'-'Z'都等于32。 程序如下:#include<stdio.h>voidmain(){ charc1,c2; c1=getchar(); c2=c1-32; printf("%d,%d,%c,%c\n",c1,c2,c1,c2);}【例3-11】設(shè)計(jì)程序計(jì)算方程的解。其中

a、b、c用scanf函數(shù)輸入〔設(shè)為2、3、1〕【分析】由數(shù)學(xué)知識(shí)可知:求ax2+bx+c=0的根可用求根公式。即當(dāng)b2-4ac≥0時(shí),方程的兩個(gè)根可用如下公式進(jìn)行求解:#include<stdio.h>#include<math.h>voidmain(){floata,b,c,d,x1,x2;printf("Pleaseinputa,b,c:");scanf("%f,%f,%f",&a,&b,&c);d=sqrt(b*b-4*a*c);x1=(-b+d)/(2*a);x2=(-b-d)/(2*a);printf("x1=%f,x2=%f\n",x1,x2);}本章介紹了順序程序結(jié)構(gòu)、賦值語(yǔ)句、根本的輸入/輸出函數(shù)。其中重點(diǎn)講解了以下幾方面的內(nèi)容:程序結(jié)構(gòu)。C程序的結(jié)構(gòu)分為順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。任何C程序都由這3種結(jié)構(gòu)構(gòu)成。賦值語(yǔ)句。由賦值運(yùn)算表達(dá)式構(gòu)造的賦值語(yǔ)句是最常用的語(yǔ)句,是對(duì)變量的最根本操作。根本的輸入/輸出函數(shù)。格式化輸出函數(shù)printf和格式化輸入函數(shù)scanf。字符輸出函數(shù)putchar和字符輸入函數(shù)getchar。使用上述函數(shù)需要包含頭文件stdio.h,TC中允許在使用printf和scanf函數(shù)時(shí)忽略包含該頭文件。格式字符。格式字符是以%開(kāi)頭、類(lèi)型字符結(jié)尾的特殊字符串,其中輸出格式字符要更為復(fù)雜些。輸出格式字符??梢院?jiǎn)單理解成:%[標(biāo)志][寬度][精度][長(zhǎng)度]類(lèi)型。類(lèi)型字符是必須有的,主要有d、o、x、u、f、e、g、c、s,其中d、o、x、u用于整型數(shù)據(jù),f、e、g用于實(shí)型數(shù)據(jù),c、s用于字符型數(shù)據(jù)。d表示十進(jìn)制整數(shù),o表示八進(jìn)制整數(shù),x表示十六進(jìn)制整數(shù),u表示無(wú)符號(hào)整數(shù)。f表示十進(jìn)制小數(shù),e表示十進(jìn)制指數(shù),g表示自動(dòng)選取f或e中較短長(zhǎng)度的格式。c表示單個(gè)字符,s表示一串字符。x、e、g可以是大寫(xiě)的X、E、G,相應(yīng)輸出結(jié)果中的字母也將是大寫(xiě)。e默認(rèn)輸出5位小數(shù),指數(shù)局部TC下默認(rèn)2位、VC下默認(rèn)4位。g默認(rèn)輸出1位小數(shù)。標(biāo)志、寬度、精度、長(zhǎng)度是可選的,如果沒(méi)有設(shè)置,那么按默認(rèn)的格式輸出。標(biāo)志有+、-、0三種字符,“+”用于增加標(biāo)注正數(shù)前面的“+”號(hào),“-”用于更改對(duì)齊方式為左對(duì)齊,“0”用于修改默認(rèn)空余填充的空格為“0”。寬度是十進(jìn)制整數(shù),不是強(qiáng)制執(zhí)行的,當(dāng)寬度小于實(shí)際寬度時(shí)無(wú)效,如果超出,那么默認(rèn)填充空格。當(dāng)寬度超出實(shí)際寬度時(shí),還會(huì)帶來(lái)對(duì)齊的問(wèn)題,默認(rèn)是右對(duì)齊。精度是十進(jìn)制整數(shù),主要用于實(shí)型和字符型數(shù)據(jù)的輸出控制。實(shí)型數(shù)默認(rèn)輸出6位小數(shù),精度可以修改小數(shù)位數(shù),精度不同于有效數(shù)字位數(shù)。同時(shí)包含寬度和精度的格式串,首先處理精度,然后得到實(shí)際寬度,再把設(shè)置的寬度和實(shí)際寬度比較,超出那么填充空格,否那么設(shè)置寬度無(wú)效。長(zhǎng)度有h、l兩種字符。h用于標(biāo)注是短整型,l用于標(biāo)注是長(zhǎng)整型或double實(shí)型。值得注意的是,32位機(jī)器下,VC編程環(huán)境中int和long都是4個(gè)字節(jié),在輸出long型數(shù)據(jù)時(shí)可以不加l修飾了。輸入格式字符??梢院?jiǎn)單理解成:%[*][寬度][長(zhǎng)度]類(lèi)型。很顯然,輸入格式字符要簡(jiǎn)單得多。寬度、長(zhǎng)度和類(lèi)型的意義根本同輸出格式符?!?”表示虛讀。編程求方程2x2-3x-6=0的根。輸入3個(gè)整數(shù)a、b、c,編程交換它們的值,即把a(bǔ)中的值給b,把b中的值給c,把c中的值給a。編程將任意輸入的小寫(xiě)字母轉(zhuǎn)化成大寫(xiě)字母并輸出。試做以下練習(xí)題選出合法的常量并指出不合法的理由-0、-0x2a1、0003、5e+0、3.e-5、2E5、‘{’、‘\n’、“105”、“x-y”、“36’63”23

、0x7g、e3、12.5e2

、‘105’、‘AB’、3+6、e、7ff、2e-310、12356e、3e+2.3

±7f下面哪些可以做為變量名:a3B

、3aB、π、+a、

b

、*x、s、b5

、if、next、day、e2

、ok?、Intger

、maxnumber由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須是字母或下劃線對(duì)上次課的復(fù)習(xí)1、根本算術(shù)運(yùn)算符除了正、負(fù)值運(yùn)算符為單目運(yùn)算符外,其它都是雙目運(yùn)算符。〔1〕兩個(gè)整數(shù)相除的結(jié)果為整數(shù),如5/3的結(jié)果為1,舍去小數(shù)局部。但是如果除數(shù)或被除數(shù)中有一個(gè)為負(fù)值,那么舍入的方向是不固定的,多數(shù)機(jī)器采用“向0取整”的方法〔實(shí)際上就是舍去小數(shù)局部,注意:不是四舍五入〕?!?〕如果參加+,-,*,/運(yùn)算的兩個(gè)數(shù)有一個(gè)為實(shí)數(shù),那么結(jié)果為double型,因?yàn)樗袑?shí)數(shù)都按double型進(jìn)行計(jì)算?!?〕求余運(yùn)算符%,要求兩個(gè)操作數(shù)均為整型,結(jié)果為兩數(shù)相除所得的余數(shù)。求余也稱(chēng)為求模。2、算術(shù)表達(dá)式C語(yǔ)言算術(shù)表達(dá)式的書(shū)寫(xiě)形式與數(shù)學(xué)表達(dá)式的書(shū)寫(xiě)形式有一定的區(qū)別:〔1〕C語(yǔ)言算術(shù)表達(dá)式的乘號(hào)〔*〕不能省略。例如:數(shù)學(xué)式b2-4ac,相應(yīng)的C表達(dá)式應(yīng)該寫(xiě)成:b*b-4*a*c。〔2〕C語(yǔ)言表達(dá)式中只能出現(xiàn)字符集允許的字符。例如,數(shù)學(xué)πr2相應(yīng)的C表達(dá)式應(yīng)該寫(xiě)成:PI*r*r。〔其中PI是已經(jīng)定義的符號(hào)常量〕〔3〕C語(yǔ)言算術(shù)表達(dá)式不允許有分子分母的形式。例如,(a+b)/(c+d)?!?〕C語(yǔ)言算術(shù)表達(dá)式只使用圓括號(hào)改變運(yùn)算的優(yōu)先順序〔不要指望用{}[]〕。可以使用多層圓括號(hào),此時(shí)左右括號(hào)必須配對(duì),運(yùn)算時(shí)從內(nèi)層括號(hào)開(kāi)始,由內(nèi)向外依次計(jì)算表達(dá)式的值。賦值表達(dá)式使用注意:〔1〕賦值運(yùn)算符左邊必須是變量,右邊可以是常量、變量、函數(shù)調(diào)用或常量、變量、函數(shù)調(diào)用組成的表達(dá)式。例如:x=10y=x+10y=func()都是合法的賦值表達(dá)式。

〔2〕賦值符號(hào)“=”不同于數(shù)學(xué)的等號(hào),它沒(méi)有相等的含義。例如:C語(yǔ)言中x=x+1是合法的〔數(shù)學(xué)上不合法〕,它的含義是取出變量x的值加1,再存放到變量x中?!?〕賦值表達(dá)式的值等于左邊變量的值?!?〕賦值運(yùn)算符的優(yōu)先級(jí)只高于逗號(hào)運(yùn)算符,為右結(jié)合性。復(fù)合賦值運(yùn)算符和表達(dá)式在賦值符“=”之前加上某些運(yùn)算符,可以構(gòu)成復(fù)合賦值運(yùn)算符,復(fù)合賦值運(yùn)算符可以構(gòu)成賦值表達(dá)式。C語(yǔ)言中許多雙目運(yùn)算符可以與賦值運(yùn)算符一起構(gòu)成復(fù)合運(yùn)算符,即:+=,-=,*=,/=,%=,<<=,>>=,&=,|=,^=復(fù)合賦值表達(dá)式一般形式:<變量><雙目運(yùn)算符>=<表達(dá)式>

等價(jià)于:<變量>=<變量><雙目運(yùn)算符><表達(dá)式>例如:n+=1等價(jià)于n=n+1x*=y+1等價(jià)于x=x*(y+1)自加、自減運(yùn)算符使用說(shuō)明:〔1〕自增、自減運(yùn)算,常用于循環(huán)語(yǔ)句中,使循環(huán)控制變量加〔或減〕1,以及指針變量中,使指針指向下〔或上〕一個(gè)地址。〔2〕自增、自減運(yùn)算符,不能用于常量和表達(dá)式。例如,5++、--(a+b)等都是非法的。〔3〕在表達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運(yùn)算時(shí),很容易出錯(cuò),所以最好防止這種用法。++i前綴式:先增值后引用i++后綴式:先引用后增值逗號(hào)運(yùn)算符和表達(dá)式其求解過(guò)程為:自左至右,依次計(jì)算各表達(dá)式的值,“表達(dá)式n”的值即為整個(gè)逗號(hào)表達(dá)式的值。例如,逗號(hào)表達(dá)式“a=3*5,a*4”的值=60:先求解a=3*5,得a=15;再求a*4=60,所以逗號(hào)表達(dá)式的值=60。又例如,逗號(hào)表達(dá)式“(a=3*5,a*4),a+5”的值=20:先求解a=3*5,得a=15;再求a*4=60;最后求解a+5=20,所以逗號(hào)表達(dá)式的值=20。新課目標(biāo)掌握關(guān)系表達(dá)式和邏輯表達(dá)式的組成及運(yùn)算理解選擇結(jié)構(gòu)〔分支結(jié)構(gòu)〕程序設(shè)計(jì)的概念掌握if語(yǔ)句、switch語(yǔ)句的根本結(jié)構(gòu)及執(zhí)行過(guò)程學(xué)會(huì)簡(jiǎn)單的選擇結(jié)構(gòu)程序設(shè)計(jì)Main(){printf(“我是第一”);printf(“我是第二”);}/*每個(gè)語(yǔ)句都執(zhí)行是最根本的結(jié)構(gòu)。在執(zhí)行時(shí)是按從上往下執(zhí)行,一句都不漏的往下執(zhí)行*/在平時(shí)娛樂(lè)時(shí)大家用QQ時(shí),在輸入密碼時(shí)有二種選擇:1、密碼對(duì)了就登錄QQ。2、密碼要是不對(duì)就提示密碼不對(duì)請(qǐng)重新輸入。這樣的生活問(wèn)題。如何轉(zhuǎn)換成計(jì)算機(jī)問(wèn)題呢?下面是文字描述的樣式:如果〔if〕〔用戶(hù)輸入密碼是對(duì)的〕輸出:“密碼正確”否那么(else)輸出:“密碼不對(duì)請(qǐng)重新輸入”If(判斷式){

判斷式成立執(zhí)行的語(yǔ)句Else{

判斷式不成立執(zhí)行的語(yǔ)句

}}語(yǔ)句塊一語(yǔ)句塊二關(guān)系運(yùn)算符和表達(dá)式< 小于> 大于== 等于<= 小于或等于>= 大于或等于!= 不等于C語(yǔ)言中的幾種關(guān)系運(yùn)算符所謂關(guān)系運(yùn)算實(shí)際上是“比較運(yùn)算”,即進(jìn)行兩個(gè)數(shù)的比較,判斷比較的結(jié)果是否符合指定的條件。運(yùn)算的結(jié)果是一邏輯值,0或者1,0代表假1代表真。在使用關(guān)系運(yùn)算符時(shí)本卷須知:1、由兩個(gè)字符組成的運(yùn)算符之間不允許有空格,如:<=不能寫(xiě)成<=。2、關(guān)系運(yùn)算符是雙目運(yùn)算符,具有自左至右的結(jié)合性。其值只有整數(shù)0和1。關(guān)系表達(dá)式及關(guān)系表達(dá)式的值由關(guān)系運(yùn)算符構(gòu)成的表達(dá)稱(chēng)為關(guān)系表達(dá)式。關(guān)系運(yùn)算符兩邊的運(yùn)算對(duì)象可能是C語(yǔ)言中任意合法的表達(dá)。例如:a>=b、(a=3)>(b=4)、a>c==c假設(shè)x=3,y=z=4,求表達(dá)式的值。(z>=y>=x)?1:0假設(shè)X=3,y=2,z=1,求以下表達(dá)的值。x<y?y:x(2)x<y?x++:y++如:a=2,b=3那么a>b 值為02+a<b+2 值為1‘x’<‘y’ 值為1‘x’!=‘x’ 值為0(a>2==b>2) 值為0寫(xiě)出下面程序的輸出結(jié)果Main(){intx=1,y=2,z=3;x+=y+=z;printf(“%d\n”,x<y?y:x);printf(“%d\n”,x<y?x++:y++);printf(“%d\n”,x,y,z);}If結(jié)構(gòu)〔關(guān)系表達(dá)式〕程序舉例如果輸入的QQ密碼是123那么顯示恭喜你可以進(jìn)入QQ聊天,否那么請(qǐng)重新輸入密碼。程序如下:Main(){inta;Scanf(“%d”,&a);If(a==123){printf(“恭喜你可以進(jìn)入QQ聊天”);}Else{printf(“對(duì)不起密碼不對(duì)重新輸入”);}Getch();}If選擇結(jié)構(gòu)〔關(guān)系表達(dá)式〕程序舉例如果年齡大于18顯示可以上網(wǎng),否那么顯示未成年不允許上網(wǎng)。Main(){ingage;scanf(“%d”,&age);if(age>=18){printf(“你可以上網(wǎng)”);}else{printf(“你未成年不允許上網(wǎng)”);}Getch();}If選擇結(jié)構(gòu)〔關(guān)系表達(dá)式〕程序舉例用戶(hù)輸入一整數(shù)判斷是奇數(shù)還是偶數(shù)main(){inta;scanf(“%d”,&a);if(a%2==0){printf(“是偶數(shù)”);} else{printf(“是奇數(shù)”);}Getch();}判斷輸入的數(shù)能否被3整除是那么輸出否那么什么也不做main(){inta;scanf(“%d”,&a);if(a%3!=0){printf(“不能被3整除的數(shù)”);} Getch();}If選擇結(jié)構(gòu)〔關(guān)系表達(dá)式〕程序舉例在現(xiàn)實(shí)生活中女人挑選自己嫁人對(duì)象的條件是:(1)年紀(jì)在30以?xún)?nèi)且月收入大于5000。(2)年紀(jì)大于30且月收入大于30000。(3)兩個(gè)條件滿(mǎn)足其一即可嫁給你。年紀(jì)<30且月收入>5000容許嫁給你年紀(jì)>30且月收入>30000容許嫁給你描述為:年紀(jì)<30且月收入>5000或者年紀(jì)>30且月收入>30000時(shí)容許嫁給你上面條件中的“且“、”或者“怎么來(lái)表示呢邏輯運(yùn)算符和邏輯表達(dá)式&&和||為雙目運(yùn)算符。!為單目運(yùn)算符出現(xiàn)在運(yùn)算對(duì)象的左邊。它們的優(yōu)先級(jí)別是:!、&&、||。所有運(yùn)算符的優(yōu)先級(jí)別為:!(非)、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、&&(與)、||(或)、賦值運(yùn)算符!〔邏輯非〕、&&〔邏輯與〕、||〔邏輯或〕邏輯運(yùn)算符的“短路”現(xiàn)象假設(shè)&&運(yùn)算符左邊的表達(dá)式為假〔或0〕,那么其右邊的表達(dá)式將不再運(yùn)算,整個(gè)表達(dá)式的值必然為假假設(shè)||運(yùn)算符左邊的表達(dá)式為真〔或非0值〕,那么其右邊的表達(dá)式將不再運(yùn)算,整個(gè)表達(dá)式的值必然為真3<5||++b測(cè)試短路現(xiàn)象#include<stdio.h>voidmain(){ inta,b; a=b=0; a||++b;printf("%d,%d\n",a,b); a=b=1; a||++b;printf("%d,%d\n",a,b); a=b=0; a&&++b;printf("%d,%d\n",a,b); a=b=1; a&&++b;printf("%d,%d\n",a,b);}測(cè)試短路現(xiàn)象#include<stdio.h>intshow(intn,inta){ printf("(%d,%d)",n,a); returna;}voidmain(){ inta; a=show(1,1)||show(2,2)&&show(3,3);printf("a=%d\n",a); a=show(1,0)||show(2,0)&&show(3,1);printf("a=%d\n",a); a=show(1,0)||show(2,1)&&show(3,2);printf("a=%d\n",a);}if語(yǔ)句單分支if語(yǔ)句if(表達(dá)式)語(yǔ)句;從鍵盤(pán)輸入一個(gè)整數(shù),判斷是否是偶數(shù),假設(shè)是,那么輸出“Yes”。#include<stdio.h>voidmain(){ inta; printf("Pleaseinputa:"); scanf("%d",&a); if(a%2==0) printf("Yes\n");}if語(yǔ)句雙分支if語(yǔ)句形式為:if(表達(dá)式)

語(yǔ)句1;else

語(yǔ)句2;從鍵盤(pán)輸入一個(gè)整數(shù),判斷是否是偶數(shù),假設(shè)是,那么輸出“Yes”,否那么輸出“No”#include<stdio.h>voidmain(){ inta; printf("Pleaseinputa:"); scanf("%d",&a); if(a%2==0) printf("Yes\n"); else printf("No\n");}從鍵盤(pán)輸入兩個(gè)整數(shù),輸出其中最大者#include<stdio.h>voidmain(){ inta,b; printf("Pleaseinputa,b:"); scanf("%d,%d",&a,&b); if(a>b) printf("max=%d\n",a); else printf("max=%d\n",b);}多分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)的if語(yǔ)句一般形式為:if(表達(dá)式1)語(yǔ)句1;

else

if(表達(dá)式2)語(yǔ)句2;…

else

if(表達(dá)式n)語(yǔ)句n;

else

語(yǔ)句n+1;輸入出租車(chē)類(lèi)型和里程,計(jì)算打車(chē)的費(fèi)用。計(jì)算方式為:3公里以?xún)?nèi)8元;3公里以上0車(chē)型每公里1.5元,1車(chē)型每公里2元。#include<stdio.h>voidmain(){ inttaxiType; floats; floatmoney; printf("Inputtaxitype(0,1):"); scanf("%d",&taxiType); printf("Inputs:"); scanf("%f",&s); if(s<3) money=8; else if(taxiType==0) money=8+(s-3)*1.5; else money=8+(s-3)*2; printf("money=%.2f\n",money);}if語(yǔ)句的嵌套if(表達(dá)式)

if(表達(dá)式) 語(yǔ)句1;

else

語(yǔ)句2;else

if(表達(dá)式) 語(yǔ)句3;

else

語(yǔ)句4;

C語(yǔ)言規(guī)定else總是和其前面最近的沒(méi)有else配對(duì)的if配對(duì)。輸入一個(gè)正整數(shù)作為年份,編程判斷該年是不是閏年。假設(shè)是輸出“YES”,否那么輸出“NO”?!痉治觥繚M(mǎn)足下面條件之一即為閏年:能被4整除,但不能被100整除。能被400整除。#include"stdio.h"voidmain(){ intyear; scanf("%d",&year); if(year%400==0)printf("Yes\n"); else if(year%4==0&&year%100!=0)printf("Yes\n"); else printf("NO\n");}year%400==0||(year%4==0&&year%100!=0)switch語(yǔ)句switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1;case常量表達(dá)式2:語(yǔ)句2;…case常量表達(dá)式n:語(yǔ)句n;default:語(yǔ)句n+1;}輸入一個(gè)十進(jìn)制數(shù),根據(jù)輸入的數(shù)輸出所對(duì)應(yīng)的英文星期單詞,假設(shè)所輸入的數(shù)小于1或大于7,那么輸出“Error”。#include<stdio.h>voidmain(){ inta; printf("Inputa:"); scanf("%d",&a); switch(a) { case1:printf("Monday\n"); case2:printf("Tuesday\n"); case3:printf("Wednesday\n"); case4:printf("Thursday\n"); case5:printf("Friday\n"); case6:printf("Saturday\n"); case7:printf("Sunday\n"); default:printf("Error\n");}}switch語(yǔ)句switch(表達(dá)式){

case常量表達(dá)式1:語(yǔ)句1;break;

case常量表達(dá)式2:語(yǔ)句2;break;…

case常量表達(dá)式n:語(yǔ)句n;break;

default:語(yǔ)句n+1;}修改后的例4-10程序#include<stdio.h>voidmain(){ inta; printf("Inputa:"); scanf("%d",&a); switch(a) { case1:printf("Monday\n");break; case2:printf("Tuesday\n");break; case3:printf("Wednesday\n");break; case4:printf("Thursday\n");break; case5:printf("Friday\n");break; case6:printf("Saturday\n");break; case7:printf("Sunday\n");break; default:printf("Error\n");break; }}【注意】switch后跟的“表達(dá)式”允許為任何類(lèi)型的表達(dá)式,其數(shù)據(jù)類(lèi)型和case后面的常量表達(dá)式的數(shù)據(jù)類(lèi)型一致。每一個(gè)case后的各常量表達(dá)式的值不允許重復(fù),否那么會(huì)報(bào)錯(cuò)。每一個(gè)case后允許有多條語(yǔ)句,可以不用花括號(hào)“{}”括起來(lái)。case和default子句出現(xiàn)的先后順序可以變動(dòng),不會(huì)影響程序的執(zhí)行結(jié)果。default子句也可以省略不用。多個(gè)case可以共用一組執(zhí)行語(yǔ)句。例如:…case'A':case'B':case'C':printf("Pass\n");break;程序舉例 【例4-11】輸入一個(gè)100以?xún)?nèi)的十進(jìn)制正整數(shù),判斷該數(shù)是否包含數(shù)字字符“6”。假設(shè)是輸出“Yes!”,否那么輸出“No!”。#include<stdio.h>voidmain(){inta; printf("Inputa:"); scanf("%d",&a); if(a==6||(a%10==6||a/10==6)) printf("Yes!\n"); else printf("No!\n");}輸入3個(gè)數(shù),按從小到大的順序輸出。#include"stdio.h"voidmain(){ inta,b,c,t; printf("Inputa,b,c:"); scanf("%d,%d,%d",&a,&b,&c); if(a>b){t=a;a=b;b=t;} if(b>c){t=b;b=c;c=t;} if(a>b){t=a;a=b;b=t;} printf("%d<=%d<=%d\n",a,b,c);}將一個(gè)百分制的成績(jī)〔設(shè)是整數(shù)〕轉(zhuǎn)化成5個(gè)等級(jí)90分以上為‘A’,80~89分為‘B’,70~79分為‘C’,60~69分為‘D’,60分以下為‘E’。

例如,輸入75,那么顯示C?!痉治觥肯扰袛噍斎氲臄?shù)據(jù)是否在合理的分?jǐn)?shù)范圍〔0~100〕內(nèi),然后再判斷是哪個(gè)分?jǐn)?shù)段:90分以上輸出A,80~89分輸出B,70~79分輸出C,60~69分輸出D,否那么顯示E。將一個(gè)百分制的成績(jī)〔設(shè)是整數(shù)〕轉(zhuǎn)化成5個(gè)等級(jí)#include<stdio.h>voidmain(){ inta; printf("Inputa:"); scanf("%d",&a); if(a<0||a>100) printf("Inputdataerror\n"); else if(a>=90) printf("A\n"); else if(a>=80) printf("B\n"); else if(a>=70) printf("C\n"); else if(a>=60) printf("D\n"); else printf("E\n");}【分析】使用switch語(yǔ)句,當(dāng)然最笨的方法是每一個(gè)分?jǐn)?shù)一個(gè)case分支,將需要101個(gè)分支,顯然這種程序不值得推薦。那么有沒(méi)有簡(jiǎn)化的方法呢?

其實(shí),任何好的算法都是對(duì)問(wèn)題分析和提煉的結(jié)果。題目中60分以上都是每10分一個(gè)層次,60分以下是一個(gè)層次。只要把每個(gè)層次的共性找到就容易找到簡(jiǎn)化程序的方法了。以60~69為例。每個(gè)分?jǐn)?shù)的十位數(shù)都是6,對(duì)于該層次的成績(jī),整除10的結(jié)果都是6。同樣對(duì)于70~79、80~89、90~99都是一樣。而69分以下的成績(jī)整除10的結(jié)果都小于6。將一個(gè)百分制的成績(jī)〔設(shè)是整數(shù)〕轉(zhuǎn)化成5個(gè)等級(jí)〔用switch語(yǔ)句完成〕#include<stdio.h>voidmain(){ inta; printf("Inputa:");scanf("%d",&a); if(a<0||a>100)printf("Inputdataerror\n"); else switch(a/10) { case10: case9:printf("A\n");break; case8:printf("B\n");break; case7:printf("C\n");break; case6:printf("D\n")

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論