C語言程序設(shè)計項目教程_第1頁
C語言程序設(shè)計項目教程_第2頁
C語言程序設(shè)計項目教程_第3頁
C語言程序設(shè)計項目教程_第4頁
C語言程序設(shè)計項目教程_第5頁
已閱讀5頁,還剩197頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計項目教程化學(xué)工業(yè)出版社化學(xué)工業(yè)出版社C語言概述C語言的產(chǎn)生和發(fā)展C語言和其他計算機(jī)語言的比較C語言的特點(diǎn)C語言程序設(shè)計舉例C語言的結(jié)構(gòu)特點(diǎn)VisualC++6.0開發(fā)工具練習(xí)題本章主要內(nèi)容:引言C語言的原型ALGOL60語言。(也稱為A語言)1963年,劍橋大學(xué)將ALGOL60語言發(fā)展成為CPL(CombinedProgrammingLanguage)語言。1967年,劍橋大學(xué)的MartinRichards對CPL語言進(jìn)行了簡化,于是產(chǎn)生了BCPL語言。1970年,美國貝爾實驗室的KenThompson將BCPL進(jìn)行了修改,起名“B語言”。1972年,美國貝爾實驗室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計出了一種新的語言,這就是C語言。1978年由美國電話電報公司(AT&T)貝爾實驗室正式發(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ā)展二、幾種程序設(shè)計語言的比較機(jī)器語言:用二進(jìn)制代碼表達(dá)的計算機(jī)語言,指令用0和1組成。優(yōu)點(diǎn):計算機(jī)可以直接識別,不需要進(jìn)行任何翻譯,執(zhí)行速度最快。缺點(diǎn):可讀性差,不便于交流與合作;嚴(yán)重地依賴于具體的計算機(jī),可移植性差,重用性差。

匯編語言:用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標(biāo)號(Label)代替地址碼優(yōu)點(diǎn):能夠直接訪問與硬件相關(guān)的存儲器或I/O端口;能夠最大限度地發(fā)揮硬件的功能。

缺點(diǎn):操作碼量大,難于記憶,不好維護(hù)。二、幾種程序設(shè)計語言的比較高級語言:語法和結(jié)構(gòu)類似于普通英文,遠(yuǎn)離 對硬件的直接操作優(yōu)點(diǎn):算法語言,易學(xué)、易掌握;遠(yuǎn)離機(jī)器語言,與具體的計算機(jī)硬件關(guān)系不大,可移植性好,重用率高。

※※※C語言就是一種獨(dú)立于機(jī)器,編碼相對短,可讀性強(qiáng)的高級語言。機(jī)器語言匯編語言高級語言面向過程面向?qū)ο驝PU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成如:1011010000000000加法

用助記符號描述的指令系統(tǒng)如ADDA,B程序設(shè)計是數(shù)據(jù)被加工的過程語法類似于英語如c語言c=a+b圖表:計算機(jī)語言的發(fā)展過程三、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è)計較自由,語法限制不嚴(yán)格。四、C語言的格式及結(jié)構(gòu)特點(diǎn)【例0.1】編寫程序,在計算機(jī)屏幕上顯示Hello,World!

#include<stdio.h>main(){printf(“Hello,World!”);}主函數(shù)開始主函數(shù)體開始標(biāo)志C語句主函數(shù)體結(jié)束標(biāo)志C語句結(jié)束程序代碼:分析幾個簡單的C程序【例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

#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)練一練:分析下列程序的功能【例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);}五、C語言的結(jié)構(gòu)構(gòu)特點(diǎn)一個C程序由一個個或多個函函數(shù)組成,,其中有且且只有一個個用“main””命名的主函函數(shù),程序序都是從main函數(shù)開始到到main函數(shù)結(jié)束。。每個函數(shù)由由{}表示開始和和結(jié)束在其其內(nèi)部包含含的是函數(shù)數(shù)體。每個C語句以“;;”(分號號)結(jié)尾。。C程序的書寫寫格式比較較自由。函數(shù)體中可可以有定義義和執(zhí)行部部分,定義義部分必須須放在執(zhí)行行部分的前前面可以在程序序的任何位位置用“/*……*/”對C程序中的任任何部分作作注釋。練一練:選擇題『0.1』』一個C程序序的的執(zhí)執(zhí)行行是是從從________。(A)本程程序序的的main函數(shù)數(shù)開開始始,,到到main函數(shù)數(shù)結(jié)結(jié)束束。。(B)本程程序序的的第第一一個個函函數(shù)數(shù)開開始始,,到到本本程程序序文文件件的的最最后后一一個個函函數(shù)數(shù)結(jié)結(jié)束束。。(C)本程程序序的的main函數(shù)數(shù)開開始始,,到到本本程程序序文文件件的的最最后后一一個個函函數(shù)數(shù)結(jié)結(jié)束束。。(D)本程程序序的的第第一一個個函函數(shù)數(shù)開開始始,,到到本本程程序序main函數(shù)數(shù)結(jié)結(jié)束束。?!?.2』』以下下敘敘述述不不正正確確的的是是_________。(A)一個個C源程程序序可可由由一一個個或或多多個個函函數(shù)數(shù)組組成成。。(B)一個個C源程程序序必必須須包包含含一一個個main函數(shù)數(shù)。。(C)程序序的的基基本本組組成成單單位位是是函函數(shù)數(shù)。。(D)在C程序序中中,,注注釋釋說說明明只只能能位位于于一一條條語語句句的的后后面面。?!?.3』』C語言言規(guī)規(guī)定定::在在一一個個源源程程序序中中,,main函數(shù)數(shù)的的位位置置___。(A)必須須在在最最開開始始(B)必須須在在所所有有函函數(shù)數(shù)的的后后面面(C)可以以任任意意(D)必須須在在最最后后填空空題題『0.4』』函數(shù)數(shù)體體是是有有符符號號____開始始,,符符號號____結(jié)束束。。函函數(shù)數(shù)體體的的前前面面是是____部分分,,后后面面是是____部分分。。『0.5』』一個個C源程程序序中中至至少少應(yīng)應(yīng)包包括括一一個個_______?!?.6』』在一一個個C源程程序序中中,,注注釋釋部部分分兩兩側(cè)側(cè)的的分分界界符符分分別別為為_____和_________。練一一練練::觀察察以以下下程程序序,,指指出出C程序序的的錯錯誤誤所所在在。。#include<stdio.h>;main();floatr,s;/*/*risradius*/*/r=5.0s=3.14*r*r;printf(““%f\n””,s)main()后面面沒沒有有““;””預(yù)處處理理命命令令,,沒沒有有;注釋不能再套一層注釋每條語句后都要有“;”“{}”括起整個函數(shù)體練一一練練::【實驗驗0.1】】一個個簡簡單單的的C語言言程程序序編寫寫用用printf語句句將將3個字字符符串串::goodmorning,floppydisk,harddisk顯示示在在計計算算機(jī)機(jī)屏屏幕幕上上的的程程序序。。【實驗驗0.2】】按照照要要求求輸輸入入程程序序,,查查看看程程序序運(yùn)運(yùn)行行的的結(jié)結(jié)果果輸入入并并運(yùn)運(yùn)行行下下面面程程序序,,分分析析其其運(yùn)運(yùn)行行結(jié)結(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ī)機(jī)實實驗驗【實驗驗0.3】】輸入入并并運(yùn)運(yùn)行行下下面面程程序序,,分分析析其其運(yùn)運(yùn)行行結(jié)結(jié)果果。。按照照下下面面的的程程序序,,輸輸入入到到VisualC++6.0集成成開開發(fā)發(fā)環(huán)環(huán)境境中中,,并并分分析析運(yùn)運(yùn)行行結(jié)結(jié)果果#include<stdio.h>main(){printf("表達(dá)達(dá)式式1的值值::%f\n",99.7*0.26+4.25);printf("表達(dá)達(dá)式式2的值值::%d\n",1/2+1/3+1/4+1/5);printf("表達(dá)達(dá)式式3的值值::%f\n",3.5/(6.1+2.0*(2.9-1.4*2.7)));}系統(tǒng)統(tǒng)總總體體設(shè)設(shè)計計C語言言的的產(chǎn)產(chǎn)生生和和發(fā)發(fā)展展C語言言和和其其他他計計算算機(jī)機(jī)語語言言的的比比較較C語言言的的特特點(diǎn)點(diǎn)C語言言程程序序設(shè)設(shè)計計舉舉例例C語言言的的結(jié)結(jié)構(gòu)構(gòu)特特點(diǎn)點(diǎn)VisualC++++66.0開開發(fā)發(fā)工工具具練習(xí)習(xí)題題本章章主主要要內(nèi)內(nèi)容容::第1章1、關(guān)關(guān)于于程程序序知識識儲儲備備人機(jī)機(jī)能能夠夠?qū)υ捲?,,是是因因為為計計算算機(jī)機(jī)可可以以執(zhí)執(zhí)行行程程序序………人機(jī)機(jī)進(jìn)進(jìn)行行對對話話所所使使用用的的語語言言,,就就是是程程序序設(shè)設(shè)計計語語言言……程序是為了了使計計算機(jī)機(jī)完成成指定定的任任務(wù)而而編寫寫的具具有特特定語語法規(guī)規(guī)則的的指令令序列列。C語言就就是一一種完完成程程序設(shè)設(shè)計的的高級級語言言。用C語言編編寫的的程序序叫做做“源源程序序”,,文件件為*.c1.1程序和和程序序設(shè)計計C語言程程序編編輯與與運(yùn)行行流程程開始編輯源程序編譯連接程序編譯連接有錯?運(yùn)行程序運(yùn)行有錯?結(jié)束修改程序調(diào)試程序真假假真注意上述過過程都都在IDE(集成開開發(fā)環(huán)環(huán)境)中進(jìn)行行!程序員員只需需要在在IDE中完成成*.c的源文文件的的設(shè)計計和程程序的的調(diào)試試*.obj*.c*.exe2程序設(shè)設(shè)計用程序序設(shè)計計語言言來描描述問問題的的求解解過程程,以以及對對其中中參與與運(yùn)算算的數(shù)數(shù)據(jù)進(jìn)進(jìn)行合合理地地組織織和安安排,,就叫叫做程序設(shè)設(shè)計。分析問問題確定算算法畫流程程圖編寫程程序運(yùn)行調(diào)調(diào)試總結(jié)過過程基本步驟程序設(shè)設(shè)計=數(shù)據(jù)結(jié)結(jié)構(gòu)+算法知識儲儲備1.1程序和和程序序設(shè)計計有窮性性確定性性可行性性有一個個或者者多個個輸入入輸出出算法描描述常常見工工具::流程圖圖N-S圖1.2算法的的概念念及描描述方方法算法是針對對提出出的可可行方方案確確定解解決問問題、、完成成任務(wù)務(wù)的每每一個個細(xì)節(jié)節(jié)步驟驟。好的算算法開始框框一般處處理框框判斷框框結(jié)束框框流程線線1.2算法的的概念念及描描述方方法流程圖圖輸入rr>0真假S=π·r2C=2π·r輸出S,CN-S流程圖圖1.2算法的的概念念及描描述方方法1.3C程序設(shè)設(shè)計中中的三三種基基本結(jié)結(jié)構(gòu)順序結(jié)結(jié)構(gòu)——自頂向向下,,無分分支,,無轉(zhuǎn)轉(zhuǎn)移選擇結(jié)結(jié)構(gòu)——有分支支,需需條件件判斷斷循環(huán)結(jié)結(jié)構(gòu)——有轉(zhuǎn)移移,某某些語語句可可重復(fù)復(fù)執(zhí)行行當(dāng)型循循環(huán)直到型型循環(huán)環(huán)(a)流程程圖表示法法(b)N-S圖表示法法1.3C程序設(shè)設(shè)計中中的三三種基基本結(jié)結(jié)構(gòu)順序結(jié)結(jié)構(gòu)(a)流程程圖表示法法(b)N-S圖表示法法1.3C程序設(shè)設(shè)計中中的三三種基基本結(jié)結(jié)構(gòu)選擇結(jié)結(jié)構(gòu)當(dāng)條件判斷表達(dá)式為真

循環(huán)體語句判斷表達(dá)式循環(huán)體語句真假循環(huán)體語句直到判斷表達(dá)式為假循環(huán)體語句判斷表達(dá)式假真當(dāng)型循循環(huán)直到型型循環(huán)環(huán)1.3C程序設(shè)設(shè)計中中的三三種基基本結(jié)結(jié)構(gòu)循環(huán)結(jié)結(jié)構(gòu)主函數(shù)數(shù)子函數(shù)數(shù)語句dmainabcgkfhjiel自上而而下,,逐步步細(xì)化化模塊化化結(jié)構(gòu)構(gòu)程序序設(shè)計計1.4函數(shù)的的定義義和使使用主函數(shù)數(shù):main(),是必須須存在在且唯唯一的的,是是程序序執(zhí)行行的入入口。。從使用角角度分:標(biāo)準(zhǔn)庫庫函數(shù)數(shù):以程序序庫的的形式式直接接提供供給用用戶使使用。。stdio.h……gets()、printf()math.h……sin()、sqrt()用戶自自定義義函數(shù)數(shù):由用用戶自自己建建立定定義。。函數(shù)的的分類類1.4函數(shù)的的定義義和使使用函數(shù)的的分類類從函數(shù)形形式分:無參函函數(shù):調(diào)用函函數(shù)時主主函數(shù)不不將數(shù)據(jù)據(jù)傳送給給被調(diào)函函數(shù)。用用于完成成特定功功能的操操作。如:c=getchar()……有參函數(shù)數(shù):調(diào)用函函數(shù)時在在主調(diào)函函數(shù)和被被調(diào)函數(shù)數(shù)之間有有參數(shù)傳傳遞。如:putchar(c)、puts(str)、……兩種函數(shù)數(shù)分類是是獨(dú)立的的注意實例演示庫函數(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ù)數(shù):fabs(x):求x的絕對值值。sqrt(n):計算n的平方根根。輸入輸出函數(shù):scanf(),printf()。調(diào)用標(biāo)準(zhǔn)準(zhǔn)庫函數(shù)數(shù)前要求求使用include命令包含含庫函數(shù)數(shù)所對應(yīng)應(yīng)的頭文文件。實例演示無參函數(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ù)數(shù)的定義義形式::【類型標(biāo)識識符】函數(shù)名(){說明部分分;語句部分分}無參函數(shù)數(shù)的調(diào)用用:函數(shù)語句句:print_star();函數(shù)說明明:函數(shù)要求求必須““先定義義后使用用”,若若函數(shù)的的定義位位置在調(diào)調(diào)用之后后,要求求在主函函數(shù)的上上面要進(jìn)進(jìn)行函數(shù)數(shù)的原型型說明,,即說明明函數(shù)名、、函數(shù)返返回值類類型、形形參類型型及個數(shù)數(shù)等。函數(shù)調(diào)用語句主調(diào)函數(shù)被調(diào)函數(shù)函數(shù)體實參形參a)程序流向b)參數(shù)傳遞函數(shù)調(diào)用用過程示示意實例演示有參函數(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ù)定義形形式:類型返回回值的類類型名函函數(shù)名名(類型名形形式參參數(shù)1,…,類型名名形式式參數(shù)n){說明部分分;語句部分分;}函數(shù)調(diào)用用格式::作為表達(dá)達(dá)式出現(xiàn)在任任何允許許表達(dá)式式出現(xiàn)的的地方,,參與運(yùn)運(yùn)算。函數(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ù)的定定義及調(diào)用函數(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ù)的返回值值是通過return語句傳遞的。。return語句的一般形形式:return表達(dá)式;return(表達(dá)式);函數(shù)返回值的的注意事項返回值類型要要與函數(shù)類型型一致函數(shù)類型缺省省時,系統(tǒng)自自動按整型處處理。一個函數(shù)中可可以有若干個個return語句,流程執(zhí)執(zhí)行到哪里,,就從哪里返返回主調(diào)函數(shù)數(shù)。若函數(shù)體內(nèi)沒沒有return語句,則執(zhí)行行函數(shù)到末尾尾,然后返回回主調(diào)函數(shù)。。當(dāng)不需要返回回值的時候,,可以用void定義函數(shù)為空空類型,表示示無返回值。。知識歸納:調(diào)用函數(shù)與被被調(diào)函數(shù)的相相對位置關(guān)系系如使用庫函數(shù)數(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)調(diào)函數(shù)名(參數(shù)類型1,參數(shù)類型2,……參數(shù)類型n);知識歸納:#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ù)傳遞練一練:分析下面程序序功能,結(jié)構(gòu)構(gòu),函數(shù)定義義及調(diào)用過程程。練一練:分析下面程序序功能,結(jié)構(gòu)構(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();}練一練:#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>floatmyaverage(float,float);main(){floatx,y,z;x=12;y=25;z=myaverage(x,y);printf("%lf\n",z);}分析下面的程程序,寫出程程序的預(yù)期結(jié)結(jié)果。floatmyaverage(floata,floatb){floatc;c=(a+b)/2;returnc;}練一練:#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ǔ)補(bǔ)充完整。。練一練:doublemyarea(doubler){doubles;s=3.14*r*r;returns;}doublemyvolume(doublear,doublehgt){doublevol;vol=ar*hgt;returnvol;}練一練:程序設(shè)計。。設(shè)有一個平平行四邊形形,其頂點(diǎn)點(diǎn)坐標(biāo)依次次為A(2,2)、B(4,6)、C(8,6)、D(6,2),編寫程序序,計算兩兩個對角線線AC、BD的長度。已已知兩點(diǎn)坐坐標(biāo)(x1,y1)和(x2,y2),求兩點(diǎn)間距距離的公式式為:程序要求定定義函數(shù)mylength()計算兩坐標(biāo)標(biāo)點(diǎn)之間的的長度。任務(wù)一:““學(xué)生成績績管理系統(tǒng)統(tǒng)”整體結(jié)結(jié)構(gòu)設(shè)計功能需求分分析步驟1:創(chuàng)建文件存存放一批學(xué)學(xué)生的成績績。本系統(tǒng)統(tǒng)要求每一一位學(xué)生至至少存有4門課程的成成績和總評評成績及平平均成績。。實現(xiàn)“添加加”、“修修改”、““刪除”指指定成績記記錄的操作作。能對一個已已存在文件件進(jìn)行“打打開”、““保存”等等操作。能實現(xiàn)“分分類查詢課課程成績””、“查詢詢?nèi)空n程程成績”等等查詢功能能。能對學(xué)生成成績進(jìn)行排排名。能統(tǒng)計學(xué)生生的“獎學(xué)學(xué)金獲得情情況”,““未獲學(xué)位位情況”,,“某門課課程的總分分及平均分分”,“某某門課程的的學(xué)生成績績等級情況況”等。菜單界面要要求美觀,,大方,易易于操作。。能夠安全退退出系統(tǒng)。。整個系統(tǒng)統(tǒng)只有一個個出口,程程序只能通通過該出口口結(jié)束。分析設(shè)計步驟2:實驗預(yù)習(xí)【實驗1.1】上機(jī)運(yùn)行以以下程序,,熟悉函數(shù)數(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);}實驗預(yù)習(xí)【實驗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é)結(jié)果。觀察實際輸輸出結(jié)果與與預(yù)期結(jié)果果是否相符符。將函數(shù)myswap()中的a和b改為x和y,再觀察運(yùn)運(yùn)行結(jié)果,,有什么不不同。用單步執(zhí)執(zhí)行的方方法,了了解程序序執(zhí)行過過程中數(shù)數(shù)據(jù)的變變化情況況。系統(tǒng)數(shù)據(jù)據(jù)結(jié)構(gòu)設(shè)設(shè)計及運(yùn)運(yùn)算第2章知識儲備備引導(dǎo):分分析C程序組成成2.1常量與變變量一個C程序是由由一個或或多個函函數(shù)組成成,函數(shù)數(shù)體由若若干條C語句組成成,那么么,C語句又是是由什么么組成??主函數(shù)……函數(shù)nC語句1C語句2……C語句n常量變量C程序標(biāo)識符#include<stdio.h>#definePI3.1415926main(){floatr,s,c;r=5;/*輸入圓的的半徑*/s=PI*r*r;c=2*PI*r;printf(“r=%f,s=%f,c=%f\n”,r,s,c);}實例演示常量與變變量使用用舉例直接常量符號常量量整型常量:11、25、-1;實型常量:0.2、3.1415,3.0;字符常量:‘A’,‘a(chǎn)’(大小寫代表不同的值)字符串常量:“nice”

、“good”;定義形式#define常量名常量值一般用大寫字母是宏定義預(yù)處理命令,不是C語句,后面沒有“;”#include<stdio.h>#definePI3.1415926main(){floatr,s,c;r=5;s=PI*r*r;c=2*PI*r;printf(“r=%f,s=%f,c=%f\n”,r,s,c);}實例演示常量與變變量使用用舉例定義變量rsc變量:變量賦值00000000000000000000000000000101變量參加運(yùn)算重點(diǎn):變量必須先定義后使用;變量的實質(zhì)是內(nèi)存的存儲單元。決定了變變量的數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu)及分配配存儲空空間的大大小。整型變量量:存放放整型數(shù)數(shù)據(jù)實型變量量:存放放實型數(shù)數(shù)據(jù)字符變量量:存放放字符型型數(shù)據(jù)標(biāo)識符是對變量量、函數(shù)數(shù)、數(shù)組組等命名名的符號號。由英文字字母、數(shù)數(shù)字及下下劃線構(gòu)構(gòu)成,并并且首字字符必須須為字母母或下劃劃線。標(biāo)識符的的種類::關(guān)鍵字::C語言預(yù)先先規(guī)定的的標(biāo)識符符,每個都代代表著某某一固定定含義。。預(yù)定義標(biāo)標(biāo)識符::預(yù)先定定義并有有特定含含義的標(biāo)標(biāo)識符用戶標(biāo)識識符:用用戶自己己命名的的標(biāo)識符符。定義變量量的格式式:數(shù)據(jù)類型型變量名1,變量名名2,……變量名n;分講:變變量的的定義1.C語言允許許在定義義變量時時對變量量進(jìn)行初初始化,,即對變變量賦初初值。如:inta=2;等價于inta;a=2;2.對變量進(jìn)進(jìn)行初始始化,允允許只對對定義的的變量的的一部分分賦初值值。如:inta,b,c=25; charch1=‘x’,ch2;3.C語言中若若有幾個個變量初初值相同同,必須須分別賦賦值。如:inta=2,b=2,c=2;不允許::inta=b=c=2;分講:變變量定義義及初始始化變量在初初始化之之前,他他的值是是無意義義的(值值隨機(jī)))注意標(biāo)識符區(qū)區(qū)分大小小寫練一練::練習(xí):請請找出不不合法的的標(biāo)識符符.unionabc_1232ab3d+babc8*stu_bc8abcdefghi-s10*&%$#2.2C語言的的數(shù)據(jù)據(jù)類型型C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void定義類型typedef字符類型char枚舉類型enum整型實型單精度型float雙精度型double數(shù)組結(jié)構(gòu)體struct共用體union短整型short長整型long整型int2.2C語言的的數(shù)據(jù)據(jù)類型型1.整型數(shù)數(shù)據(jù)類類型整型常常量十進(jìn)制制數(shù)如:12、345、0、-5八進(jìn)制制數(shù)(以0開頭)如:012、045十六進(jìn)進(jìn)制數(shù)數(shù)(0x開頭)如:0x12、0x345整型變變量基本型型(int)短整型型(shortint、short)長整型型(longint、long)無符號號型無符號號整型型(unsignedint)無符號號短整整型(unsignedshort)無符號號長整整型(unsignedlong)問題::0123=()100x123=()100Xff=()10整形數(shù)數(shù)據(jù)的的所占占存儲儲空間間的大大小及及表示示數(shù)的的范圍圍說明:數(shù)據(jù)類類型所所占字字節(jié)數(shù)數(shù)隨機(jī)機(jī)器硬硬件和和編譯譯環(huán)境境的不不同而而不同同,上表以以IBMPC機(jī),和和TurboC集成開開發(fā)環(huán)環(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需要記記憶#include<stdio.h>main(){intx=123,y=0123,z=0x123;printf(″%d,%d,%d\n″″,x,y,z);/*以十進(jìn)進(jìn)制格格式輸輸出*/printf(″%o,%o,%o\n″″,x,y,z);/*以八進(jìn)進(jìn)制格格式輸輸出*/printf(″%x,%x,%x\n″″,x,y,z);/*以十六六進(jìn)制制格式式輸出出*/}實例演示整型常常量的的表示示方法法實例演示整型變變量的的定義義及表表示數(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é)結(jié)果::int:-32768,32767long:-2147483648,2147483647unsigned:0,65535當(dāng)各種種整型型數(shù)取取最大大值時時,如如果再再加1,則超超出其其所能能表示示的范范圍,,結(jié)果果為該該類型型取值值范圍圍的最最小值值。整數(shù)在在內(nèi)存存中的的存儲儲方式式正整數(shù)數(shù):用用原碼碼的形形式存存儲,,符號號位是是“0”;負(fù)整數(shù)數(shù):用用“補(bǔ)碼”的形式式存儲儲,符符號位位為“1”;-1用補(bǔ)碼碼表示示為::1111111111111111有符號號整型型變量量的取取值范范圍是是-32768~32767(TurboC)3.無符符號號整整數(shù)數(shù)::最最高高位位不不再再是是符符號號位位,,整整個個16二進(jìn)進(jìn)制制數(shù)數(shù)都都用用來來存存放放整整數(shù)數(shù)。。1111111111111111表示示655352.2C語言言的的數(shù)數(shù)據(jù)據(jù)類類型型2.實型型數(shù)數(shù)據(jù)據(jù)類類型型1)實型型常常量量:即即實實數(shù)數(shù)或或稱稱浮浮點(diǎn)點(diǎn)數(shù)數(shù)。。以以十十進(jìn)進(jìn)制制形形式式表表示示。。實型型常常量量的的表表示示形形式式小數(shù)數(shù)形形式式例如如::0.15、.15、0.0、123.(注注意意::必必須須有有小小數(shù)數(shù)點(diǎn)點(diǎn)?。。┲笖?shù)數(shù)形形式式小數(shù)數(shù)E(或e)整數(shù)數(shù)說明明::“小數(shù)數(shù)”表示示實實數(shù)數(shù)的的數(shù)數(shù)值值位位,,即即尾尾數(shù)數(shù)部部分分。?!癊”代表表十十進(jìn)進(jìn)制制數(shù)數(shù)的的基基數(shù)數(shù)10?!罢麛?shù)數(shù)”表示示10的乘乘冪冪。。注意意::字字母母E之前前必必須須有數(shù)數(shù)字字!!1.23×1033.918e-0021.23E+0033.918×10-2123.00.003918舉例:2.2C語言言的的數(shù)數(shù)據(jù)據(jù)類類型型2.實型型數(shù)數(shù)據(jù)據(jù)類類型型2)實型型變變量量類型所占字節(jié)有效數(shù)字?jǐn)?shù)的取值范圍定義舉例單精度實型float46~7-10-37~1038floatx1,y1;雙精度實型double815~16-10-307~10308doublex2,y2;例::floata;a=123456.789;/*a=123456.789063*/doubleb;b=123456.789;/*b=123456.789000*/實例例演示示實型型數(shù)數(shù)據(jù)據(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ù)形式形式輸出2.2C語言言的的數(shù)數(shù)據(jù)據(jù)類類型型3.字符符型型數(shù)數(shù)據(jù)據(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字符空值字符常常量需需要注注意的的事項項區(qū)分大大小寫寫;例例如‘A’和‘a(chǎn)’表示不不同的的字符符常量量。單引號號內(nèi)必必須要要字符符:有有且只只有一一個,,‘(空格格)’也是字字符常常量‘a(chǎn)’、“a”和a代表不不同的的意義義注意意2.2C語言的的數(shù)據(jù)據(jù)類型型3.字符型型數(shù)據(jù)據(jù)類型型字符變變量例:charc1,c2;c1=‘a(chǎn)’;c2=‘‘b’’;數(shù)據(jù)在在計算算機(jī)中中以二二進(jìn)制制形式式存放放。字符數(shù)數(shù)據(jù)在在內(nèi)存存單元元中存存放的的是其其對應(yīng)應(yīng)的ASCII碼,且且一個個字符符占用用一個個字節(jié)節(jié)。C語言言中允允許字字符常常量像像整型型數(shù)據(jù)據(jù)一樣樣參與與相關(guān)關(guān)運(yùn)算算。字符ASCII碼內(nèi)存中的格式‘A’6501000001‘B’6601000010…………‘Z’9001100000‘a(chǎn)’9701100001‘b’9801100010…………‘z’12210000000部分字字符ASCII表實例演示字符變變量舉舉例main(){charc1,c2;c1='a';c2=98;printf(“%c,%d\n””,c1,c1);printf("%c,%d\n",c2,c2}字符型型數(shù)據(jù)據(jù)和整整型數(shù)數(shù)據(jù)是是通用用的。。以字符形式輸出。以整數(shù)形式輸出(字符的ASCII碼)。a,97b,98運(yùn)行結(jié)果為:

實例演示字符型型數(shù)據(jù)據(jù)進(jìn)行行算術(shù)術(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)運(yùn)行結(jié)結(jié)果如如何??2.若以整整數(shù)形形式輸輸出變變量c1,c2,則格格式說說明符符應(yīng)改改為??思考問問題實例演示轉(zhuǎn)義字字符的的使用用73例轉(zhuǎn)轉(zhuǎn)義字字符舉舉例main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}運(yùn)行結(jié)結(jié)果::(屏幕顯顯示)ABCIsay:””Howareyou?”\CProgram\Turbo‘‘C’’例main(){printf(““Y\b=\n”);}運(yùn)行結(jié)結(jié)果::屏幕顯顯示::=實例演示利用字字符型型數(shù)據(jù)據(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);}思考:能能否用以以下語句句實現(xiàn)??cx=‘‘▲’;Printf(“%c\n””,cx);概念:字符串串常量是是指用一一對雙引引號括起起來的字字符序列列。如““Hello”、“good”等。字符串常常量的存存儲:系統(tǒng)自動在字符串串的末尾尾加上一一個字符符串結(jié)束束標(biāo)記‘‘\0’,以此判判斷字符符串是否否結(jié)束。。程序中長長度為n個字符的的字符串串常量,,在內(nèi)存存中需要要用n+1個字節(jié)空空間來存存儲它。。舉例:字符串串“string””的存儲。。string\011511611410511010302.2C語言的數(shù)數(shù)據(jù)類型型字符串常常量字符常量量與字符符串常量量的區(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。字符常量量中‘’是不允許許空白,,字符串串常量允允許空白白“”,稱為“空串”。練一練::一.選擇題1.下面四個個選項中中,均是是不合法法的用戶戶標(biāo)識符符的選項項是:AP_0dofloatla0_Ab-agotoint_123 tempINT2.在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ù)據(jù)類型的存存儲空間長長度的排列列順序為::char<int<longint<=float<doublechar=int<longint<=float<doublechar<int<longint=float=doublechar=int=longint<=float<double二.填空題。1.C語言中,實實型變量分分為_____和_____兩種。2.若有變量定定義inta=2;floatb=1.2345;則變量a、b在內(nèi)存占用用___字節(jié),b再內(nèi)存中占占用__字節(jié)。3.C語言中的轉(zhuǎn)轉(zhuǎn)義字符就就是以一個個_____開頭的字符符序列,用用來表示ASCII碼字符集中中一些不可可打印的控控制字符和和特定功能能的字符。。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)轉(zhuǎn)換運(yùn)算符符:(類型)學(xué)習(xí)運(yùn)算符符應(yīng)注意:運(yùn)算符功能能;與操作數(shù)關(guān)系;要求操作數(shù)個數(shù);要求操作數(shù)類型;運(yùn)算符優(yōu)先先級別;結(jié)合方向;結(jié)果的類型型運(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ī)則則閱讀程序::main(){inta=22;intb=3;printf(“%d\n””,a/b);}分析程序運(yùn)運(yùn)行結(jié)果為為?運(yùn)行結(jié)果為為7,而不是7.333333,為什么?除法運(yùn)算符符的操作數(shù)數(shù)整數(shù)實數(shù)兩個整數(shù)相相除,結(jié)果果為整數(shù);;兩個實數(shù)數(shù)相除,結(jié)結(jié)果為實數(shù)數(shù)。例5/2=22-5.0/2.0=-2.5例5/2=-5.0/2.0=兩個整數(shù)相相除,結(jié)果果為整數(shù);;被除數(shù)或或除數(shù)為實實數(shù),則相相除結(jié)果為為實數(shù)。實例演示除法和求余余運(yùn)算符的的運(yùn)算規(guī)則則說明:表達(dá)達(dá)式a%b的運(yùn)算結(jié)果果為a除以b的余數(shù),條條件是a、b必須為整數(shù)數(shù)。例15%5=5%2=-5%2=5%-2=5.5%223%10=若0<x<y,則:(x+y)%y=1%10=01-11()3x1第一個數(shù)能能被第二個個數(shù)整除對2求余為非0值,則此數(shù)數(shù)不是偶數(shù)數(shù)負(fù)數(shù)的余數(shù)數(shù)符號看被被除數(shù)對10求余可得到到個位數(shù)小的數(shù)對大大的數(shù)求余余得到的還還是它本身身實例演示算術(shù)運(yùn)算符符的結(jié)合方方向練一練:分析下列表表達(dá)式的運(yùn)運(yùn)行結(jié)果::-3-2*3+2/3*2-((3-2)*(3+2)/(3*2))算術(shù)運(yùn)算符符的優(yōu)先級級為*、/、%高于+、-,如果有括括號先算括括號內(nèi)的。。算術(shù)表達(dá)達(dá)式的結(jié)合合性是“自自左至右””。算術(shù)運(yùn)算符符優(yōu)先級及及結(jié)合性:例題1:寫出表達(dá)達(dá)式(a+b)/2+x%y-z的執(zhí)行過程程。①先算括號號內(nèi)的a+b;②再算(a+b)/2;③再算x%y;④然后計計算(a+b)/2+x%y;⑤最后計計算(a+b)/2+x%y-z。實例演示不同數(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)運(yùn)算,C編譯系統(tǒng)自自動把長度度較短的類類型轉(zhuǎn)換為為長度較長長的類型,,轉(zhuǎn)換規(guī)律律為:“垂垂直降落,,向上位移移”,以保保證不丟失失精度。charfloatintlongdouble目的:彌補(bǔ)補(bǔ)自動類型型轉(zhuǎn)換的不不足。一般形式:(類型關(guān)鍵字字)(變量名或表表達(dá)式)舉例:floata=56.789;intb;b=(int)a%3;(double)b(float)(20%3+4)實例演示強(qiáng)制類型轉(zhuǎn)轉(zhuǎn)換運(yùn)算符符的應(yīng)用華氏溫度轉(zhuǎn)轉(zhuǎn)換成攝氏氏溫度的公公式為C=(F-32)*5/9,編寫程序序輸入一個個華氏溫度度F,F(xiàn)為整數(shù),輸輸出相應(yīng)的的攝氏溫度度,要求精精確到小數(shù)數(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);}分析:若直接接使用公式計計算,由于分分子分母都是是整形數(shù)據(jù),,則輸出結(jié)果果不正確。可可用強(qiáng)制轉(zhuǎn)換換運(yùn)算符進(jìn)行行轉(zhuǎn)換。使用強(qiáng)制類型型轉(zhuǎn)換注意::在進(jìn)行強(qiáng)制類類型轉(zhuǎn)換時,,類型關(guān)鍵字字必須用括號號括住。在對一個表達(dá)達(dá)式進(jìn)行強(qiáng)制制類型轉(zhuǎn)換時時,整個表達(dá)達(dá)式也要用括括號括住。如:(float)(a+b)(float)a+b在對變量和表表達(dá)式進(jìn)行了了強(qiáng)制類型轉(zhuǎn)轉(zhuǎn)換后,并不不改變原變量量或表達(dá)式的的類型。如:intz;floatx;doubley;z=(int)(x+y);執(zhí)行后x、y的類型不變。。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é)合方式:自自右向左練一練:分析,執(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)算過程步驟:(1)求出“表達(dá)式式”的值;(2)把求出的表達(dá)達(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á)達(dá)式的值。①a+=a②②a-=12③③a*=3+a④④a/=a+a⑤n=5,a%=n%2實例演示賦值運(yùn)算符及及表達(dá)式實例例#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先賦值,再計計算表達(dá)式,,對c賦值先進(jìn)行a-=a*a的計算,它相相當(dāng)于a=a-a*a=10-10*10=-90;再進(jìn)行a+=-90的計算,它相相當(dāng)于a=a+(-90)=-90-90=-180。3.圖表講解:關(guān)關(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表示。例:關(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實例演示關(guān)系運(yùn)算符優(yōu)優(yōu)先級及運(yùn)算算過程//表達(dá)式值1//表達(dá)式值1//表達(dá)式值0//d=1//f=04.圖表講解:邏邏輯運(yùn)算符及及表達(dá)式邏輯運(yùn)算符名稱示例&&與a>0&&a<100||或a<0||a>100?。▎文浚┓?(a==0)數(shù)據(jù)a數(shù)據(jù)ba&&ba||b!aTTTTFTFFTFFTFTTFFFFT優(yōu)先級:結(jié)合方向:!

&&||高低!:從右向左&&:從左向右||:從左向右!++--+-算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符賦值運(yùn)算符逗號運(yùn)算符&&

||圖表講解:邏邏輯運(yùn)算符優(yōu)優(yōu)先級及結(jié)合合方向例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實例演示邏輯運(yùn)算符優(yōu)優(yōu)先級及運(yùn)算算過程5.圖表講解:自自增、自減運(yùn)運(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值。例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實例演示自增、自自減運(yùn)算算符優(yōu)先先級及運(yùn)運(yùn)算過程程//a=8,b=-9自增、自自減運(yùn)算算小結(jié)::自增運(yùn)算算符和自自減運(yùn)算算符是單單目運(yùn)算算符,且且只能用用于單個個變量,,不能對對常量或或者表達(dá)達(dá)式操作作;自增運(yùn)算算符和自自減運(yùn)算算符的操操作數(shù)可可以是整整數(shù)或者者實數(shù);;當(dāng)前置運(yùn)運(yùn)算或者者后置運(yùn)運(yùn)算與其其他運(yùn)算算結(jié)合在在一個表表達(dá)式中中時:前置運(yùn)算算:先增增值后引引用后置運(yùn)算算:先引引用后增增值“++”和“--”的運(yùn)算結(jié)結(jié)合方向向是從右右到左。。6.圖表講解解:逗號號運(yùn)算符符、逗號號表達(dá)式式逗號運(yùn)算算符:“,”

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論