




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計(jì)項(xiàng)目教程化學(xué)工業(yè)出版社化學(xué)工業(yè)出版社C語言程序設(shè)計(jì)項(xiàng)目教程化學(xué)工業(yè)出版社化學(xué)工業(yè)出版社0C語言概述C語言的產(chǎn)生和發(fā)展C語言和其他計(jì)算機(jī)語言的比較C語言的特點(diǎn)C語言程序設(shè)計(jì)舉例C語言的結(jié)構(gòu)特點(diǎn)VisualC++6.0開發(fā)工具練習(xí)題本章主要內(nèi)容:引言C語言概述本章主要內(nèi)容:引言C語言的原型ALGOL60語言。(也稱為A語言)1963年,劍橋大學(xué)將ALGOL60語言發(fā)展成為CPL(CombinedProgrammingLanguage)語言。1967年,劍橋大學(xué)的MartinRichards對CPL語言進(jìn)行了簡化,于是產(chǎn)生了BCPL語言。1970年,美國貝爾實(shí)驗(yàn)室的KenThompson將BCPL進(jìn)行了修改,起名“B語言”。1972年,美國貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計(jì)出了一種新的語言,這就是C語言。1978年由美國電話電報公司(AT&T)貝爾實(shí)驗(yàn)室正式發(fā)表了C語言。1989年,由美國國家標(biāo)準(zhǔn)化協(xié)會(AmericanNationalStandardsInstitute)在此基礎(chǔ)上制定了一個C語言標(biāo)準(zhǔn),通常稱之為89ANSIC。1994年,ISO又重新修訂了C語言的標(biāo)準(zhǔn),正式成為現(xiàn)行的C語言標(biāo)準(zhǔn)。一、C語言的產(chǎn)生和發(fā)展C語言的原型ALGOL60語言。(也稱為A語言)一、C語言二、幾種程序設(shè)計(jì)語言的比較機(jī)器語言:用二進(jìn)制代碼表達(dá)的計(jì)算機(jī)語言,指令用0和1組成。優(yōu)點(diǎn):計(jì)算機(jī)可以直接識別,不需要進(jìn)行任何翻譯,執(zhí)行速度最快。缺點(diǎn):可讀性差,不便于交流與合作;嚴(yán)重地依賴于具體的計(jì)算機(jī),可移植性差,重用性差。
匯編語言:用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標(biāo)號(Label)代替地址碼優(yōu)點(diǎn):能夠直接訪問與硬件相關(guān)的存儲器或I/O端口;能夠最大限度地發(fā)揮硬件的功能。
缺點(diǎn):操作碼量大,難于記憶,不好維護(hù)。二、幾種程序設(shè)計(jì)語言的比較機(jī)器語言:用二進(jìn)制代碼表達(dá)的計(jì)算機(jī)二、幾種程序設(shè)計(jì)語言的比較高級語言:語法和結(jié)構(gòu)類似于普通英文,遠(yuǎn)離 對硬件的直接操作優(yōu)點(diǎn):算法語言,易學(xué)、易掌握;遠(yuǎn)離機(jī)器語言,與具體的計(jì)算機(jī)硬件關(guān)系不大,可移植性好,重用率高。
※※※C語言就是一種獨(dú)立于機(jī)器,編碼相對短,可讀性強(qiáng)的高級語言。二、幾種程序設(shè)計(jì)語言的比較高級語言:語法和結(jié)構(gòu)類似于普通英文機(jī)器語言匯編語言高級語言面向過程面向?qū)ο驝PU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成如:1011010000000000加法
用助記符號描述的指令系統(tǒng)如ADDA,B程序設(shè)計(jì)是數(shù)據(jù)被加工的過程語法類似于英語如c語言c=a+b圖表:計(jì)算機(jī)語言的發(fā)展過程機(jī)器語言匯編語言高級語言面向過程面向?qū)ο驝PU指令系統(tǒng),由0三、C語言的特點(diǎn)語言簡潔、靈活,便于學(xué)習(xí)和使用。運(yùn)算符類型豐富。數(shù)據(jù)類型豐富,并有多種數(shù)據(jù)結(jié)構(gòu)。具有結(jié)構(gòu)化的控制語句,層次清晰,便于使用、維護(hù)以及調(diào)試。高效率的目標(biāo)代碼。能對硬件進(jìn)行編程。同匯編語言相比,用C語言寫的程序可移植性好程序設(shè)計(jì)較自由,語法限制不嚴(yán)格。三、C語言的特點(diǎn)語言簡潔、靈活,便于學(xué)習(xí)和使用。四、C語言的格式及結(jié)構(gòu)特點(diǎn)【例0.1】編寫程序,在計(jì)算機(jī)屏幕上顯示Hello,World!
#include<stdio.h>main(){printf(“Hello,World!”);}主函數(shù)開始主函數(shù)體開始標(biāo)志C語句主函數(shù)體結(jié)束標(biāo)志C語句結(jié)束程序代碼:分析幾個簡單的C程序四、C語言的格式及結(jié)構(gòu)特點(diǎn)【例0.1】編寫程序,在計(jì)算機(jī)【例0.2】編寫程序求解123+456的和。#include<stdio.h>main(){ inta,b,sum; a=123;b=456; sum=a+b; printf(“sumis%d:\n”,sum); }定義變量,所有的變量的定義都要放在程序的聲明部分“=”賦值語句,念做123賦值給a預(yù)處理命令,為調(diào)用printf()函數(shù)注意:沒有“;”四、C語言的格式及結(jié)構(gòu)特點(diǎn)分析幾個簡單的C程序運(yùn)行后輸出:sumis579
【例0.2】編寫程序求解123+456的和。定義變量,所有的#include<stdio.h>#definePI3.1415926 main() { floatr,a,c; r=2.5; /*輸入圓的半徑*/ a=PI*r*r; c=2*PI*r; printf(“r=%f,a=%f,c=%f\n”,r,a,c);} 運(yùn)行后輸出:r=2.500000,a=19.634954,c=15.707963四、C語言的格式及結(jié)構(gòu)特點(diǎn)練一練:分析下列程序的功能#include<stdio.h>運(yùn)行后輸出:r=2【例0.4】從鍵盤輸入兩個數(shù),求其中的最大值。被調(diào)用的子函數(shù)主函數(shù)四、C語言的格式及結(jié)構(gòu)特點(diǎn)分析幾個簡單的C程序#include<stdio.h>intmax(intx,inty);main() { inta,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“max=%d”,c); }intmax(intx,inty){intz; if(x>y)z=x; elsez=y; return(z); }【例0.4】從鍵盤輸入兩個數(shù),求其中的最大值。被調(diào)用的主五、C語言的結(jié)構(gòu)特點(diǎn)一個C程序由一個或多個函數(shù)組成,其中有且只有一個用“main”命名的主函數(shù),程序都是從main函數(shù)開始到main函數(shù)結(jié)束。每個函數(shù)由{}表示開始和結(jié)束在其內(nèi)部包含的是函數(shù)體。每個C語句以“;”(分號)結(jié)尾。C程序的書寫格式比較自由。函數(shù)體中可以有定義和執(zhí)行部分,定義部分必須放在執(zhí)行部分的前面可以在程序的任何位置用“/*……*/”對C程序中的任何部分作注釋。五、C語言的結(jié)構(gòu)特點(diǎn)一個C程序由一個或多個函數(shù)組成,其中有且練一練:選擇題『0.1』一個C程序的執(zhí)行是從________。(A)本程序的main函數(shù)開始,到main函數(shù)結(jié)束。(B)本程序的第一個函數(shù)開始,到本程序文件的最后一個函數(shù)結(jié)束。(C)本程序的main函數(shù)開始,到本程序文件的最后一個函數(shù)結(jié)束。(D)本程序的第一個函數(shù)開始,到本程序main函數(shù)結(jié)束?!?.2』以下敘述不正確的是_________。(A)一個C源程序可由一個或多個函數(shù)組成。(B)一個C源程序必須包含一個main函數(shù)。(C)程序的基本組成單位是函數(shù)。(D)在C程序中,注釋說明只能位于一條語句的后面?!?.3』C語言規(guī)定:在一個源程序中,main函數(shù)的位置___。
(A)必須在最開始 (B)必須在所有函數(shù)的后面
(C)可以任意 (D)必須在最后練一練:選擇題填空題『0.4』函數(shù)體是有符號____開始,符號____結(jié)束。函數(shù)體的前面是____部分,后面是____部分。『0.5』一個C源程序中至少應(yīng)包括一個_______。『0.6』在一個C源程序中,注釋部分兩側(cè)的分界符分別為_____和_________。練一練:填空題練一練:觀察以下程序,指出C程序的錯誤所在。#include<stdio.h>;main();floatr,s;/*/*risradius*/*/r=5.0s=3.14*r*r;printf(“%f\n”,s)main()后面沒有“;”預(yù)處理命令,沒有;注釋不能再套一層注釋每條語句后都要有“;”“{}”括起整個函數(shù)體練一練:觀察以下程序,指出C程序的錯誤所在。main()后面沒有“;【實(shí)驗(yàn)0.1】一個簡單的C語言程序編寫用printf語句將3個字符串:goodmorning,floppydisk,harddisk顯示在計(jì)算機(jī)屏幕上的程序?!緦?shí)驗(yàn)0.2】按照要求輸入程序,查看程序運(yùn)行的結(jié)果 輸入并運(yùn)行下面程序,分析其運(yùn)行結(jié)果。
#include<stdio.h> main() { printf("和是%f",16.8+27.5);
printf("差是%f\n",16.8-27.5); printf("積是%f",16.8*27.5); printf("商是%f\n",16.8/27.5); }上機(jī)實(shí)驗(yàn)【實(shí)驗(yàn)0.1】一個簡單的C語言程序上機(jī)實(shí)驗(yàn)【實(shí)驗(yàn)0.3】輸入并運(yùn)行下面程序,分析其運(yùn)行結(jié)果。 按照下面的程序,輸入到VisualC++6.0集成開發(fā)環(huán)境中,并分析運(yùn)行結(jié)果#include<stdio.h>main(){ printf("表達(dá)式1的值:%f\n",99.7*0.26+4.25); printf("表達(dá)式2的值:%d\n",1/2+1/3+1/4+1/5); printf("表達(dá)式3的值:%f\n",3.5/(6.1+2.0*(2.9-1.4*2.7)));}【實(shí)驗(yàn)0.3】輸入并運(yùn)行下面程序,分析其運(yùn)行結(jié)果。系統(tǒng)總體設(shè)計(jì)C語言的產(chǎn)生和發(fā)展C語言和其他計(jì)算機(jī)語言的比較C語言的特點(diǎn)C語言程序設(shè)計(jì)舉例C語言的結(jié)構(gòu)特點(diǎn)VisualC++6.0開發(fā)工具練習(xí)題本章主要內(nèi)容:第1章系統(tǒng)總體設(shè)計(jì)本章主要內(nèi)容:第1章1、關(guān)于程序知識儲備人機(jī)能夠?qū)υ?,是因?yàn)橛?jì)算機(jī)可以執(zhí)行程序……人機(jī)進(jìn)行對話所使用的語言,就是程序設(shè)計(jì)語言……程序是為了使計(jì)算機(jī)完成指定的任務(wù)而編寫的具有特定語法規(guī)則的指令序列。C語言就是一種完成程序設(shè)計(jì)的高級語言。用C語言編寫的程序叫做“源程序”,文件為*.c1.1程序和程序設(shè)計(jì)1、關(guān)于程序知識儲備人機(jī)能夠?qū)υ?,是因?yàn)橛?jì)算機(jī)可以執(zhí)行程序…C語言程序編輯與運(yùn)行流程開始編輯源程序編譯連接程序編譯連接有錯?運(yùn)行程序運(yùn)行有錯?結(jié)束修改程序調(diào)試程序真假假真注意上述過程都在IDE(集成開發(fā)環(huán)境)
中進(jìn)行!程序員只需要在IDE中完成*.c的源文件的設(shè)計(jì)和程序的調(diào)試*.obj*.c*.exeC語言程序編輯與運(yùn)行流程開始編輯源程序編譯連接程序編譯連接有2程序設(shè)計(jì)用程序設(shè)計(jì)語言來描述問題的求解過程,以及對其中參與運(yùn)算的數(shù)據(jù)進(jìn)行合理地組織和安排,就叫做程序設(shè)計(jì)。分析問題確定算法畫流程圖編寫程序運(yùn)行調(diào)試總結(jié)過程基本步驟程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法知識儲備1.1程序和程序設(shè)計(jì)2程序設(shè)計(jì)用程序設(shè)計(jì)語言來描述問題的求解過程,以及對其有窮性確定性可行性有一個或者多個輸入輸出算法描述常見工具:流程圖N-S圖1.2算法的概念及描述方法算法是針對提出的可行方案確定解決問題、完成任務(wù)的每一個細(xì)節(jié)步驟。好的算法有窮性算法描述常見工具:流程圖1.2算法的概念及描述方開始框一般處理框判斷框結(jié)束框流程線1.2算法的概念及描述方法
流程圖開始框一般處理框判斷框結(jié)束框流程線1.2算法的概念及描輸入rr>0真假S=π·r2C=2π·r輸出S,C
N-S流程圖1.2算法的概念及描述方法輸入rr>0S=π·r2輸出S,CN-S流程圖1.21.3C程序設(shè)計(jì)中的三種基本結(jié)構(gòu)順序結(jié)構(gòu)——自頂向下,無分支,無轉(zhuǎn)移選擇結(jié)構(gòu)——有分支,需條件判斷循環(huán)結(jié)構(gòu)——有轉(zhuǎn)移,某些語句可重復(fù)執(zhí)行當(dāng)型循環(huán)直到型循環(huán)1.3C程序設(shè)計(jì)中的三種基本結(jié)構(gòu)順序結(jié)構(gòu)——自頂(a)流程圖表示法(b)N-S圖表示法1.3C程序設(shè)計(jì)中的三種基本結(jié)構(gòu)順序結(jié)構(gòu)(a)流程圖(b)N-S圖1.3C程序設(shè)計(jì)中的三(a)流程圖表示法(b)N-S圖表示法1.3C程序設(shè)計(jì)中的三種基本結(jié)構(gòu)選擇結(jié)構(gòu)(a)流程圖(b)N-S圖1.3C程序設(shè)計(jì)中的三當(dāng)條件判斷表達(dá)式為真
循環(huán)體語句判斷表達(dá)式循環(huán)體語句真假循環(huán)體語句直到判斷表達(dá)式為假循環(huán)體語句判斷表達(dá)式假真當(dāng)型循環(huán)直到型循環(huán)1.3C程序設(shè)計(jì)中的三種基本結(jié)構(gòu)循環(huán)結(jié)構(gòu)當(dāng)條件判斷表達(dá)式為真循環(huán)體語主函數(shù)子函數(shù)語句dmainabcgkfhjiel自上而下,逐步細(xì)化模塊化結(jié)構(gòu)程序設(shè)計(jì)主函數(shù)dmainabcgkfhjiel自上而下,逐步細(xì)化模塊1.4函數(shù)的定義和使用主函數(shù):main(),是必須存在且唯一的,是程序執(zhí)行的入口。從使用角度分:標(biāo)準(zhǔn)庫函數(shù):以程序庫的形式直接提供給用戶使用。
stdio.h……gets()、printf() math.h……sin()、sqrt()用戶自定義函數(shù):由用戶自己建立定義。函數(shù)的分類1.4函數(shù)的定義和使用主函數(shù):main(),是1.4函數(shù)的定義和使用函數(shù)的分類從函數(shù)形式分:無參函數(shù):調(diào)用函數(shù)時主函數(shù)不將數(shù)據(jù)傳送給被調(diào)函數(shù)。用于完成特定功能的操作。如:c=getchar()……有參函數(shù):調(diào)用函數(shù)時在主調(diào)函數(shù)和被調(diào)函數(shù)之間有參數(shù)傳遞。如:putchar(c)、puts(str)、……兩種函數(shù)分類是獨(dú)立的注意1.4函數(shù)的定義和使用函數(shù)的分類從函數(shù)形式分:兩實(shí)例
演示庫函數(shù)的使用題目:求函數(shù)
的值,x的值通過鍵盤輸入。#include<stdio.h>#include<math.h>main(){floatx,y;scanf("%f",&x);y=sqrt(fabs(x))+1;printf("%f",y);}數(shù)學(xué)函數(shù):fabs(x):求x的絕對值。sqrt(n):計(jì)算n的平方根。輸入輸出函數(shù):scanf(),printf()。調(diào)用標(biāo)準(zhǔn)庫函數(shù)前要求使用include命令包含庫函數(shù)所對應(yīng)的頭文件。實(shí)例庫函數(shù)的使用題目:求函數(shù)實(shí)例
演示無參函數(shù)的定義及調(diào)用#include<stdio.h>voidprint_star();voidprint_text();main(){print_star();print_text();print_star();}voidprint_star(){printf("********************************\n");}voidprint_text(){printf("GoodMorning!\n");}無參函數(shù)的定義形式:【類型標(biāo)識符】函數(shù)名(){說明部分;
語句部分
}無參函數(shù)的調(diào)用:函數(shù)語句:print_star();函數(shù)說明:函數(shù)要求必須“先定義后使用”,若函數(shù)的定義位置在調(diào)用之后,要求在主函數(shù)的上面要進(jìn)行函數(shù)的原型說明,即說明函數(shù)名、函數(shù)返回值類型、形參類型及個數(shù)等。實(shí)例無參函數(shù)的定義及調(diào)用#include<stdio.h>函數(shù)調(diào)用語句主調(diào)函數(shù)被調(diào)函數(shù)函數(shù)體實(shí)參形參a)程序流向b)參數(shù)傳遞函數(shù)調(diào)用過程示意函數(shù)調(diào)用語句主調(diào)函數(shù)被調(diào)函數(shù)函數(shù)體實(shí)參形參a)程序流向b實(shí)例
演示有參函數(shù)的定義及調(diào)用main(){inta,b,c;scanf("%d%d",&a,&b);c=max(a,b);printf("max=%d\n",c);}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}形式參數(shù)實(shí)際參數(shù)有參函數(shù)定義形式:類型返回值的類型名函數(shù)名(類型名形式參數(shù)1,…,類型名形式參數(shù)n){說明部分;語句部分;}函數(shù)調(diào)用格式:作為表達(dá)式出現(xiàn)在任何允許表達(dá)式出現(xiàn)的地方,參與運(yùn)算。實(shí)例有參函數(shù)的定義及調(diào)用main()形式參數(shù)實(shí)際參數(shù)有參函數(shù)調(diào)用及return語句執(zhí)行圖示:main(){inta,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);printf(“max=%d\n”,c);}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}主調(diào)函數(shù)被調(diào)函數(shù)實(shí)例
演示有參函數(shù)的定義及調(diào)用函數(shù)調(diào)用及return語句執(zhí)行圖示:main()intma函數(shù)調(diào)用的三種方式按照函數(shù)在程序中出現(xiàn)的位置來分;作為表達(dá)式出現(xiàn)在任何允許表達(dá)式出現(xiàn)的地方,參與運(yùn)算。 如:c=max(a,b);作為一條獨(dú)立的語句完成特定的操作。 如:
printf("max=%d\n",c);作為函數(shù)的參數(shù)被其他函數(shù)調(diào)用。 如:printf(“%s\n”,strcpy(str1,”Redrose”));知識歸納:函數(shù)調(diào)用的三種方式按照函數(shù)在程序中出現(xiàn)的位置來分;知識歸納:知識歸納:函數(shù)的返回值是通過return語句傳遞的。return語句的一般形式:
return表達(dá)式;
return(表達(dá)式);知識歸納:函數(shù)的返回值是通過return語句傳遞的。函數(shù)返回值的注意事項(xiàng)返回值類型要與函數(shù)類型一致函數(shù)類型缺省時,系統(tǒng)自動按整型處理。一個函數(shù)中可以有若干個return語句,流程執(zhí)行到哪里,就從哪里返回主調(diào)函數(shù)。若函數(shù)體內(nèi)沒有return語句,則執(zhí)行函數(shù)到末尾,然后返回主調(diào)函數(shù)。當(dāng)不需要返回值的時候,可以用void定義函數(shù)為空類型,表示無返回值。知識歸納:函數(shù)返回值的注意事項(xiàng)返回值類型要與函數(shù)類型一致知識歸納:調(diào)用函數(shù)與被調(diào)函數(shù)的相對位置關(guān)系如使用庫函數(shù),一般應(yīng)在文件開頭用: #include<……>
……函數(shù)調(diào)用遵循“先定義后調(diào)用”的原則。一般被調(diào)函數(shù)放在調(diào)用函數(shù)之前定義。若被調(diào)函數(shù)在調(diào)用函數(shù)之后定義,就必須在調(diào)用函數(shù)中對被調(diào)函數(shù)加以如下說明: 類型名被調(diào)函數(shù)名(參數(shù)類型1,參數(shù)類型2,……參數(shù)類型n);知識歸納:調(diào)用函數(shù)與被調(diào)函數(shù)的相對位置關(guān)系如使用庫函數(shù),一般應(yīng)在文件開#include<stdio.h>intisleap(intyear){intflag;f(year%400==0||(year%4==0&&year%100!=0))flag=1;elseflag=0;returnflag;
}main(){inty;printf("\npleaseinputayear:");scanf("%d",&y);if(isleap(y)==1)printf("\n%disleap.",y);elseprintf("\n%disnotleap.",y);}形式參數(shù)實(shí)際參數(shù)參數(shù)傳遞練一練:分析下面程序功能,結(jié)構(gòu),函數(shù)定義及調(diào)用過程。#include<stdio.h>形式參數(shù)實(shí)際參數(shù)參數(shù)傳遞練一練:分析下面程序功能,結(jié)構(gòu),函數(shù)定義及調(diào)用過程。voidpchar(){printf("************************\n");}doublearea(doubler){doubles;s=3.14*r*r;returns;}doublevolume(doublear,doublehgt){doublevol;vol=ar*hgt/3;returnvol;}#include<stdio.h>#include<conio.h>doublearea(double);doublevolume(double,double);voidpchar();main(){doubler,h,s,v;clrscr();pchar();printf("inputtheradiusandheight:");scanf("%lf%lf",&r,&h);printf("\n");s=area(r);v=volume(s,h);printf("radius=%8.4lf,height=%8.4lf\n",r,h);printf("area=%8.4lf,volume=%8.4lf\n",s,v);pchar();}練一練:分析下面程序功能,結(jié)構(gòu),函數(shù)定義及調(diào)用過程。void練一練:#include<stdio.h>main(){intr1,r2;
doubles1,s2,s;r1=2;r2=5;s1=myarea(r1)s2=myarea(r2)
s=s2-s1;printf("%lf\n",s);}intmyarea(doubler){doubles;s=3.14*r*r;}修改錯誤:練一練:#include<stdio.h>修改錯誤:練一練:#include<stdio.h>floatmyaverage(float,float);main(){floatx,y,z;x=12;y=25;z=myaverage(x,y);printf("%lf\n",z);}分析下面的程序,寫出程序的預(yù)期結(jié)果。floatmyaverage(floata,floatb){floatc;c=(a+b)/2;returnc;}練一練:#include<stdio.h>分析下面的程序,練一練:#include<stdio.h>【①】/*myarea()函數(shù)的原型說明*/【②】/*myvolume()函數(shù)的原型說明*/main(){doubler,h;doubles,v;r=5;h=10;【④】/*調(diào)用myarea()函數(shù)求圓面積*/【⑤】/*調(diào)用myvolume()函數(shù)求體積*/printf("volume=%lf\n",v);}根據(jù)程序功能要求,將程序補(bǔ)充完整。練一練:#include<stdio.h>根據(jù)程序功能要求練一練:doublemyarea(doubler){doubles;s=3.14*r*r;
returns;}doublemyvolume(doublear,doublehgt){doublevol;vol=ar*hgt;returnvol;}練一練:doublemyarea(doubler)練一練:程序設(shè)計(jì)。設(shè)有一個平行四邊形,其頂點(diǎn)坐標(biāo)依次為A(2,2)、B(4,6)、C(8,6)、D(6,2),編寫程序,計(jì)算兩個對角線AC、BD的長度。已知兩點(diǎn)坐標(biāo)(x1,y1)和(x2,y2),求兩點(diǎn)間距離的公式為:程序要求定義函數(shù)mylength()計(jì)算兩坐標(biāo)點(diǎn)之間的長度。
練一練:程序設(shè)計(jì)。設(shè)有一個平行四邊形,其頂點(diǎn)坐標(biāo)依次為A(2任務(wù)一:“學(xué)生成績管理系統(tǒng)”整體結(jié)構(gòu)設(shè)計(jì)任務(wù)一:“學(xué)生成績管理系統(tǒng)”整體結(jié)構(gòu)設(shè)計(jì)功能需求分析步驟1:創(chuàng)建文件存放一批學(xué)生的成績。本系統(tǒng)要求每一位學(xué)生至少存有4門課程的成績和總評成績及平均成績。實(shí)現(xiàn)“添加”、“修改”、“刪除”指定成績記錄的操作。能對一個已存在文件進(jìn)行“打開”、“保存”等操作。能實(shí)現(xiàn)“分類查詢課程成績”、“查詢?nèi)空n程成績”等查詢功能。能對學(xué)生成績進(jìn)行排名。能統(tǒng)計(jì)學(xué)生的“獎學(xué)金獲得情況”,“未獲學(xué)位情況”,“某門課程的總分及平均分”,“某門課程的學(xué)生成績等級情況”等。菜單界面要求美觀,大方,易于操作。能夠安全退出系統(tǒng)。整個系統(tǒng)只有一個出口,程序只能通過該出口結(jié)束。功能需求分析步驟1:創(chuàng)建文件存放一批學(xué)生的成績。本系統(tǒng)要求每分析設(shè)計(jì)步驟2:分析設(shè)計(jì)步驟2:實(shí)驗(yàn)
預(yù)習(xí)【實(shí)驗(yàn)1.1】上機(jī)運(yùn)行以下程序,熟悉函數(shù)的調(diào)用方法。main(){intx,y,z;
x=4;y=12;z=6;fun(x,y,z);printf(“%x=%d;y=%d;z=%d\n”,x,y,z);}fun(inti,intj,intk){intt;t=(i+j+k)/3;printf(“t=%d\n”,t);}main(){inti,j,x,y,n,g;i=4;j=5;g=x=6;y=7;n=8;f(n,6);printf(“g=%d;i=%d;j=%d\n”,g,i,j);
printf(“x=%d;y=%d\n”,x,y);
f(n,8);
}f(inti,intj){
intx,y,g;
g=8;x=7;y=2;
printf(“g=%d;i=%d;j=%d\n”,g,i,j);
printf(“x=%d;y=%d\n”,x,y);}實(shí)驗(yàn)【實(shí)驗(yàn)1.1】上機(jī)運(yùn)行以下程序,熟悉函數(shù)的調(diào)用方法。ma實(shí)驗(yàn)
預(yù)習(xí)【實(shí)驗(yàn)1.2】上機(jī)運(yùn)行以下程序,了解程序的執(zhí)行過程。#include<stdio.h>voidmyswap(int,int);main(){intx,y;x=2;y=4;myswap(x,y);printf("x=%d,y=%d\n",x,y);}voidmyswap(inta,intb){intc;c=a;a=b;b=c;
printf("a=%d,b=%d\n",a,b);
}寫出運(yùn)行以上程序后的預(yù)期結(jié)果。觀察實(shí)際輸出結(jié)果與預(yù)期結(jié)果是否相符。將函數(shù)myswap()中的a和b改為x和y,再觀察運(yùn)行結(jié)果,有什么不同。用單步執(zhí)行的方法,了解程序執(zhí)行過程中數(shù)據(jù)的變化情況。實(shí)驗(yàn)【實(shí)驗(yàn)1.2】上機(jī)運(yùn)行以下程序,了解程序的執(zhí)行過程。#i系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及運(yùn)算第2章知識儲備系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及運(yùn)算第2章知識儲備引導(dǎo):分析C程序組成2.1常量與變量一個C程序是由一個或多個函數(shù)組成,函數(shù)體由若干條C語句組成,那么,C語句又是由什么組成?主函數(shù)……函數(shù)nC語句1C語句2……C語句n常量
變量C程序標(biāo)識符引導(dǎo):分析C程序組成2.1常量與變量一個C程序是由一個或#include<stdio.h>#definePI
3.1415926
main() { floatr,s,c; r=5; /*輸入圓的半徑*/ s=PI*r*r; c=2*PI*r; printf(“r=%f,s=%f,c=%f\n”,r,s,c);}實(shí)例
演示常量與變量使用舉例直接常量符號常量整型常量:11、25、-1;實(shí)型常量:0.2、3.1415,3.0;字符常量:‘A’,‘a(chǎn)’(大小寫代表不同的值)字符串常量:“nice”
、“good”;定義形式#define常量名常量值一般用大寫字母是宏定義預(yù)處理命令,不是C語句,后面沒有“;”#include<stdio.h>實(shí)例常量與變量使用#include<stdio.h>#definePI3.1415926 main() { floatr,s,c;
r=5;
s=PI*r*r;
c=2*PI*r; printf(“r=%f,s=%f,c=%f\n”,r,s,c);}實(shí)例
演示常量與變量使用舉例定義變量rsc變量:變量賦值00000000000000000000000000000101變量參加運(yùn)算重點(diǎn):變量必須先定義后使用;變量的實(shí)質(zhì)是內(nèi)存的存儲單元。#include<stdio.h>實(shí)例常量與變量使用決定了變量的數(shù)據(jù)結(jié)構(gòu)及分配存儲空間的大小。整型變量:存放整型數(shù)據(jù)實(shí)型變量:存放實(shí)型數(shù)據(jù)字符變量:存放字符型數(shù)據(jù)標(biāo)識符是對變量、函數(shù)、數(shù)組等命名的符號。由英文字母、數(shù)字及下劃線構(gòu)成,并且首字符必須為字母或下劃線。標(biāo)識符的種類:關(guān)鍵字:C語言預(yù)先規(guī)定的標(biāo)識符,每個都代表著某一固定含義。預(yù)定義標(biāo)識符:預(yù)先定義并有特定含義的標(biāo)識符用戶標(biāo)識符:用戶自己命名的標(biāo)識符。定義變量的格式:數(shù)據(jù)類型
變量名1,變量名2,……變量名n;分講:變量的定義決定了變量的數(shù)據(jù)結(jié)構(gòu)及分配存儲空間的大小。標(biāo)識符是對變量、函1.C語言允許在定義變量時對變量進(jìn)行初始化,即對變量賦初值。 如:inta=2;
等價于inta;a=2;
2.對變量進(jìn)行初始化,允許只對定義的變量的一部分賦初值。 如:inta,b,c=25; charch1=‘x’,ch2;3.C語言中若有幾個變量初值相同,必須分別賦值。 如:inta=2,b=2,c=2;
不允許:inta=b=c=2;分講:變量定義及初始化
變量在初始化之前,他的值是無意義的(值隨機(jī))1.C語言允許在定義變量時對變量進(jìn)行初始化,即對變量賦初值注意標(biāo)識符區(qū)分大小寫練一練:練習(xí):請找出不合法的標(biāo)識符.unionabc_1232ab3d+babc8*stu_bc8abcdefghi-s10*&%$#注意標(biāo)識符區(qū)分大小寫練一練:練習(xí):請找出不合法的標(biāo)識符.un2.2C語言的數(shù)據(jù)類型C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void定義類型typedef字符類型char枚舉類型enum整型實(shí)型單精度型float雙精度型double數(shù)組結(jié)構(gòu)體struct共用體union短整型short長整型long整型int2.2C語言的數(shù)據(jù)類型C基本類型構(gòu)造類型指針類型空類型v2.2C語言的數(shù)據(jù)類型1.整型數(shù)據(jù)類型整型常量
十進(jìn)制數(shù)如:12、345、0、-5八進(jìn)制數(shù)(以0開頭)如:012、045十六進(jìn)制數(shù)(0x開頭)如:0x12、0x345整型變量基本型(int)短整型(shortint、short)長整型(longint、long)無符號型無符號整型(unsignedint)無符號短整型(unsignedshort)無符號長整型(unsignedlong)問題:0123=()100x123=()100Xff=()102.2C語言的數(shù)據(jù)類型1.整型數(shù)據(jù)類型整型常量 整型變量整形數(shù)據(jù)的所占存儲空間的大小及表示數(shù)的范圍說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機(jī)器硬件和編譯環(huán)境的不同而不同,上表以IBMPC機(jī),和TurboC集成開發(fā)環(huán)境為例。類型符號關(guān)鍵字?jǐn)?shù)值表示范圍所占字節(jié)整型有無(signed)int2-32768~32767(signed)short2-32768~32767(signed)long4-2147483648~21474836472unsigned
int0~6553540~4294967295unsigned
longunsigned
short20~65535需要記憶整形數(shù)據(jù)的所占存儲空間的大小及表示數(shù)的范圍說明:數(shù)據(jù)類型所占#include<stdio.h>main(){intx=123,y=0123,z=0x123;printf(″%d,%d,%d\n″,x,y,z);/*以十進(jìn)制格式輸出*/printf(″%o,%o,%o\n″,x,y,z);/*以八進(jìn)制格式輸出*/printf(″%x,%x,%x\n″,x,y,z);/*以十六進(jìn)制格式輸出*/}實(shí)例
演示整型常量的表示方法#include<stdio.h>實(shí)例整型常量的表示方法實(shí)例
演示整型變量的定義及表示數(shù)范圍舉例#include<stdio.h>main(){inta,b;
longc,d;
unsignede,f;a=32767;b=1;c=2147483647;d=1;e=65535;f=1;printf(″int:%d,%d\n″,a+b,a);printf(″long:%ld,%ld\n″,c+d,c);printf(″unsigned:%u,%u\n″,e+f,e);}運(yùn)行結(jié)果:int:-32768,32767long:-2147483648,2147483647unsigned:0,65535當(dāng)各種整型數(shù)取最大值時,如果再加1,則超出其所能表示的范圍,結(jié)果為該類型取值范圍的最小值。實(shí)例整型變量的定義及表示數(shù)范圍舉例#include<std整數(shù)在內(nèi)存中的存儲方式正整數(shù):用原碼的形式存儲,符號位是“0”;負(fù)整數(shù):用“補(bǔ)碼”的形式存儲,符號位為“1”;
-1用補(bǔ)碼表示為:1111111111111111
有符號整型變量的取值范圍是
-32768~32767(TurboC)3.無符號整數(shù):最高位不再是符號位,整個16二進(jìn)制數(shù)都用來存放整數(shù)。
1111111111111111表示65535整數(shù)在內(nèi)存中的存儲方式正整數(shù):用原碼的形式存儲,符號位是“02.2C語言的數(shù)據(jù)類型2.實(shí)型數(shù)據(jù)類型1)實(shí)型常量:即實(shí)數(shù)或稱浮點(diǎn)數(shù)。以十進(jìn)制形式表示。實(shí)型常量的表示形式小數(shù)形式例如:0.15、.15、0.0、123.(注意:必須有小數(shù)點(diǎn)!)指數(shù)形式
小數(shù)E(或e)整數(shù)
說明:“小數(shù)”表示實(shí)數(shù)的數(shù)值位,即尾數(shù)部分。“E”代表十進(jìn)制數(shù)的基數(shù)10。“整數(shù)”表示10的乘冪。注意:字母E之前必須有數(shù)字!1.23×1033.918e-0021.23E+0033.918×10-2123.00.003918舉例:2.2C語言的數(shù)據(jù)類型2.實(shí)型數(shù)據(jù)類型1)實(shí)型常量:即實(shí)2.2C語言的數(shù)據(jù)類型2.實(shí)型數(shù)據(jù)類型2)實(shí)型變量類型所占字節(jié)有效數(shù)字?jǐn)?shù)的取值范圍定義舉例單精度實(shí)型float46~7-10-37~1038floatx1,y1;雙精度實(shí)型double815~16-10-307~10308doublex2,y2;例:floata;a=123456.789;/*a=123456.789063*/doubleb;b=123456.789;/*b=123456.789000*/2.2C語言的數(shù)據(jù)類型2.實(shí)型數(shù)據(jù)類型2)實(shí)型變量類型所實(shí)例
演示實(shí)型數(shù)據(jù)表示方法#include<stdio.h>main(){floata,b;doublec,d;a=12345.678;b=1.2345678e4;c=12345.678;d=1.2345678E4;printf(″%f,%e\n″,b,a);printf(″%f,%e\n″,d,c);}小數(shù)形式指數(shù)形式以小數(shù)形式形式輸出以指數(shù)形式形式輸出實(shí)例實(shí)型數(shù)據(jù)表示方法#include<stdio.h>小數(shù)2.2C語言的數(shù)據(jù)類型3.字符型數(shù)據(jù)類型字符常量概念:把ASCII碼字符集里的一個字符用單引號括起來稱為字符常量。例如:‘a(chǎn)’(ASCII碼97);‘A’
(ASCII碼65);‘1’(ASCII碼49);‘!’(ASCII碼33)字符常量的分類一般字符常量轉(zhuǎn)義字符常量轉(zhuǎn)義字符功能\n\t\v\r\f\b\\\’\”\ddd\xhh\0回車換行橫向跳若干格(代表“Tab”鍵)豎向跳格回車符換頁符退格符(代表“Backspace”鍵)反斜杠字符“\”單引號字符雙引號字符三位八進(jìn)制數(shù)代表的一個ASCII字符兩位十六進(jìn)制數(shù)代表的一個ASCII字符空值2.2C語言的數(shù)據(jù)類型3.字符型數(shù)據(jù)類型字符常量轉(zhuǎn)義字符字符常量需要注意的事項(xiàng)區(qū)分大小寫;例如‘A’和‘a(chǎn)’表示不同的字符常量。單引號內(nèi)必須要字符:有且只有一個,‘(空格)’也是字符常量‘a(chǎn)’、“a”和a代表不同的意義注意字符常量需要注意的事項(xiàng)注意2.2C語言的數(shù)據(jù)類型3.字符型數(shù)據(jù)類型字符變量例:charc1,c2;c1=‘a(chǎn)’;c2=‘b’;數(shù)據(jù)在計(jì)算機(jī)中以二進(jìn)制形式存放。字符數(shù)據(jù)在內(nèi)存單元中存放的是其對應(yīng)的ASCII碼,且一個字符占用一個字節(jié)。C語言中允許字符常量像整型數(shù)據(jù)一樣參與相關(guān)運(yùn)算。字符ASCII碼內(nèi)存中的格式‘A’6501000001‘B’6601000010…………‘Z’9001100000‘a(chǎn)’9701100001‘b’9801100010…………‘z’12210000000部分字符ASCII表2.2C語言的數(shù)據(jù)類型3.字符型數(shù)據(jù)類型字符變量數(shù)據(jù)在計(jì)實(shí)例
演示字符變量舉例main(){charc1,c2;c1='a';c2=98;printf(“%c,%d\n”,c1,c1);printf("%c,%d\n",c2,c2}字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的。以字符形式輸出。以整數(shù)形式輸出(字符的ASCII碼)。a,97b,98運(yùn)行結(jié)果為:
實(shí)例字符變量舉例main()字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的。以實(shí)例
演示字符型數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算#include<stdio.h>main(){charc1,c2;c1='a';c2='A';c1=c1-32;c2=c2+32;printf("%c,%c\n",c1,c2);}1.程序最終運(yùn)行結(jié)果如何?2.若以整數(shù)形式輸出變量c1,c2,則格式說明符應(yīng)改為?思考問題實(shí)例字符型數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算#include<stdio.h實(shí)例
演示轉(zhuǎn)義字符的使用73例轉(zhuǎn)義字符舉例main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}運(yùn)行結(jié)果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例main(){printf(“Y\b=\n”);}運(yùn)行結(jié)果:屏幕顯示:=實(shí)例轉(zhuǎn)義字符的使用73例轉(zhuǎn)義字符舉例運(yùn)行結(jié)果:(屏幕顯示)實(shí)例
演示利用字符型數(shù)據(jù)輸出鍵盤上沒有的字符編寫程序輸出如下圖形:▲▲▲▲▲▲▲▲▲▲#include<stdio.h>main(){charcx=30printf("%c\n",cxprintf("%c%c\n",cx,cx);printf("%c%c%c\n",cx,cx,cx);printf("%c%c%c%c\n",cx,cx,cx,cx);}思考:能否用以下語句實(shí)現(xiàn)?cx=‘▲’;Printf(“%c\n”,cx);實(shí)例利用字符型數(shù)據(jù)輸出鍵盤上沒有的字符編寫程序輸出如下圖形:概念:字符串常量是指用一對雙引號括起來的字符序列。如“Hello”、“good”等。字符串常量的存儲:系統(tǒng)自動在字符串的末尾加上一個字符串結(jié)束標(biāo)記‘\0’,以此判斷字符串是否結(jié)束。程序中長度為n個字符的字符串常量,在內(nèi)存中需要用n+1個字節(jié)空間來存儲它。舉例:字符串“string”的存儲。string\011511611410511010302.2C語言的數(shù)據(jù)類型字符串常量概念:字符串常量是指用一對雙引號括起來的字符序列。如“He字符常量與字符串常量的區(qū)別二者表示形式不同。字符常量的定界符是‘’,而字符串常量的定界符是“”。如:‘a(chǎn)’是字符常量,而“a”是字符串常量。存儲空間不同。一個字符常量只占1個字節(jié),而一個含有單個字符的字符串常量需要占用2個字節(jié)。如:‘a(chǎn)’在內(nèi)存中只占1個字節(jié),“a”則需占用2個字節(jié)空間。不允許將一個字符串常量賦給一個字符型變量。如:ch=‘a(chǎn)’;是正確的,而ch=“a”;不是將字符a賦值給變量ch。字符常量中‘’是不允許空白,字符串常量允許空白“”,稱為“空串”。字符常量與字符串常量的區(qū)別二者表示形式不同。字符常量的定界符練一練:一.選擇題1.下面四個選項(xiàng)中,均是不合法的用戶標(biāo)識符的選項(xiàng)是:A P_0 dofloat la0 _Ab-a goto int_123 temp INT 2.在C語言中,char型數(shù)據(jù)在內(nèi)存中的存儲形式是:(A)補(bǔ)碼(B)反碼(C)原碼(D)ASCII碼3.設(shè)C語言中,一個int型數(shù)據(jù)在內(nèi)存中占2個字節(jié),則unsignedint型數(shù)據(jù)的取值范圍是:(A)0~255(B)0~32767(C)0~65536(D)0~21474836474.下面不正確的字符串常量是:(A)‘a(chǎn)bc’(B)“12’12”(C)“0”(D)“”練一練:一.選擇題5.在C語言中(以16位PC機(jī)為例),5種基本數(shù)據(jù)類型的存儲空間長度的排列順序?yàn)椋篶har<int<longint<=float<doublechar=int<longint<=float<doublechar<int<longint=float=doublechar=int=longint<=float<double二.填空題。1.C語言中,實(shí)型變量分為_____和_____兩種。2.若有變量定義inta=2;floatb=1.2345;則變量a、b在內(nèi)存占用___字節(jié),b再內(nèi)存中占用__字節(jié)。3.C語言中的轉(zhuǎn)義字符就是以一個_____開頭的字符序列,用來表示ASCII碼字符集中一些不可打印的控制字符和特定功能的字符。5.在C語言中(以16位PC機(jī)為例),5種基本數(shù)據(jù)類型的存儲2.3運(yùn)算符與表達(dá)式(1)算術(shù)運(yùn)算符: +、-、*、/、%、++、--(2)關(guān)系運(yùn)算符: >、<、==、>=、<=、!=(3)邏輯運(yùn)算符: &&、||、!(4)賦值運(yùn)算符: =、復(fù)合的賦值運(yùn)算符(5)逗號運(yùn)算符:,(6)位運(yùn)算符:<<、>>、&、|、~、^(7)條件運(yùn)算符:?:(8)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(類型)學(xué)習(xí)運(yùn)算符應(yīng)注意:運(yùn)算符功能;與操作數(shù)關(guān)系;要求操作數(shù)個數(shù);要求操作數(shù)類型;運(yùn)算符優(yōu)先級別;結(jié)合方向;結(jié)果的類型2.3運(yùn)算符與表達(dá)式(1)算術(shù)運(yùn)算符:學(xué)習(xí)運(yùn)算符應(yīng)注意:運(yùn)算符名稱運(yùn)算規(guī)則運(yùn)算對象類型示例備注+加a+bint,float2.5+1結(jié)果:3.5雙目運(yùn)算符優(yōu)先級:*、/、%高于+、-。%運(yùn)算要求兩個操作數(shù)必須為整型,否則出錯-減a-bint,float2.5-1結(jié)果:1.5*乘a*bint,float2.5*1結(jié)果:2.5/除a/bint,float7.5/3結(jié)果:2.55/2結(jié)果:2%求余a%bint7/3結(jié)果:13/7結(jié)果:3-取負(fù)-aint,float-3單目運(yùn)算符1.圖表講解:算術(shù)運(yùn)算符運(yùn)算符名稱運(yùn)算規(guī)則運(yùn)算對象類型示例備注+加a+bint,f實(shí)例
演示除法和求余運(yùn)算符的運(yùn)算規(guī)則閱讀程序:
main(){ inta=22; intb=3; printf(“%d\n”,a/b);}分析程序運(yùn)行結(jié)果為?運(yùn)行結(jié)果為7,而不是7.333333,為什么?
除法運(yùn)算符的操作數(shù)整數(shù)實(shí)數(shù) 兩個整數(shù)相除,結(jié)果為整數(shù);兩個實(shí)數(shù)相除,結(jié)果為實(shí)數(shù)。例5/2=22-5.0/2.0=-2.5例5/2=-5.0/2.0=兩個整數(shù)相除,結(jié)果為整數(shù);被除數(shù)或除數(shù)為實(shí)數(shù),則相除結(jié)果為實(shí)數(shù)。實(shí)例除法和求余運(yùn)算符的運(yùn)算規(guī)則閱讀程序: 運(yùn)行結(jié)果為7,而不實(shí)例
演示除法和求余運(yùn)算符的運(yùn)算規(guī)則說明:表達(dá)式a%b的運(yùn)算結(jié)果為a除以b的余數(shù),條件是a、b必須為整數(shù)。例15%5=5%2=-5%2=5%-2=5.5%2
23%10=若0<x<y,則:
(x+y)%y=1%10=01-11()3x1第一個數(shù)能被第二個數(shù)整除對2求余為非0值,則此數(shù)不是偶數(shù)負(fù)數(shù)的余數(shù)符號看被除數(shù)對10求余可得到個位數(shù)小的數(shù)對大的數(shù)求余得到的還是它本身實(shí)例除法和求余運(yùn)算符的運(yùn)算規(guī)則說明:表達(dá)式a%b的運(yùn)算結(jié)果為實(shí)例
演示算術(shù)運(yùn)算符的結(jié)合方向練一練:分析下列表達(dá)式的運(yùn)行結(jié)果:-3-2*3+2/3*2-((3-2)*(3+2)/(3*2))算術(shù)運(yùn)算符的優(yōu)先級為*、/、%高于+、-,如果有括號先算括號內(nèi)的。算術(shù)表達(dá)式的結(jié)合性是“自左至右”。算術(shù)運(yùn)算符優(yōu)先級及結(jié)合性:例題1:寫出表達(dá)式(a+b)/2+x%y-z的執(zhí)行過程。①先算括號內(nèi)的a+b;②再算(a+b)/2;③再算x%y;④然后計(jì)算(a+b)/2+x%y;⑤最后計(jì)算(a+b)/2+x%y-z。實(shí)例算術(shù)運(yùn)算符的結(jié)合方向練一練:算術(shù)運(yùn)算符的優(yōu)先級為*、/、實(shí)例
演示不同數(shù)據(jù)類型之間的混合運(yùn)算main(){inti=2;floatj=1.2;doublek=123.4;longx=100;chary='a';printf(″%lf\n″,i*(j+k)+x-y);}兩個不同類型的運(yùn)算量參加運(yùn)算,C編譯系統(tǒng)自動把長度較短的類型轉(zhuǎn)換為長度較長的類型,轉(zhuǎn)換規(guī)律為:“垂直降落,向上位移”,以保證不丟失精度。charfloatintlongdouble實(shí)例不同數(shù)據(jù)類型之間的混合運(yùn)算main()兩個不同類型的運(yùn)算目的:彌補(bǔ)自動類型轉(zhuǎn)換的不足。一般形式:
(類型關(guān)鍵字)(變量名或表達(dá)式)舉例:floata=56.789; intb;b=(int)a%3;(double)b(float)(20%3+4)實(shí)例
演示強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的應(yīng)用華氏溫度轉(zhuǎn)換成攝氏溫度的公式為C=(F-32)*5/9,編寫程序輸入一個華氏溫度F,F(xiàn)為整數(shù),輸出相應(yīng)的攝氏溫度,要求精確到小數(shù)點(diǎn)后一位。#include<stdio.h>main(){intf;floatc;printf(“pleaseinputF:”);scanf(“%d”,&f);c=(float)(f-32)*5/9;printf(“huashi:%d,sheshi:%.2f\n”,f,c);}分析:若直接使用公式計(jì)算,由于分子分母都是整形數(shù)據(jù),則輸出結(jié)果不正確。可用強(qiáng)制轉(zhuǎn)換運(yùn)算符進(jìn)行轉(zhuǎn)換。目的:彌補(bǔ)自動類型轉(zhuǎn)換的不足。實(shí)例強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的應(yīng)用華使用強(qiáng)制類型轉(zhuǎn)換注意:在進(jìn)行強(qiáng)制類型轉(zhuǎn)換時,類型關(guān)鍵字必須用括號括住。在對一個表達(dá)式進(jìn)行強(qiáng)制類型轉(zhuǎn)換時,整個表達(dá)式也要用括號括住。 如:(float)(a+b)(float)a+b在對變量和表達(dá)式進(jìn)行了強(qiáng)制類型轉(zhuǎn)換后,并不改變原變量或表達(dá)式的類型。 如: intz;floatx;doubley; z=(int)(x+y);
執(zhí)行后x、y的類型不變。使用強(qiáng)制類型轉(zhuǎn)換注意:在進(jìn)行強(qiáng)制類型轉(zhuǎn)換時,類型關(guān)鍵字必須用2.圖表講解:賦值運(yùn)算符及表達(dá)式賦值運(yùn)算符舉例等價式備注=a=5x=y+5基本賦值運(yùn)算符+=a+=2a=a+2復(fù)合賦值運(yùn)算符:由其他運(yùn)算符和簡單賦值運(yùn)算符組合而成。-=a-=2a=a-2*=x*=y+5x=x*(y+5)/=x/=y+5x=x/(y+5)%=x%=y+5x=x%(y+5)特點(diǎn):其優(yōu)先級只高于逗號運(yùn)算符,比其他的任何運(yùn)算符都低。賦值表達(dá)式:形式:變量=表達(dá)式運(yùn)算過程:將賦值運(yùn)算符右邊表達(dá)式的值賦給左邊的變量。結(jié)合方式:自右向左2.圖表講解:賦值運(yùn)算符及表達(dá)式賦值運(yùn)算符舉例等價式備注=練一練:
分析,執(zhí)行下列各賦值表達(dá)式后,變量a,b,c的值分別為?(1)a=a+1;(2)a=b=c=2;(3)a=2+(b=3);(4)a=(b=2)*(c=3);a的數(shù)值+1賦值給a。連續(xù)賦值,等價于:a=(b=(c=2));
或者:a=2;b=2;c=2;等價于:b=3;a=2+3=5;等價于:b=2;c=3;a=2*3=6;賦值運(yùn)算符的運(yùn)算過程練一練:a的數(shù)值+1賦值給a。連續(xù)賦值,等價于:a=步驟:(1)求出“表達(dá)式”的值;(2)把求出的表達(dá)式的值與“變量”做op運(yùn)算;(3)把第二步求出的值再賦給“變量”。練習(xí)1:設(shè)x=5,y=2,求x%=y+3的值。練一練:復(fù)合賦值運(yùn)算符的運(yùn)算過程(1)y+35
即:x%=5(2)x%5 0(3)x0練習(xí)2:設(shè)有inta=10;寫出下面表達(dá)式的值。①a+=a②a-=12③a*=3+a④a/=a+a⑤n=5,a%=n%2步驟:練習(xí)1:設(shè)x=5,y=2,求x%=y+3的值。練一練:實(shí)例
演示賦值運(yùn)算符及表達(dá)式實(shí)例#include<stdio.h>main(){inta=4,b=0,c=0;c=b=a*100;printf("a=%d,b=%d,c=%d\n",a,b,c);c=(a=5)+(b=a+5);printf("a=%d,b=%d,c=%d\n",a,b,c);a=10;a+=a-=a*a;printf("a=%d\n",a);}相當(dāng)于c=(b=a*100);對a,b先賦值,再計(jì)算表達(dá)式,對c賦值先進(jìn)行a-=a*a的計(jì)算,它相當(dāng)于a=a-a*a=10-10*10=-90;再進(jìn)行a+=-90的計(jì)算,它相當(dāng)于a=a+(-90)=-90-90=-180。實(shí)例賦值運(yùn)算符及表達(dá)式實(shí)例#include<stdio.h3.圖表講解:關(guān)系運(yùn)算符及表達(dá)式運(yùn)算符名稱示例功能>大于a>ba是否大于b>=大于或等于a>=ba是否大于或等于b<小于a<ba是否小于b<=小于或等于a<=ba是否小于或等于b==等于a==ba是否等于b!=不等于a!=ba是否不等于b結(jié)合方向:自左向右優(yōu)先級別:算術(shù)運(yùn)算符>關(guān)系運(yùn)算符>賦值運(yùn)算符。
自身運(yùn)算符中:<,<=,>,>=的級別高于==,!=。關(guān)系表達(dá)式的值:是邏輯值“真”或“假”,用1和0表示。3.圖表講解:關(guān)系運(yùn)算符及表達(dá)式運(yùn)算符名稱示例功能>大于a例:關(guān)系運(yùn)算符的優(yōu)先級及結(jié)合方向。
c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)a=b>c//a=(b>c)例:設(shè)
inta=3,b=2,c=1,d,f;分析下列關(guān)系表達(dá)式的值。
a>b(a>b)==cb+c<ad=a>bf=a>b>c實(shí)例
演示關(guān)系運(yùn)算符優(yōu)先級及運(yùn)算過程//表達(dá)式值1//表達(dá)式值1//表達(dá)式值0//d=1//f=0例:關(guān)系運(yùn)算符的優(yōu)先級及結(jié)合方向。例:設(shè)inta=3,4.圖表講解:邏輯運(yùn)算符及表達(dá)式邏輯運(yùn)算符名稱示例&&與a>0&&a<100||或a<0||a>100?。▎文浚┓?(a==0)數(shù)據(jù)a數(shù)據(jù)ba&&ba||b!aTTTTFTFFTFFTFTTFFFFT4.圖表講解:邏輯運(yùn)算符及表達(dá)式邏輯運(yùn)算符名稱示例&&與a優(yōu)先級:結(jié)合方向:!
&&||高低!:從右向左&&:從左向右||:從左向右!++--+-算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符賦值運(yùn)算符逗號運(yùn)算符&&
||圖表講解:邏輯運(yùn)算符優(yōu)先級及結(jié)合方向優(yōu)先級:!高低!:從右向左!++-例2:邏輯運(yùn)算符的運(yùn)算過程。
inta=4;b=5;!aa&&ba||b!a||b4&&0||2‘c’&&‘d’例1:邏輯運(yùn)算符的優(yōu)先級。a<=x&&x<=ba==b||x==y!a||a>b//(a<=x)&&(x<=b)//(a==b)||(x==y)//(!a)||(a>b)值為1值為0值為1值為1值為1值為1實(shí)例
演示邏輯運(yùn)算符優(yōu)先級及運(yùn)算過程例2:邏輯運(yùn)算符的運(yùn)算過程。例1:邏輯運(yùn)算符的優(yōu)先級。5.圖表講解:自增、自減運(yùn)算符運(yùn)算符名稱運(yùn)算格式功能++自增運(yùn)算符++i使用i之前將i加1i++使用i之后將i加1--自減運(yùn)算符--i使用i之前將i減1i--使用i之后將i減1前綴式:先執(zhí)行i+1或i-1,再使用i值。前綴式:先執(zhí)行i+1或i-1,再使用i值。5.圖表講解:自增、自減運(yùn)算符運(yùn)算符名稱運(yùn)算格式功能++自例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;a=9;b=-a--;//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4實(shí)例
演示自增、自減運(yùn)算符優(yōu)先級及運(yùn)算過程//a=8,b=-9例j=3;k=++j;//k=4,j=4//k自增、自減運(yùn)算小結(jié):自增運(yùn)算符和自減運(yùn)算符是單目運(yùn)算符,且只能用于單個變量,不能對常量或者表達(dá)式操作;自增運(yùn)算符和自減運(yùn)算符的操作數(shù)可以是整數(shù)或者實(shí)數(shù);當(dāng)前置運(yùn)算或者后置運(yùn)算與其他運(yùn)算結(jié)合在一個表達(dá)式中時:前置運(yùn)算:先增值后引用后置運(yùn)算:先引用后增值“++”和“--”的運(yùn)算結(jié)合方向是從右到左。自增、自減運(yùn)算小結(jié):自增運(yùn)算符和自減運(yùn)算符是單目運(yùn)算符,且只6.圖表講解:逗號運(yùn)算符、逗號表達(dá)式逗號運(yùn)算符:“,”,即順序求值運(yùn)算符。逗號表達(dá)式:用逗號把若干獨(dú)立的運(yùn)算表達(dá)式結(jié)合成一個運(yùn)算表達(dá)式,稱為逗號表達(dá)式。逗號表達(dá)式的一般形式: 表達(dá)式1,表達(dá)式2,……,表達(dá)式n求解過程:先求“表達(dá)式1”,再求“表達(dá)式2”,……,最后求“表達(dá)式n”。整個表達(dá)式的值為“表達(dá)式n”的值。6.圖表講解:逗號運(yùn)算符、逗號表達(dá)式逗號運(yùn)算符:“,”,即實(shí)例
演示逗號運(yùn)算符的使用#include<stdio.h>main(){inta=10,b=10,c=0,d=0,k=0;c=a++;d=b--;k=(a*b,++a,--b);printf("a=%d,b=%d,c=%d,d=%d,k=%d\n",a,b,c,d,k);}解題步驟:求表達(dá)式1:計(jì)算a*b。求表達(dá)式2:再計(jì)算++a。求表達(dá)式3:最后計(jì)算—b。寫結(jié)果:逗號表達(dá)式的值賦值給k。逗號表達(dá)式可以作為賦值運(yùn)算中的表達(dá)式。逗號運(yùn)算符的結(jié)合方向是從左到右。逗號運(yùn)算符是所有運(yùn)算符中級別最低的。實(shí)例逗號運(yùn)算符的使用#include<stdio.h>解題圖表:各運(yùn)算符的優(yōu)先級。C語言中的優(yōu)先級從高到低分為15級。運(yùn)算符的一般順序:先運(yùn)算優(yōu)先級別高的,再運(yùn)算優(yōu)先級別低的。對于優(yōu)先級別相同的運(yùn)算符,按其結(jié)合方向執(zhí)行。優(yōu)先級分級一般規(guī)律:單目運(yùn)算符優(yōu)先級最高,雙目次之,三目較低。雙目運(yùn)算符中,算術(shù)運(yùn)算符較高,關(guān)系次之,邏輯較低(!除外)。位運(yùn)算符中,移位運(yùn)算高于關(guān)系運(yùn)算,位邏輯運(yùn)算低于關(guān)系運(yùn)算。圓括號運(yùn)算符優(yōu)先級最高,逗號運(yùn)算符最低。圖表:各運(yùn)算符的優(yōu)先級。C語言中的優(yōu)先級從高到低分為15級。練一練:1.上機(jī)編譯下面程序,進(jìn)行調(diào)試。#include<stdio.h>main();/*mainfunction*/{floatr;c;r=5.0;c=2πr;printf(“%f\n”,s)2.寫出下列程序的執(zhí)行結(jié)果:#include<stdio.h>main(){inta,b,c;
c=(a=4,b=a++);printf(“a=%d,b=%d,c=%d”,a,b,c);}練一練:1.上機(jī)編譯下面程序,進(jìn)行調(diào)試。2.寫出下列程序練一練:3.寫出下列程序的運(yùn)行結(jié)果:#include<stdio.h>#include<math.h>main(){inta=1,b=2,c=2;floatx=10.5,y=4.0,z;z=(a+b)/
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年北海公考面試試題及答案
- 2025年音樂教師二級試題及答案
- 2025年機(jī)車網(wǎng)絡(luò)控制考試題及答案
- 周公《誡伯禽書》:中國第一部成文家訓(xùn)
- 2025年社區(qū)小食堂面試題及答案
- 2025年國學(xué)簡單測試題及答案
- 2025年鄭州護(hù)士面試試題及答案
- 2025年窗簾裝修測試題及答案
- 2025年粵語進(jìn)階測試題及答案
- 2025年歷史學(xué)筆試復(fù)試題及答案
- 2024-2030年中國石油瀝青市場發(fā)展?fàn)顩r及投資前景規(guī)劃研究報告
- 《X線管裝置》課件
- 2.凸透鏡成像及規(guī)律(講義)(原卷版)
- 餐飲設(shè)備采買合同范例
- 戰(zhàn)傷并發(fā)癥的護(hù)理
- 童裝專賣店?duì)I銷策劃方案
- 尼康D5200說明書簡體中文
- 事業(yè)單位工作人員退休(職)登記表
- 前程無憂招聘測評題庫及答案
- 2024解析:第十章 浮力綜合應(yīng)用-基礎(chǔ)練(解析版)
- 【MOOC】社會調(diào)查與研究方法-北京大學(xué) 中國大學(xué)慕課MOOC答案
評論
0/150
提交評論