版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計(jì)教材分析
本書內(nèi)容共有11章,可分為三部分。第1、2章為第一部分,為初學(xué)者的入門知識,使讀者對c語言編寫程序的步驟、方法和程序結(jié)構(gòu)及算法描述有一個(gè)大致的了解。第3~第5章為第二部分,是程序設(shè)計(jì)的基礎(chǔ)部分,使讀者詳細(xì)了解c語言的基本數(shù)據(jù)類型和表達(dá)式以及c語言的控制結(jié)構(gòu)。掌握了第一、二部分的內(nèi)容,讀者可以完成簡單的程序設(shè)計(jì)。第6章~第11章為第三部分,講述了模塊化程序設(shè)計(jì)的概念和實(shí)現(xiàn)的方法,為程序設(shè)計(jì)提供了更多、更方便的途徑,為進(jìn)行綜合程序設(shè)計(jì)奠定了基礎(chǔ)。每一個(gè)章節(jié)里都有詳細(xì)的程序范例來說明程序的設(shè)計(jì)思想、語句的概念、作用、含義和使用方法,使學(xué)生能夠由淺入深系統(tǒng)地學(xué)習(xí)c語言的知識,同時(shí)掌握一定的編程方法。成績考核成績考核方法:期末成績=平時(shí)成績20%+期末考試80%;
注:平時(shí)成績包括:上課情況、作業(yè)情況、上機(jī)作業(yè)完成情況等。學(xué)習(xí)C的忠告上機(jī)實(shí)踐(編程)?。。。═ry!!!)C語言程序設(shè)計(jì)教程第1章引言第2章程序的簡單算法制定第3章基本程序語句第4章選擇結(jié)構(gòu)第5章循環(huán)結(jié)構(gòu)第6章函數(shù)與編譯預(yù)處理第7章數(shù)組第8章指針第9章構(gòu)造數(shù)據(jù)類型第10章文件第11章位運(yùn)算
《C語言程序設(shè)計(jì)》課程的任務(wù)
1.指導(dǎo)學(xué)生掌握C程序設(shè)計(jì)語言的基礎(chǔ)知識;
2.培養(yǎng)學(xué)生綜合分析并編制程序解決實(shí)際應(yīng)用問題的能力;
3.培養(yǎng)學(xué)生契而不舍的解決問題的精神以及認(rèn)真的學(xué)習(xí)態(tài)度。
通常我們把設(shè)計(jì)、書寫及檢查調(diào)試程序的過程稱為程序設(shè)計(jì)。應(yīng)當(dāng)指出,簡單的程序設(shè)計(jì)應(yīng)包括以下幾個(gè)部分:
確定數(shù)據(jù)結(jié)構(gòu)
確定算法
編寫代碼
調(diào)試并運(yùn)行
整理并寫出文檔資料第一章引言1.1C語言的特點(diǎn)1.2簡單的C語言程序介紹1.3C語言程序的結(jié)構(gòu)1.4C程序設(shè)計(jì)語言的執(zhí)行1.1C語言的特點(diǎn)C語言有9種控制語句,32個(gè)關(guān)鍵字。運(yùn)算符豐富。共有34種運(yùn)算符數(shù)據(jù)結(jié)構(gòu)類型豐富。具有結(jié)構(gòu)化的控制語句語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。C語言允許直接訪問物理地址,能進(jìn)行位操作,可以直接對硬件進(jìn)行操作。生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。C語言編寫的程序可移植性好。1.2簡單的C語言程序介紹/*ex101.c-在屏幕上輸出ThisisaCprogram.*/#include<stdio.h>
voidmain(){printf(“ThisisaCprogram.\n”);}①注釋
/*ex101.c-在屏幕上輸出ThisisaCprogram.*/C程序中的“/*…*/”之間的內(nèi)容稱為注釋,是程序編寫者給程序閱讀者留下的一些說明(注釋),以幫助閱讀者理解程序。編譯器不對注釋進(jìn)行編譯,只將它們當(dāng)作空白看待。本程序的第1行中的注釋為“ex101.c”,是說明本書編寫時(shí)將這個(gè)程序保存在文件ex101.c中。②庫函數(shù)與文件包含命令include
#include<stdio.h>庫函數(shù):系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù),程序可直接使用;
使用庫函數(shù)必須將其有關(guān)說明信息寫入程序。為了用戶方便,系統(tǒng)定義庫函數(shù)時(shí),把一類相關(guān)庫函數(shù)的說明信息,分別寫在一些文件中。本例中使用了庫函數(shù)printf
,其有關(guān)說明信息寫在文件stdio.h中。所以在程序的開始加入了#include<stdio.h>使用C語言的庫函數(shù),要在程序前面加上類似#include<XXXX.h>的預(yù)處理命令③main函數(shù)任何C程序都必須有且只能有一個(gè)主函數(shù)main(),它是程序的入口,也是程序的出口。其中,main是函數(shù)名,()內(nèi)可以包含一些參數(shù);{}的內(nèi)容稱為函數(shù)體,其包含若干條C程序語句;不同語句之間用分號分隔;一般情況下,每個(gè)程序都由一至多個(gè)函數(shù)組成;表示main函數(shù)沒有返回值函數(shù)名函數(shù)體語句voidmain(){
printf(“ThisisaCprogram.\n”);}演示ex101④語句
printf(“ThisisaCprogram.\n”);C語言的主函數(shù)體由一些語句組成。每個(gè)語句由一個(gè)分號結(jié)束。如本例中,主函數(shù)的一個(gè)語句:
printf(“ThisisaCprogram.\n”);
說明:函數(shù)printf是系統(tǒng)提供的一個(gè)庫函數(shù),printf函數(shù)的功能是向顯示器輸出一段信息,具體內(nèi)容括在雙引號內(nèi);參數(shù)中的“\n”代表一個(gè)命令:輸出完這行字符后換行,不是要求顯示的文字。例2寫出以下程序的運(yùn)行結(jié)果寫出以下程序的輸出結(jié)果#include<stdio.h>voidmain(){printf(“Hello\n”);printf(“world!\n”);}演示ex102例3四則運(yùn)算編程#include<stdio.h>intadd(intx,inty);main(){inta,b,c;scanf("%d%d",&a,&b);c=add(a,b);/*函數(shù)調(diào)用語句*/printf("c=%d",c);}intadd(intx,inty){return(x+y);}演示ex103演示ex104討論減、乘、除的編程輸入函數(shù)Scanf()函數(shù)說明函數(shù)定義1.4C程序設(shè)計(jì)語言的執(zhí)行對于C語言程序來說,這一過程一般分為4步:第1步:編輯源程序;第2步:編譯;第3步:鏈接;第4步:執(zhí)行;(整個(gè)過程如下圖)filename.c編輯(edit)編輯器filename.obj預(yù)處理編譯(compile)編譯器filename.exe庫函數(shù)和其他目標(biāo)模塊鏈接(link)鏈接器出錯(cuò)出錯(cuò)執(zhí)行(excute/run)結(jié)果出錯(cuò)出錯(cuò)調(diào)試debug編譯編譯就是把用C語言描述的程序翻譯成計(jì)算機(jī)可以直接理解并執(zhí)行的機(jī)器語言命令組成的程序。C語言的編譯過程分為兩個(gè)階段:首先是編譯預(yù)處理,系統(tǒng)要先掃描程序,處理所有預(yù)處理命令,如把文件包含命令要求的文件包含(嵌入)到程序中。然后才開始編譯。編譯后得到的文件稱為目標(biāo)文件。目標(biāo)文件就是用機(jī)器語言描述的文件。C語言的目標(biāo)文件的后綴為.obj。目標(biāo)文件的主文件名,一般與源程序文件名相同。在編譯過程中,還要對源程序中的語法和邏輯結(jié)構(gòu)進(jìn)行檢查。編譯任務(wù)是由稱做編譯器(compiler)的軟件完成的。程序在編譯過程中,也可能發(fā)現(xiàn)錯(cuò)誤。這時(shí)要重新進(jìn)入編輯器進(jìn)行編輯。鏈接鏈接是將與當(dāng)前程序有關(guān)的、已經(jīng)有的幾個(gè)目標(biāo)模塊鏈接在一起,形成一個(gè)完整的程序代碼文件。這些已經(jīng)有的目標(biāo)模塊有:·庫函數(shù):如前面使用的printf;·對于大的程序,常常分成幾個(gè)模塊,分別編寫、編輯和編譯,形成不同的目標(biāo)模塊。經(jīng)正確鏈接所生成的文件才是可執(zhí)行文件??蓤?zhí)行文件的文件名后綴為.exe(有的系統(tǒng)為.out)。完成鏈接過程的軟件稱為鏈接器(linker)。程序在連接過程中,也可能發(fā)現(xiàn)錯(cuò)誤。這時(shí)也要重新進(jìn)入編輯器進(jìn)行編輯。執(zhí)行鏈接后得到的可執(zhí)行文件名,對操作系統(tǒng)來說,相當(dāng)于一條命令。在操作系統(tǒng)提供的命令界面上打入這個(gè)命令,就可以開始執(zhí)行這個(gè)程序。C語言的集成開發(fā)環(huán)境Turboc2.0Turboc++(選用)Vc++等(1)打開Turboc++運(yùn)行環(huán)境。界面如圖:從圖可以看到在集成環(huán)境的上部,有一行“主菜單”,其中包括下面10個(gè)菜單項(xiàng):
FileEditSearchRunCompileProjectOptionsDebugWindowHelp分別代表:文件操作、編輯、查找、運(yùn)行、編譯、項(xiàng)目文件、選項(xiàng)、調(diào)試、窗口、幫助等功能。用戶可通過以上菜單項(xiàng)來選擇使用TurboC集成環(huán)境所提供的各項(xiàng)主要功能。(2)編輯源程序。在File菜單下選擇NEW子菜單項(xiàng)命令,系統(tǒng)的光標(biāo)處于等待輸入C源程序狀態(tài)。輸入完源程序后,選擇File菜單下選擇Saveas子菜單項(xiàng)命令進(jìn)行保存,在隨后彈出的保存文件對話框中,輸入文件名*.c后按“↙”(3)編譯源程序選擇Compile主菜單項(xiàng)并在其下拉子菜單中選擇Compile命令,則進(jìn)行編譯。若源程序無語錯(cuò)誤,生成可執(zhí)行文件EXE;若源程序有語法錯(cuò)誤,在Message窗口顯示錯(cuò)誤信息,此時(shí)沒有生成可執(zhí)行文件,應(yīng)回到第2步,修改程序的錯(cuò)誤,直到無語法錯(cuò)誤、生成可執(zhí)行文件。返回(4)連接程序在Compile菜單中,選擇Link子菜單項(xiàng)命令,程序?qū)⒈贿B接成可執(zhí)行程序。注:按F9鍵,可一次完成編譯和連接。(5)執(zhí)行程序。選擇Run子菜單命令,或按快捷鍵Ctrl+F9。(6)看結(jié)果。程序運(yùn)行后看結(jié)果必須選擇File菜單下的DOSShell命令或者按快捷鍵Alt+F5,才能看到運(yùn)行的結(jié)果。如程序未得到預(yù)期的結(jié)果,應(yīng)回到第2步,修改程序的錯(cuò)誤。(7)退出TurboC++,F(xiàn)ile---Quit菜單命令或按Alt+X??偨Y(jié):簡單C語言程序設(shè)計(jì)步驟分析問題,設(shè)計(jì)解決方案了解和編寫C語言程序代碼上機(jī)調(diào)試(編輯、編譯、鏈接、執(zhí)行)理論課的主要內(nèi)容實(shí)驗(yàn)課的主要內(nèi)容上述每個(gè)步驟都可能出現(xiàn)很多錯(cuò)誤,具體有三種錯(cuò)誤:語法錯(cuò)誤、邏輯錯(cuò)誤、運(yùn)行錯(cuò)誤??傊?,出現(xiàn)錯(cuò)誤就要進(jìn)行調(diào)試。作業(yè)1、在屏幕上輸出如下圖形:********25****要求:寫出程序,并上機(jī)調(diào)試,盡量保證程序能夠得到正確結(jié)果。復(fù)習(xí)本講內(nèi)容(第一章),預(yù)習(xí)教材第二章。第二章程序的簡單算法制定2.1結(jié)構(gòu)化程序的算法制定2.2結(jié)構(gòu)化程序的算法描述2.3算法制定的范例§2.1結(jié)構(gòu)化程序的算法制定1利用計(jì)算機(jī)處理問題簡述§2.1結(jié)構(gòu)化程序的算法制定例2.1從鍵盤輸入3個(gè)數(shù),找出其中最小的那個(gè)數(shù)。分析:1、需變量的個(gè)數(shù)----3個(gè)
2、先比較a,b的值,把小的存在min中。
3、再用min與c比較,把數(shù)值小的存放在min中。如果a<b則min=a,否則min=b;如果c<min則min=c,否則不變。畫出對應(yīng)的流程圖。演示程序ex201【例】讓某學(xué)生解方程
ax2+bx+c=0
求解過程:①分析問題這是一個(gè)一元二次方程(代數(shù)問題,須中學(xué)代數(shù)知識)②確定處理方案用求根公式③確定解題步驟確定a、b、c的值求出b2-4ac的值如果b2-4ac>0(雙實(shí)根)
X1=……X2=……
如果b2-4ac=0(單實(shí)根)
X1=X2=……
如果b2-4ac<0(雙復(fù)根)
X1=……X2=……④根據(jù)上述步驟計(jì)算⑤寫出答案,整理、分析結(jié)果§2.2結(jié)構(gòu)化程序的算法描述什么是算法
為解決一個(gè)問題所采取的方法和步驟稱為算法。算法的特性
有窮性、確定性、有零個(gè)或多個(gè)輸入、有一個(gè)或多個(gè)輸出、有效性。算法有兩個(gè)很重要的方面:(1)按什么順序或步驟執(zhí)行(2)用什么語句來實(shí)現(xiàn)§2.2結(jié)構(gòu)化程序的算法描述自然語言
特點(diǎn):易懂、冗長、易產(chǎn)生歧義流程圖N-S結(jié)構(gòu)化流程圖PAD圖偽代碼計(jì)算機(jī)語言偽碼語句示例之一
ifstudent’sgradesgreaterthanorequalto60display”Passed”elsedisplay”Failed”偽碼語句示例之二
如果學(xué)生成績大于或等于60
顯示”及格”否則顯示”不及格”C語言源程序段示例if(grade>=60)printf(“Passed!”);elseprintf(“Failed”);算法可采用自然語言、流程圖、N-S圖、PAD圖、偽代碼等方法來描述。示例:根據(jù)學(xué)生成績輸出評定結(jié)果。一、算法(algorithm)二、算法與流程圖——傳統(tǒng)流程圖特點(diǎn):直觀形象;使用流線。缺點(diǎn):占面積大,使用流線任意轉(zhuǎn)移,易出現(xiàn)“亂麻”現(xiàn)象,造成編程與閱讀程序困難。二、算法與流程圖——N-S結(jié)構(gòu)化流程圖
77年美學(xué)者I.Nassi和B.Scheiderman提出。特點(diǎn)①取消流線②不允許流程任意轉(zhuǎn)移,只能從上而下順序執(zhí)行③規(guī)定三種基本結(jié)構(gòu)的流程圖單元,由這些基本結(jié)構(gòu)象搭積木似的組成各種算法(結(jié)構(gòu)化設(shè)計(jì))。優(yōu)點(diǎn)算法清晰,流程不會無規(guī)律亂轉(zhuǎn)移。二、算法與流程圖————三種基本結(jié)構(gòu)通常情況下,程序中的語句是以所編寫的順序一句接一句地執(zhí)行,這種執(zhí)行方法稱為“順序執(zhí)行”。許多C語句能夠讓程序員指定不按編寫順序執(zhí)行下一條執(zhí)行語句,這種執(zhí)行方法稱為“控制轉(zhuǎn)移”。Bohm和Jacopini的研究證實(shí),所有的程序都能夠只用三種控制結(jié)構(gòu)編寫,即◆順序結(jié)構(gòu)◆選擇結(jié)構(gòu)(selectionstructure)◆循環(huán)結(jié)構(gòu)(repetitionstructure)順序結(jié)構(gòu)是C語言的基本結(jié)構(gòu),除非指示轉(zhuǎn)移,否則計(jì)算機(jī)自動(dòng)以語句編寫的順序一句一句地執(zhí)行C語句。任何C語言程序都是由七種控制結(jié)構(gòu)(順序結(jié)構(gòu)、三種選擇結(jié)構(gòu)和三種循環(huán)結(jié)構(gòu))構(gòu)成的。二、算法與流程圖————三種基本結(jié)構(gòu)順序結(jié)構(gòu)
A塊、B塊順序執(zhí)行(每塊代表一個(gè)或一組操作)二、算法與流程圖——三種基本結(jié)構(gòu)選擇結(jié)構(gòu)條件p成立時(shí)執(zhí)行a塊(否則執(zhí)行b塊)if選擇結(jié)構(gòu)條件為真時(shí)執(zhí)行某個(gè)指定的操作,條件為假時(shí)跳過該操作(單路選擇)if…else選擇結(jié)構(gòu)條件為真時(shí)執(zhí)行某個(gè)指定的操作,為假時(shí)執(zhí)行另一個(gè)指定的操作(雙路選擇)switch選擇結(jié)構(gòu)根據(jù)表達(dá)式的值執(zhí)行眾多不同操作中的某個(gè)指定的操作(多路選擇)二、算法與流程圖——三種基本結(jié)構(gòu)循環(huán)結(jié)構(gòu)分當(dāng)型和直到型兩類。當(dāng)型先判斷,只要條件為真就反復(fù)執(zhí)行A塊,為假則結(jié)束循環(huán)。直到型先執(zhí)行A塊,再判斷條件是否為真,為真則繼續(xù)執(zhí)行循環(huán)體,為假則結(jié)束循環(huán)。C語言提供了三種循環(huán)結(jié)構(gòu),即while循環(huán)結(jié)構(gòu),do…while循環(huán)結(jié)構(gòu)和for循環(huán)結(jié)構(gòu)?!?.2.3PAD圖PAD(ProblemAnalysisDiagram)另一種被廣泛使用的一種算法的圖形表示法。PAD圖可以看成是二維的,它能展現(xiàn)算法的層次結(jié)構(gòu)。(順序結(jié)構(gòu)很簡單,在此未畫圖。)§2.3算法制定范例例2.4把從鍵盤輸入的大寫字母轉(zhuǎn)換成小寫字母,輸出結(jié)果。問題:1、描述算法2、根據(jù)算法編寫C程序3、運(yùn)行檢查程序是否正確。
演示ex202§2.3算法制定范例例2.5已知實(shí)數(shù)a和b,計(jì)算u的值:u=(r+s)2。其中,當(dāng)a<b時(shí),r=a2-b2,s=a/b;當(dāng)a≥b時(shí),r=b2-a2,s=a/b+4。算法(自然語言描述):①從鍵盤輸入實(shí)數(shù)a和b。②如果a<b,則r=a2-b2,s=a/b;否則,r=b2-a2,s=a/b+4。③計(jì)算u的值:u=(r+s)2。④輸出u的值。開始輸入a,ba<bTFr=a*a-b*bs=a/br=b*b-a*as=a/b+4結(jié)束u=(r+s)*(r+s)輸出u的值流程圖輸入實(shí)數(shù)a,ba<bFTr=a*a-b*bs=a/br=b*b-a*as=a/b+4計(jì)算的值:u=(r+s)*(r+s)輸出u的值N-S圖輸入實(shí)數(shù)a,ba<br=a*a-b*bs=a/br=b*b-a*as=a/b+4計(jì)算u=(r+s)*(r+s)輸出u的值PAD圖/*例2.5*/#include<stdio.h>main(){
floata,b,r,s,u; printf("請輸入變量a、b的值:"); scanf("%f%f",&a,&b); if(a<b) { r=a*a-b*b; s=a/b; } else { r=b*b-a*a; s=a/b+4; } u=(r+s)*(r+s); printf("所計(jì)算的u的值為:%f",u);}C語言描述小結(jié):
本章主要介紹了程序算法的制定方法:自然語言、流程圖、N-S圖和PAD圖。通過用這些方法表示解題思路。作業(yè):
用流程圖、N-S圖和PAD圖描述問題的算法:從鍵盤輸入3個(gè)整數(shù)a,b,c,輸出其中的最大的數(shù)。
第三章基本程序語句C語言的數(shù)據(jù)類型簡介幾個(gè)基本概念C語言的三種基本數(shù)據(jù)類型基本運(yùn)算符和表達(dá)式C基本語句數(shù)據(jù)的輸出數(shù)據(jù)的輸入簡單程序設(shè)計(jì)舉例3.1C語言的數(shù)據(jù)類型簡介字符型(char)整型(short,int,long,unsigned)單精度型(float)實(shí)型雙精度型(double)
枚舉類型(enum)數(shù)組類型([])構(gòu)造類型結(jié)構(gòu)體類型(struct)共用體類型(union)
指針類型(*) 空類型(void)基本類型數(shù)據(jù)類型C語言的數(shù)據(jù)結(jié)構(gòu)3.2幾個(gè)基本概念3.2.1標(biāo)識符
1.標(biāo)識符概念:是用來標(biāo)識名稱的,可以用來標(biāo)識變量名、符號常量名、函數(shù)名、類型名、數(shù)組名、文件名等。C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線組成,且第一個(gè)字符必須是字母或下劃線。如:Day,month,student,name_1,s2,_12,_t13
注意:C語言中大寫字母和小寫字母被認(rèn)為是兩個(gè)不同的字符,大寫字母‘A’與小寫字母‘a(chǎn)’則表示不同的標(biāo)識符。采用“見名知義”的原則3.2幾個(gè)基本概念3.2.1標(biāo)識符2.標(biāo)識符的分類
關(guān)鍵字(代表固定含義,不能另做他用。書P21)分為三類
預(yù)定義標(biāo)識符(有特定含義,包括C語言庫函數(shù)名和變異預(yù)處理命令允許另做他用,但標(biāo)識符失去原義)
用戶標(biāo)識符(用戶自己定義,不能使用關(guān)鍵字,可以使用預(yù)定義標(biāo)識符,建議不要使用預(yù)定義標(biāo)識符)3.2幾個(gè)基本概念3.2.2常量 在程序運(yùn)行中,其數(shù)值不能被改變的量1.直接常量:是在程序中直接引用的數(shù)據(jù)
2.符號常量:符號常量是用標(biāo)識符來代表一個(gè)數(shù)據(jù)符號常量的定義形式:#define符號常量標(biāo)識符常量數(shù)據(jù)例如:#definePI3.141593.2幾個(gè)基本概念3.2.3變量變量是指以標(biāo)識符為名字,其值可以改變的量。
1、定義形式:類型標(biāo)識符變量名1[,變量名2,變量名3...];
例如:inta,b,c;floatx,y;charc1,c2;或intc1,c2;
自己設(shè)定,滿足標(biāo)識符的規(guī)定。如:int,float,char;不可省變量分為整型、實(shí)型、字符型等。3.2幾個(gè)基本概念3.2.3變量2、變量初始化
在說明變量的同時(shí)給變量一個(gè)初始值。inta=5,b=3;√
inta,b,c;a=b=c=3;√inta=b=c=3;
例如注意:在同一程序塊中,變量不能被重復(fù)定義;使用變量時(shí)必須“先定義,后使用”。3.3
C語言的三種基本數(shù)據(jù)類型3.3.1整型數(shù)據(jù)1、整型常量:
(1)十進(jìn)制形式:與數(shù)學(xué)上的整數(shù)表示相同;例如:12,-100,0(2)八進(jìn)制形式:在數(shù)碼前加數(shù)字0;例如:012=1*81+2*80=10(十進(jìn)制)
(3)十六進(jìn)制形式:在數(shù)碼前加0X(數(shù)字0和字母X)。例如:0x12=1*161+2*160=18(十進(jìn)制)
*八進(jìn)制的數(shù)碼范圍為0~7;018
*
十六進(jìn)制的數(shù)碼除了數(shù)字0~9外,
還使用英文字母a~f(或A~F)表示10~15。如:0x1e√注意!3.3
C語言的三種基本數(shù)據(jù)類型2、整型變量(1)整型變量分類根據(jù)數(shù)據(jù)所占的二進(jìn)制位數(shù)分為:int、short、long;同樣存儲長度的數(shù)據(jù)又分unsigned、signed;故可組合出六種類型。(2)整型數(shù)據(jù)的存儲方式
數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存儲的。C語言中,一個(gè)int型數(shù)據(jù)通常用兩個(gè)字節(jié)存放,其中最高位用來存放整數(shù)的符號,若最高位為0則表示該數(shù)為正數(shù),若最高位為1則表示該數(shù)為負(fù)數(shù)。如:inti=-1;則存放形式為:11111111111111113.3
C語言的三種基本數(shù)據(jù)類型3、值域:變量允許存放的數(shù)值范圍
由機(jī)器中數(shù)據(jù)的存儲長度決定。
VC6.0所支持的整型數(shù)據(jù)
類型名稱所占位數(shù)數(shù)值范圍signed[int]8*4-2147483648~2147483647[signed]short[int]
8*2-32768~32767[signed]long[int]8*4-2147483648~2147483647unsigned[int]8*40~4294967295unsignedshort[int]8*20~65535unsignedlong[int]8*40~42949672953.3
C語言的三種基本數(shù)據(jù)類型例3.1:P24思考:運(yùn)行結(jié)果是否正確,說明理由!#include<stdio.h>main(){inta,b,c,d;unsignedu,v;a=1;b=3;c=6;d=-7;u=a+b;v=c+d;printf("u=%d,v=%u\n",u,v);}3.3
C語言的三種基本數(shù)據(jù)類型3.3.2實(shí)型數(shù)據(jù)1、實(shí)型常量:(1)十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成;例如:3.4,4.,.3(2)指數(shù)形式:“十進(jìn)制小數(shù)”+“e(或E)”+“十進(jìn)制數(shù)整數(shù)”。例如:12.5e-6
表示12.5×10-6
。規(guī)范化指數(shù)形式:
小數(shù)點(diǎn)不能單獨(dú)出現(xiàn);0.√.0√.
e或E的兩邊必須有數(shù),且其后面必須為整數(shù);如:6E0.2
e5
2、實(shí)型變量(分類和值域):關(guān)鍵字字節(jié)數(shù)取值范圍精度(位)float43.4×10-38~
3.4×10387double81.7×10-308~
1.7×1030815注意3.3
C語言的三種基本數(shù)據(jù)類型字符型數(shù)據(jù)1、常量:
(1)用單引號括起來的一個(gè)字符;如:‘A’、‘1’、‘?’等。
(2)用單引號括起來的由反斜杠(\)引導(dǎo)的轉(zhuǎn)義字符。字符形式功能
\n換行
\t橫向跳格
\b退格
\r回車
\\反斜杠字符
\’單引號字符
\ddd8進(jìn)制數(shù)表示的ASCII碼對應(yīng)的字符
\xhh16進(jìn)制數(shù)表示的ASCII碼對應(yīng)的字符例如:字符A的ASCII碼為:
65D(十進(jìn)制)=41H(十六進(jìn)制)=101Q(八進(jìn)制)
∴字符A可以表示為‘A’、’\x41’、’\101’。#include<stdio.h>main(){charc1='a',c2='b',c3='c',c4='\101',c5='\116';printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);printf("\t\b%c%c",c4,c5);}轉(zhuǎn)義字符的應(yīng)用演示ex3043.3
C語言的三種基本數(shù)據(jù)類型2、變量的分類和值域:分類:
char和unsignedchar;值域:每個(gè)字符型數(shù)據(jù)在內(nèi)存中占一個(gè)字節(jié);包括ASCII字符表中的所有字符(可顯示字符和非顯示字符)。3、字符串常量:是用一對雙引號括起來的字符序列。如:“SHANGHAI”,“FGHijk”,“CHINA”。字符串常量的存放:每個(gè)字符均以其ASCII碼存放,且在最后加一個(gè)“空字符”‘\’’√‘\\’√‘’’
‘\’
‘a(chǎn)’與“a”的區(qū)別。注意3.4
基本運(yùn)算符和表達(dá)式
3.4
基本運(yùn)算符和表達(dá)式
3.4
基本運(yùn)算符和表達(dá)式
doublefloatlongunsignedintchar,short
floata=2.0;intb=6,c=3;
a*b/c-1.5+’a’+(b-5)12.0/314.0-1.52.5+97(int)99.5+1100.5(double)3.4
基本運(yùn)算符和表達(dá)式
例如: (1)x=(y=12)/4y值為12,x值為3,表達(dá)式的值為3 (2)x=y=12/4y值為3,x值為3,表達(dá)式的值為3 (3)x=(y=12/4)y值為3,x值為3,表達(dá)式的值為3 (4)(x=y)=12/4
3.4
基本運(yùn)算符和表達(dá)式
3、復(fù)合賦值運(yùn)算符*=、/=、%=、+=、-=等
注意:
復(fù)合運(yùn)算符是一個(gè)運(yùn)算符,但功能上,是兩個(gè)運(yùn)算符功能的組合。例如:(1)a+=b相當(dāng)于a=a+ba*=b相當(dāng)于a=a*ba*=b+c相當(dāng)于a=a*(b+c)而不是
a=a*b+c(2)設(shè)a=12,計(jì)算表達(dá)式a+=a-=a*12和a+=a-=a*=12的值3.4
基本運(yùn)算符和表達(dá)式
4.賦值時(shí)的類型轉(zhuǎn)換實(shí)型數(shù)據(jù)賦給整型(字符型)變量:去掉小數(shù)部分;如:intf=23.457;
變量f的值為23。整型(字符型)數(shù)據(jù)賦給實(shí)型變量:補(bǔ)足有效位。
字符型數(shù)據(jù)賦給整型變量:將字符數(shù)據(jù)(8位)放到整型變量的低8位中,高8位進(jìn)行“符號擴(kuò)展”。
一個(gè)int、short、long、unsigned型數(shù)據(jù)賦給一個(gè)char型變量:截取低8位賦給字符型變量。
帶符號的整型數(shù)據(jù)(int型)賦給long型變量:進(jìn)行符號擴(kuò)展。
帶符號的long型數(shù)據(jù)賦給int型變量時(shí),只截取低16位賦給int變量。
unsignedint
型數(shù)據(jù)賦給longint變量:高位補(bǔ)0。
int
型數(shù)據(jù)賦給unsignedint變量:內(nèi)存情況不變,但若是負(fù)數(shù),其符號位也作為數(shù)值賦給unsigned型變量。3.4
基本運(yùn)算符和表達(dá)式
5、自增與自減運(yùn)算符
單目運(yùn)算符,運(yùn)算對象是變量,不是表達(dá)式或者常量++i,--i:先使變量i的值增1(或減1),再使用變量i的值作為整個(gè)表達(dá)式的值來參加其它的運(yùn)算;i++,i--:先使用變量i的值進(jìn)行其它運(yùn)算,再使變量i的值增1(或減1)。(1)i++;++i;(2)i=3;j=i++;
(3)i=3;j=++i;等價(jià)于i=i+1;j=i;i++;所以i的值為4,j的值為3。i++;j=i;所以i的值為4,j的值為4。例如:3.4
基本運(yùn)算符和表達(dá)式
5、自增與自減運(yùn)算符結(jié)合性:自右至左。如:i=2;j=-i++;
等價(jià)于:j=-(i++);即:j=-i;i++;
“++”與”-“是同優(yōu)先級所以i的值為3,j的值為-2。注意“++”或“--”自增與自減運(yùn)算符的使用。設(shè)i=3,k=(i++)+(i++)+(i++),k=?設(shè)i=3,k=(i++)+(++i)+(++i),k=?設(shè)i=3,j=4,k=i+++j,k=?設(shè)i=3;printf(“%d%d”,i,-i++);結(jié)果為?3.4
基本運(yùn)算符和表達(dá)式
例如3.4
基本運(yùn)算符和表達(dá)式
3.4.5邏輯運(yùn)算符和邏輯表達(dá)式1.3種邏輯運(yùn)算符:&&||!
邏輯量:可以是整型、實(shí)型、字符型和指針類型,
0——假非0——真;如:0,0.0,‘\0’,NULL都代表假。2.邏輯表達(dá)式:用邏輯運(yùn)算符將表達(dá)式連接起來的式子★優(yōu)先級:!>&&>||★結(jié)合性:自左至右;★表達(dá)式的值:若為真,則結(jié)果為1;若為假,則結(jié)果為0。
3.4
基本運(yùn)算符和表達(dá)式
inta=5;floatb=3.5; !a(0) !(a<b)(1) a&&b(1) !a&&b(0) !a&&!b(0) !(a&&b)(0) a||b(1) !a||b(1) !a||!b(0) !(a||b)(0)
(a<b)&&(a>0)(0) (a<b)||(a>0)(1)例如結(jié)論:&&:只要有一個(gè)為假,結(jié)果則為假;||:只要有一個(gè)為真,結(jié)果則為真;
4-01&&28<41015>3&&2||8<4-!53.4
基本運(yùn)算符和表達(dá)式
注意:
在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。例如:
(1)a=0;b=1;c=a++&&(b=3);
結(jié)果:a為1,b為1,c為0。
(2)a=1;b=1;c=0;d=--a||b--||(c=b+3);
結(jié)果:a為0,b為0,c為0,d為1。3.4
基本運(yùn)算符和表達(dá)式
邏輯表達(dá)式一般用于控制語句中的條件:例如:
(1)n是小于m的偶數(shù):
(2)year是閏年:
(能被4整除但不能被100整除或能被400整除)
n<m&&n%2==0(year%4==0&&year%100!=0)||year%400==03.4
基本運(yùn)算符和表達(dá)式
3.4.6條件運(yùn)算符
1、條件運(yùn)算符
?和:,它們與三個(gè)操作數(shù)組成三目運(yùn)算。2、形式為:<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>3、求值規(guī)則和表達(dá)式的值:
真(非0),求解表達(dá)式2
求解表達(dá)式1條件表達(dá)式的值假(0),求解表達(dá)式3例如: intmax,a=5,b=3; max=a>b?a:b a<b?a:b+1
又如:
--a==b++?a++:b++(a=a-1;)4==3(b=b+1;)?a++:b++a為4b為4
04(b=b+1;)
表達(dá)式值為4b為5
∴
a值為4,b值為5,條件表達(dá)式的值為4。
4、
優(yōu)先級:邏輯>條件>賦值
驗(yàn)證:printf("%d%d\n",--a==b++?a++:b++,b);運(yùn)行結(jié)果:453.4
基本運(yùn)算符和表達(dá)式
5、
結(jié)合性:自右至左;
y=x>10?x/10:x>0?x:-x;等價(jià)于:y=x>10?x/10:(x<0?x:-x);思考:當(dāng)x的值為15時(shí),表達(dá)式的結(jié)果為:
當(dāng)x的值為5時(shí),表達(dá)式的結(jié)果為:153.4
基本運(yùn)算符和表達(dá)式
逗號運(yùn)算符:,形式:逗號表達(dá)式1,逗號表達(dá)式2,…,逗號表達(dá)式n
求值規(guī)則:從左至右依次計(jì)算各表達(dá)式的值;
優(yōu)先級:最低;
結(jié)合性:自左至右;
表達(dá)式的值:最后一個(gè)表達(dá)式的值。3.4
基本運(yùn)算符和表達(dá)式
例如:
aby表達(dá)式
y=a=4,b=5,a+b;4549y=(a=4,b=5,a+b);4599y=(a=4,b=5),a+b;4559y=a=(4,b=5),a+b;55510注意:
C語言常用逗號作為分隔符,例如:inta=3,b=4,c=5;printf(“%d,%d,%d”,(a,b,c));×
printf(“%d,%d,%d”,a,(a,b,c),c);結(jié)果為3,5,53.4
基本運(yùn)算符和表達(dá)式
3.4.8強(qiáng)制類型轉(zhuǎn)換運(yùn)算符強(qiáng)制類型轉(zhuǎn)換:指將表達(dá)式的類型強(qiáng)制轉(zhuǎn)換為指定的類型,其一般形式為:(類型名)表達(dá)式其作用:將表達(dá)式的結(jié)果的類型強(qiáng)制轉(zhuǎn)換為類型名所指的類型。例如(int)(3.4+2.8)的值為6
強(qiáng)制類型轉(zhuǎn)換時(shí),得到所需類型的中間變量,而原來變量的類型不會改變。注意:3.4
基本運(yùn)算符和表達(dá)式
例如:
inta=2,b=5;floatx=4.4;
則有:表達(dá)式結(jié)果
b/a2(float)b/a2.5(float)(b/a)2.0(int)x%a+x4.4(int)x%(a+x)不合法3.5
C基本語句
C語言的語句可分為以下四類:簡單語句(包括輸入/輸出語句)空語句復(fù)合語句流程控制語句3.5
C基本語句
簡單語句1.
表達(dá)式語句就是一個(gè)表達(dá)式加上一個(gè)分號。如:a++;x=1;
函數(shù)調(diào)用語句由函數(shù)調(diào)用表達(dá)式加分號構(gòu)成。
printf(“%d”,a);3.空語句
用一個(gè)分號表示,其一般形式為: ;3.5
C基本語句
C語言有豐富的標(biāo)準(zhǔn)函數(shù)庫,可提供各類函數(shù)供用戶調(diào)用,完成預(yù)先設(shè)定好的操作.
#include<stdio.h>#include<math.h>main(){inta=2,b=4;floatx,y;x=a/2+sqrt(b);/*x=3.0*/a++;/*a=3*/y=x*a;/*y=9.0*/printf(“x=%6.2f,y=%6.2f”,x,y);}3.5
C基本語句
常用標(biāo)準(zhǔn)庫函數(shù)求數(shù)學(xué)函數(shù)值:
fabs(x)(求x的絕對值)、pow(x,y)(計(jì)算x的y次冪)、
sin(x)、cos(x)、exp(x)(求ex)、log(x)(求lnx)等。調(diào)用標(biāo)準(zhǔn)庫函數(shù)要注意以下幾點(diǎn):在程序中要包含相應(yīng)的頭文件例如:
要使用標(biāo)準(zhǔn)的輸入/輸出函數(shù)printf()等需包含頭文件#include<stdio.h>要使用數(shù)學(xué)函數(shù)sqrt()等需包含頭文件#include<math.h>調(diào)用規(guī)則:函數(shù)名(參數(shù)表)3.5
C基本語句
3.5.2復(fù)合語句用一對花括號{}將多條語句組合在一起,在語法上相當(dāng)于一條語句。1、一般形式:{[內(nèi)部數(shù)據(jù)說明;]
語句1;……
語句n;}注意:(1)在復(fù)合語句中說明的變量,是局部變量,僅在復(fù)合語句中有效。(2)復(fù)合語句的}之后,不能有分號。3.5
C基本語句
復(fù)合語句(程序塊)示例【例3.3】main(){ intx=1;
{ intx=2; { intx=3;
printf(“x=%d”,x);
}
printf(“x=%d”,x);
}
printf(“x=%d”,x);}3.6數(shù)據(jù)的輸出1.格式輸出函數(shù)printf()
格式:
printf(“……”,輸出項(xiàng)1,輸出項(xiàng)2,…,輸出項(xiàng)n);
例:printf(“x=%d,y=%f\n”,x,x+3);格式控制(用雙引號括起來,控制輸出項(xiàng)的格式和輸出一些提示信息)輸出表列(用逗號分隔的數(shù)據(jù)組,可選項(xiàng))格式控制分為兩個(gè)部分:普通字符—原樣輸出(轉(zhuǎn)義字符按表3-4輸出)格式說明—%+格式字符(替換輸出)
格式說明的一般形式:
%-0m.n
l(或h)格式字符
-左對齊輸出
0數(shù)字前的空位填0m輸出域?qū)挘ㄩL度,包括小數(shù)點(diǎn))
如數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格如數(shù)據(jù)的位數(shù)大于m,則按實(shí)際位數(shù)輸出
n輸出精度(小數(shù)位數(shù))
l或h長度修正符
l長整型及雙精度注:long型的數(shù)據(jù)宜用%ld,double型宜用%lfh表示短整型如%hd%hx3.6數(shù)據(jù)的輸出
格式字符(規(guī)定了輸出的數(shù)據(jù)形式):
%d
輸出十進(jìn)制整數(shù)
%x
以十六進(jìn)制無符號形式輸出整數(shù)
%o
以八進(jìn)制無符號形式輸出整數(shù)
%u
以無符號十進(jìn)制數(shù)形式輸出整數(shù)
%f
輸出小數(shù)形式浮點(diǎn)數(shù)(double型用%lf
)
%s
輸出字符串
%c
輸出單字符3.6數(shù)據(jù)的輸出【例1】求運(yùn)行結(jié)果。main(){inta=30;printf("%d,%o,%x,%u,%c",a,a,a,a,a);}結(jié)果:30,36,1e,30,▲
結(jié)論:
格式字符與對應(yīng)輸出項(xiàng)類型要一致,否則正確的運(yùn)算結(jié)果不能得到正確的顯示結(jié)果。3.6數(shù)據(jù)的輸出
【例】若floaty=1234.9999;printf(“%d”,y);則輸出結(jié)果為何?
printf函數(shù)使用注意事項(xiàng):在格式控制字符串中,格式說明與輸出項(xiàng)從左到右在類型上必須一一對應(yīng)匹配。在格式控制字符串中,格式說明與輸出項(xiàng)的個(gè)數(shù)應(yīng)該相同。如果要輸出百分號(%),則在格式控制串中用兩個(gè)連續(xù)的百分號(%%)來表示。在調(diào)用printf函數(shù)時(shí),輸出項(xiàng)有自增(自減)運(yùn)算時(shí),計(jì)算輸出項(xiàng)的順序從右至左。
3.6數(shù)據(jù)的輸出【例】.格式輸出函數(shù)示例程序#include<stdio.h>main(){inti=97;charch=’a’;printf(“i=%d,%c\n”,i,i);
}輸出結(jié)果:
i=97,a兩個(gè)輸出項(xiàng)都是變量i,但以不同的格式輸出,一個(gè)是輸出的整型數(shù),一個(gè)輸出的是字符a.其格式是由%d與%c控制的.3.6數(shù)據(jù)的輸出字符輸出函數(shù)
格式:
putchar(c)
其中c為字符型或整型的常量、變量及其表達(dá)式
功能:每次向屏幕輸出一個(gè)字符供顯示?!纠壳笠韵鲁绦蜻\(yùn)行結(jié)果
#include<stdio.h>main(){charx='a';putchar(x);putchar('b');putchar(x+2);putchar('b'+2);}結(jié)果:abcd1.格式輸入函數(shù)scanf()
格式:scanf(“……”,&變量名1,&變量名2,…,
&變量名n);
例:scanf(“%d,%d,%d”,&a,&b,&c);3.7數(shù)據(jù)的輸入格式控制(需要輸入數(shù)據(jù)的類型)地址列表(簡單變量要用&開頭)格式說明的一般形式:
%*
ml(或h)
格式字符
&
—求地址的運(yùn)算符&a
表示該變量所占空間的首地址
*
—抑制字符(“虛讀”,即讀入數(shù)據(jù)后不送給任何變量)
注意:
scanf()函數(shù)沒有輸出功能(即不會向屏幕顯示任何字符)也不能規(guī)定小數(shù)位數(shù)(m.n)典型錯(cuò)誤:scanf(“a=%d,b=%d,c=%d\n”,&a,&b,&c);scanf(“%5.2f“,&x);3.7數(shù)據(jù)的輸入正確語句:
printf(“Inputa,b,c=“);scanf(“%d,%d,%d”,&a,&b,&c);scanf(“%5f“,&x);scanf()注意事項(xiàng)字符輸入函數(shù)格式:
getchar()
功能:從鍵盤上讀入一個(gè)字符,getchar()包含在stdio.h中。3.7數(shù)據(jù)的輸入【例一】#include<stdio.h>main(){chara,b;a=getchar();b=getchar();printf(“a=%c,b=%c\n”,a,b);}
運(yùn)行時(shí),如果——
輸入:Student
輸出結(jié)果為a=S,b=t例3.13
輸入圓的半徑,輸出圓的周長和面積。分析:
1.定義實(shí)型變量r、l、s用于存放半徑、周長、面積;2.調(diào)用輸入函數(shù),輸入r:3.分別利用周長公式和面積公式求出l、s;4.調(diào)用輸出函數(shù)輸出l、s。3.8程序舉例例3.10輸入圓的半徑,輸出圓的周長和面積#include<stdio.h>voidmain(){floatr,l,s;
scanf(“%f”,&r);/*輸入一個(gè)浮點(diǎn)數(shù)據(jù),存入地址&r*/l=2*3.14159*r;/*計(jì)算周長,賦值給l*/s=3.14159*r*r;/*計(jì)算面積,賦值給s*/printf(“\nl=%8.4f”,l);/*周長占8個(gè)字符寬,4位小數(shù)*/printf(“\ns=%8.4f”,s);
/*輸出面積,數(shù)據(jù)共占8個(gè)字符寬,4位小數(shù)*/}3.8程序舉例3.8程序舉例例3.12從鍵盤輸入一個(gè)學(xué)生的3門課程的成績,求其平均并輸出,保留一位小數(shù)。例3.11從鍵盤輸入一個(gè)小寫字母,用大寫形式輸出該字母。例3.13從鍵盤輸入兩個(gè)整數(shù)給兩個(gè)變量x和y,交換變量x和y的值,然后輸出。程序流程控制第三章順序結(jié)構(gòu)程序設(shè)計(jì)1第四章選擇結(jié)構(gòu)程序設(shè)計(jì)2第五章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)3幾種控制語句4順序結(jié)構(gòu)程序設(shè)計(jì)順序結(jié)構(gòu):自頂向下順序執(zhí)行語句例:交換兩個(gè)數(shù)的值
34x3t①②③ybefore:x=3,y=4;after:x=4,y=3;#include<stdio.h>main(){ intx=3,y=4,t;printf(“before:x=%d,y=%d\n”,x,y);t=x;x=y;y=t;printf(“after:x=%d,y=%d\n”,x,y);}例:從鍵盤輸入一個(gè)小寫字母,輸出其對應(yīng)的大寫字母及其相應(yīng)的ASCII碼值。程序如下:#include<stdio.h>main(){ charch1,ch2;
ch1=getchar(); ch2=ch1-32; printf("\nletter:%c,ASCII=%d",ch1,ch1); printf("\nletter:%c,ASCII=%d",ch2,ch2);}scanf(“%c”,&ch1);運(yùn)行結(jié)果為:a↙letter:a,ASCII=97letter:A,ASCII=65第四章選擇結(jié)構(gòu)程序設(shè)計(jì)if語句:
1.單分支if語句
2.雙分支if語句
3.多分支if語句選擇結(jié)構(gòu)有兩種:switch語句按給定條件進(jìn)行判斷,按判斷后的不同情況進(jìn)行不同處理。形式二(一般形式):格式:if(expression)statement1elsestatement2
執(zhí)行過程:if語句常用的兩種形式形式一(缺省形式):格式:if(expression)statement執(zhí)行過程:表達(dá)式語句非00例:if(x>y)printf(“%d”,x);表達(dá)式語句1語句2非00例:if(x>y)max=x;elsemax=y;if語句(條件分支語句)【例4-1】在兩個(gè)數(shù)中取大數(shù)。main(){intnum1,num2,max;printf("\ninputtwonumbers:");scanf("%d%d",&num1,&num2);
max=num1;if(max<num2)max=num2;printf("max=%d\n",max);}main()
{intnum1,num2;printf("\ninputtwonumbers:");scanf("%d%d",&num1,&num2);
if(num1>num2) printf("max=%d\n",num1);elseprintf("max=%d\n",num2);}如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);
if(s=2)printf(“hello”);if(s=2,s<0)printf(“false”);else要與if配對使用if后面的表達(dá)式類型任意語句可以是復(fù)合語句同一個(gè)條件的多種表達(dá)方式
如:if(x)
if(x!=0)if(!x)
if(x==0)例考慮下面程序的輸出結(jié)果:#include<stdio.h>main(){intx,y;scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;printf(“%d,%d\n”,x,y);}CompileError!說明:錯(cuò)誤信息:misplacedelseinfunctionmain如:if(a<b){r=a*a-b*b;s=a/b;}else
{r=b*b-a*a;s=a/b+4;}#include<stdio.h>main(){intx,y;printf("Enterintegerx:");scanf("%d",&x);
y=x>=0?2*x+1:0;printf(“whenX=%d,f(x)=%d\n”,x,y);}運(yùn)行:Enterintegerx:10
whenX=10,f(x)=21Enterintegerx:-1
whenX=-1,f(x)=0例求分段函數(shù)的值
if(x>=0)y=2*x+1;elsey=0;?íì3+<=)0(12)0(0)(xxxxf#include<stdio.h>main(){intx,y;printf("Enterintegerx:");scanf("%d",&x);if(x)y=1;elsey=-1;printf(“whenX=%d,y=%d\n“,x,y);}運(yùn)行:Enterintegerx:10
whenX=10,y=1Enterintegerx:0
whenX=0,y=-1例
if(x!=0)?íì=-1!==)0()0(1xxy多分支if語句:if-elseif其格式為: if(表達(dá)式1) 語句1 elseif(表達(dá)式2) 語句2 …… elseif(表達(dá)式n) 語句n else語句n+1【例3-3】將學(xué)生成績由百分制轉(zhuǎn)化為等級制。規(guī)則如下:
⑴85分(含)以上為A級。⑵70分(含)以上且85分以下為B級。⑶60分(含)以上且70分以下為C級。⑷60分以下為D級。main(){floatscore;printf("\npleaseinputascore:");scanf("%f",&score);if(score>=85)printf("thescore%fisA\n",score);elseif(score>=75)printf("thescore%fisB\n",score); elseif(score>=60) printf("thescore%fisC\n",score); else printf("thescore%fisD\n",score);}程序運(yùn)行結(jié)果如下:pleaseinputascore:89↙thescore89.000000isA
if語句嵌套例:#include“stdio.h”main(){intx=4,y=5,z=2,max;max=x;
if(z>y)
if(z>x)max=z;
else
if(y>x)max=y;printf(“max=%d”,max);}結(jié)果?缺省{}時(shí),else總是和它上面離它最近的未配對的if配對if(…)if(…)if(…)else…...else…...else…...if~else配對原則:main(){ intx=100,y=10,a=30,b=20,k1=10,k2=6; if(a>b) if(b!=10) if(!k1)x=1; elseif(k2)x=10; elsex=20;printf("x=%d\n",x);}運(yùn)行結(jié)果:x=10例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if(a==b)
{if(b==c)printf(“a==b==c”);
}elseprintf(“a!=b”);實(shí)現(xiàn)if~else正確配對方法:加{}實(shí)現(xiàn)if~else正確配對方法注意:書寫格式不能代替程序邏輯
if語句嵌套一般形式:if(expr1)if(expr2)statement1elsestatement2內(nèi)嵌ifif(expr1){if(expr2)statement1}elsestatement2
內(nèi)嵌ifif(expr1)statement1elseif(expr3)statement2elsestatement3內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3else
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年湘潭市三院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024年07月浙江縉云農(nóng)商銀行暑期實(shí)習(xí)生招募筆試歷年參考題庫附帶答案詳解
- 2024年07月浙江江山農(nóng)商銀行暑期社會實(shí)踐招考筆試歷年參考題庫附帶答案詳解
- 2024年深圳大學(xué)第一附屬醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024年淮南市朝陽醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024年07月浙江中信銀行金華分行社會招考(730)筆試歷年參考題庫附帶答案詳解
- 2024年渦陽縣中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 《沈陽捷美修改》課件
- 2024年浙江中醫(yī)院大學(xué)附屬第一醫(yī)院浙江省中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 培訓(xùn)工作開展情況
- 林業(yè)專業(yè)知識考試試題及答案
- 2024年湖南省長沙市中考數(shù)學(xué)試題(含解析)
- 2024年大學(xué)華西醫(yī)院運(yùn)營管理部招考聘用3人高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 深圳市南山區(qū)2024-2025學(xué)年數(shù)學(xué)三年級第一學(xué)期期末教學(xué)質(zhì)量檢測模擬試題含解析
- 小學(xué)三年級信息技術(shù)考核方案
- 配電網(wǎng)工程工藝質(zhì)量典型問題及解析
- 2023年二輪復(fù)習(xí)解答題專題二:一次函數(shù)的應(yīng)用方案設(shè)計(jì)型(原卷版+解析)
- 2024上海市化工職業(yè)病防治院上海市職業(yè)安全健康研究院工作人員招聘20人(高頻重點(diǎn)復(fù)習(xí)提升訓(xùn)練)共500題附帶答案詳解
- 五年級上冊豎式計(jì)算題100道及答案
- 人教版英語八年級上冊Unit 6《Im going to study computer science》說課稿
- (完整版)光伏施工質(zhì)量控制重點(diǎn)
評論
0/150
提交評論