




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第3章 面向?qū)ο螅ㄉ希┠K二 分支程序設(shè)計訓練職業(yè)本科規(guī)劃教材C語言程序設(shè)計教學設(shè)計課程名稱: C語言程序設(shè)計 授課年級: 2022年級 授課學期: 2022學年第一學期 教師姓名: XXX 課題名稱模塊一 順序程序設(shè)計訓練計劃學時8學時內(nèi)容分析在C語言程序設(shè)計中,程序的執(zhí)行嚴格按代碼的先后依次執(zhí)行。順序結(jié)構(gòu)是最簡單的程序結(jié)構(gòu),也是最常用的程序結(jié)構(gòu),只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。教學目標及基本要求(1) 了解結(jié)構(gòu)化程序設(shè)計的基本結(jié)構(gòu);(2) 了解流程控制的基本語句;(3) 熟練掌握數(shù)據(jù)的輸入/輸出處理函數(shù)和表達式語句;(4) 掌握構(gòu)建順序結(jié)構(gòu)程序的
2、基本語句及程序基本構(gòu)架;(5) 掌握順序結(jié)構(gòu)程序設(shè)計方法。教學重點數(shù)據(jù)的輸入/輸出處理函數(shù)和表達式語句、順序結(jié)構(gòu)的基本語句、順序結(jié)構(gòu)的設(shè)計方法教學難點順序程序設(shè)計的基本構(gòu)架、順序程序設(shè)計的設(shè)計方法教學方式教學采用教師課堂講授與學生操作練習共同進行的一體化教學方式概念性知識點:提出為什么,將抽象具體化,配合教學PPT、案例輔助講解。操作性知識點:提需求,并上機演示如何操作,重點內(nèi)容總結(jié)經(jīng)驗及注意事項。學生操作練習:完成教材中的引例、做中學以及練中學案例,有能力的學生還可以完成教師額外布置的拓展練習題目。教學過程第一學時(知識準備)一、引例任務(wù),提出需求(1)通過引力任務(wù),引出本節(jié)所需知識內(nèi)容?!?/p>
3、引例任務(wù)】判斷從鍵盤輸入的整數(shù)數(shù)據(jù)的奇偶性。【程序代碼】#include void main( )int num;do printf(請輸入一個自然數(shù):); /提示用戶輸入一個數(shù)值 scanf(%d,&num); /接受用戶輸入的數(shù)值 if (num%2=0) printf(您輸入的是一個偶數(shù)n); else printf(您輸入的是一個奇數(shù)n);while(num!=0);【程序運行】請輸入一個自然數(shù):25您輸入的是一個奇數(shù)請輸入一個自然數(shù):26您輸入的是一個偶數(shù)請輸入一個自然數(shù):0您輸入的是一個偶數(shù) (2)明確學習方向。【知識點】引例中出現(xiàn)了輸入、處理、輸出等操作,這些操作具有特定的流程,
4、流程常稱為算法,引例的算法體現(xiàn)了結(jié)構(gòu)化程序設(shè)計的基本思想?!灸芰c】認識判斷語句掌握scanf()函數(shù)掌握printf()函數(shù)明確目標,完成任務(wù)完成引例任務(wù):1當num變量的值不為0時,循環(huán)。2if(num%2=0)是判斷語句,當關(guān)系表達式num%2=0成立,表示num變量中的數(shù)據(jù)是偶數(shù)。3scanf()函數(shù)接收用戶鍵盤輸入的數(shù)據(jù)到指定變量。4printf()函數(shù)向計算機屏幕輸出信息。三、歸納總結(jié),布置課后作業(yè) (1)回顧上課前的學習目標,對本節(jié)課知識點進行總結(jié)。 (2)掃描二維碼查看相應(yīng)資源,完成課后作業(yè)。第二學時(程序和算法)一、引入學習任務(wù)(1)回顧上節(jié)課的內(nèi)容,結(jié)構(gòu)化程序的基本結(jié)構(gòu),流
5、程控制的基本語句。(2)明確學習方向?!局R點】程序算法【能力點】了解程序的定義掌握程序設(shè)計掌握算法的概念熟練進行算法描述二、明確目標,完成任務(wù)1程序程序是為實現(xiàn)特定目標或解決特定問題而用計算機語言編寫的命令序列的集合。一個程序應(yīng)該包括以下兩方面的內(nèi)容。(1) 對數(shù)據(jù)的描述。(2) 對操作的描述。程序=數(shù)據(jù)結(jié)構(gòu)+算法2程序設(shè)計程序設(shè)計是給出解決特定問題程序的過程。(1) 分析問題。(2) 設(shè)計算法。(3) 編寫代碼。(4) 測試程序。(5) 編寫程序文檔。3算法的定義廣義地講,算法是指為解決某個具體問題而采取的方法和步驟。計算機解題算法分為兩大類:數(shù)值運算算法和非數(shù)值運算算法。根據(jù)不同的算法控
6、制結(jié)構(gòu),程序有3種結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。(1) 順序結(jié)構(gòu)。(2) 選擇結(jié)構(gòu)。(3) 循環(huán)結(jié)構(gòu)。4算法描述(1) 算法的五個特征有窮性確切性輸入輸出可行性(2) 自然語言 (3) 偽代碼(4) 流程圖(5) N-S圖三、歸納總結(jié),布置課后作業(yè) (1)回顧上課前的學習目標,對本節(jié)課知識點進行總結(jié)。 (2)掃描二維碼查看相應(yīng)資源,完成課后作業(yè)。第三學時(基本語句)引例任務(wù),提出需求(1)回顧上節(jié)課的內(nèi)容,程序和算法。(2)明確本節(jié)課學習方向?!局R點】控制語句操作運算語句【能力點】掌握9種控制語句掌握4種操作運算語句二、明確目標,完成任務(wù)C語言程序設(shè)計中的基本語句主要分為兩大類:控制語
7、句和操作運算語句(也稱表達式語句)??刂普Z句的作用是用于控制程序的執(zhí)行順序,使程序的執(zhí)行流程發(fā)生改變。在C語言中,有9種控制語句。1)if-else(條件語句)2)switch(多分支選擇語句)3)while(循環(huán)語句)4)do-while(循環(huán)語句)5)for(循環(huán)語句)6)break(中止循環(huán)或switch結(jié)構(gòu)語句)7)continue(結(jié)束本次循環(huán)語句)8)goto(轉(zhuǎn)向語句)9)return(返回語句)在C語言中操作運算語句有賦值語句、函數(shù)調(diào)用語句、空語句和復合語句。1賦值語句2函數(shù)調(diào)用語句3空語句4復合語句【做中學1-1】輸出余弦函數(shù)圖形程序。#include #include vo
8、id main()double y;int x,m;for(y=1;y=-1;y-=0.1) m=(int)(acos(y)*10); for(x=1;xm;x+) printf ( ); printf(*); for(;x62-m;x+) printf ( ); printf(*n);三、歸納總結(jié),布置課后作業(yè) (1)回顧上課前的學習目標,對本節(jié)課知識點進行總結(jié).(2)掃描二維碼查看相應(yīng)資源,完成課后作業(yè)。第四學時(字符輸入、輸出)一、引例任務(wù),提出需求C語言中沒有提供專門的輸入輸出語句,所有的輸入輸出都是調(diào)用標準庫函數(shù)中的輸入輸出函數(shù)來實現(xiàn)的。字符數(shù)據(jù)的輸入輸出是最基本的數(shù)據(jù)輸入輸出,由C
9、語言標準函數(shù)庫提供的函數(shù)getchar( )和putchar( )實現(xiàn)?!局R點】getchar( )函數(shù)putchar( )函數(shù)【能力點】掌握getchar( )函數(shù)的應(yīng)用掌握putchar( )函數(shù)的應(yīng)用二、明確目標,完成任務(wù)1getchar函數(shù)【做中學1-2】利用getchar( )函數(shù)接收鍵盤輸入?!境绦虼a】#include void main( ) char ch;printf(請輸入多個字母:);ch=getchar( );printf(您輸入的是:%c,ch);1) getchar函數(shù)是字符輸入函數(shù),接收從鍵盤輸入的單個字符數(shù)據(jù)。他是一個無參函數(shù),其語法格式為:getchar(
10、);2) 通常把輸入的字符賦予一個字符變量,構(gòu)成賦值語句。3) getchar( )函數(shù)只能接收單個字符。4) 使用getchar前必須包含頭文件“stdio.h”。5) getchar函數(shù)等待用戶輸入直到按“回車”鍵才結(jié)束,回車前的所有輸入字符都會逐個顯示在屏幕上。2putchar函數(shù)【做中學1-3】利用putchar( )函數(shù)輸出字符?!境绦虼a】#include void main( ) char c=B; /*定義字符變量c并賦值B*/ putchar(c); /*輸出該字符*/ putchar(x42); /*輸出字母B */ putchar(0 x42); /*用16進制ASCII
11、碼值輸出字母B */ putchar(66); /*用ASCII碼值輸出字母B */1) 語法格式為: putchar(字符表達式);2) 功能:向標準輸出設(shè)備輸出單個字符數(shù)據(jù)?!揪氈袑W1-1】getchar、putchar函數(shù)應(yīng)用?!境绦虼a】#include stdio.hvoid main( ) char ch; printf(請輸入兩個字符:); ch=getchar( ); putchar(ch);putchar(n); putchar(getchar( ); putchar(n);三、歸納總結(jié),布置課后作業(yè) (1)回顧上課前的學習目標,對本節(jié)課知識點進行總結(jié)。(2)掃描二維碼查看相
12、應(yīng)資源,完成課后作業(yè)。第五、六、七學時(格式輸入、輸出)一、引入學習任務(wù)(1)回顧上節(jié)課的內(nèi)容,字符輸入輸出。(2)明確學習方向?!局R點】scanf( )函數(shù)printf( )函數(shù)【能力點】掌握scanf( )函數(shù)的應(yīng)用掌握printf( )函數(shù)的應(yīng)用二、明確目標,完成任務(wù)1. scanf函數(shù)scanf函數(shù)稱為格式輸入函數(shù),按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中,scanf函數(shù)也是一個標準庫函數(shù),其函數(shù)原型在頭文件“stdio.h”中?!咀鲋袑W1-4】使用scanf( )函數(shù)從鍵盤接收程序用戶的輸入?!境绦虼a】#include void main( ) int a,b,c;pr
13、intf(請輸入三個整數(shù),整數(shù)間兩個用英文空格分開:); scanf(%d%d%d,&a,&b,&c); printf(a=%d,b=%d,c=%dn,a,b,c);scanf函數(shù)語法格式為: scanf(格式控制,地址表列);(1) &a表示變量a的地址,“&”為取地址運算符。(2) “&a,&b,&c”表示將鍵盤收到的數(shù)值存儲到a,b,c三個變量對應(yīng)的存儲單元中,相當于對這3個變量進行了賦值。(3) scanf函數(shù)的格式必須以%開始,后面跟一個格式符組成。scanf函數(shù)常用的格式符格式符含義d,i用于輸入有符號的十進制整數(shù)u用于輸入無符號的十進制整數(shù)o用于輸入無符號的八進制整數(shù)X,x用于輸
14、入無符號的十六進制整數(shù)c用于輸入單個字符s用于輸入字符串,將字符串送到一個字符數(shù)組中,輸入時以非空白字符開始,以空白字符(可以為空格、制表符或換行符)結(jié)束,系統(tǒng)將自動在字符串末尾加上0作為結(jié)束標志。f用于輸入實數(shù),可以以小數(shù)或指數(shù)形式輸入,但不能指定輸入寬度。E,e,G,g同格式符fscanf函數(shù)附加格式說明符字符說明l用于輸入長整型數(shù)據(jù)(可用%ld,%lo,%lx)以及double型數(shù)據(jù)(用%lf或%le)h用于輸入短整型數(shù)據(jù)(可用%hd,%ho,%hx)域?qū)捴付ㄝ斎霐?shù)據(jù)所占寬度,為正整數(shù)。如“scanf(%4d%4d,&a,&b);”*帶*的輸入項在讀入后將被跳過【做中學1-5】非格式符的
15、使用?!境绦虼a】#include void main() int a,b,c; scanf(%d,%d,%d,&a,&b,&c); printf(a=%d,b=%d,c=%d,a,b,c);【做中學1-6】實型數(shù)據(jù)的輸入輸出。【程序代碼】#include int main() float a,b;double x,y; scanf(%f,%e,%lf,%le, &a,&b,&x,&y);printf(%f,%e,%lf,%le n, a,b,x,y); return 0;2. printf( )函數(shù)【做中學1-7】printf( )函數(shù)的使用?!境绦虼a】#include void main
16、( ) char a=B; int b=10; printf(The name is %c,the value is %dn,a,b);printf函數(shù)為格式輸出函數(shù),它是一個標準庫函數(shù),其函數(shù)原型在頭文件“stdio.h”中,它向終端輸出若干個任意類型的數(shù)據(jù)。其語法格式為:printf(格式控制,輸出表列)(1) 格式控制由輸出格式說明和普通字符兩種組成,必須用雙引號括起來。(2) 輸出表列是需要輸出的一組數(shù)據(jù)(可以為表達式和變量),各參數(shù)之間用“,”分開。要求格式說明和各輸出項在數(shù)量和類型上要一一對應(yīng),否則將會出現(xiàn)意想不到的錯誤。對于不同類型的數(shù)據(jù)需要用不同的格式字符進行說明。常用格式字符
17、有如下幾種。(1) d格式符 【做中學1-8】printf函數(shù)按%d格式輸出數(shù)據(jù)。 #include void main() int a; long b; a=123; b=655666635L; printf(n %cd %dn,%,a); printf( %c10d %10dn,%,a); printf( %cld %ldn,%,b); printf(%c20ld %20ldn,%,b);(2) o格式符 以八進制形式輸出整數(shù)。【做中學1-9】 printf函數(shù)按%o格式輸出數(shù)據(jù)。#include void main() int a; long b; a=-1; b=655666635L;
18、 printf( %co %on,%,a); printf( %c15o %15on,%,a); printf( %cLo %Lon,%,b); printf(%c20Lo %20Lon,%,b);(3) x格式符 以十六進制形式輸出整數(shù),用法同o格式符。(4) u格式符 用于輸出unsigned型數(shù)據(jù),以十進制形輸出。(5) c格式符 用來輸出一個字符,可以指定寬度?!咀鲋袑W1-10】printf函數(shù)按%c格式輸出數(shù)據(jù)。#include void main() char x=a; int y=98; printf(The value of x is %c,the ASCII is %d.n,
19、x,x); printf(The value of x is %c,the ASCII is %d.n,y,y);(6) s格式符 用來輸出一個字符串。(7) f格式符 用小數(shù)形式來輸出實數(shù)(包括單、雙精度實數(shù))。(8) e格式符 以指數(shù)形式輸出實數(shù)。(9) g格式符 用于輸出實數(shù),根據(jù)數(shù)值的大小自動選擇f格式或e格式中輸出寬度較小的格式輸出,不輸出無意義的零,6位有效數(shù)字?!揪氈袑W1-2】求一元二次方程的根?!舅惴ㄔO(shè)計】一元二次方程一般格式為:ax2+bx+c=0。當b2-4ac=0時,方程有只有一個根;當b2-4ac0時,方程有兩個根?!境绦虼a】#include #include mat
20、h.hvoid main( ) float a,b,c,disc,x1,x2; printf(輸入a,b,c的值,必須保證b2-4ac0,用“,”分隔輸入的數(shù)據(jù):); scanf(%f,%f,%f,&a,&b,&c); disc=b*b-4*a*c; x1=(-b+(float)sqrt(disc)/(2*a); x2=(-b-(float)sqrt(disc)/(2*a); printf(x1=%6.2fnx2=%6.2f,x1,x2);【練中學1-3】printf函數(shù)按%x,%u格式輸出數(shù)據(jù)。#include void main() unsigned int a; long b; a=63
21、123; b=655666635L; printf( %cu %un,%,a); printf( %c10 x %10 xn,%,a); printf( %cLx %Lxn,%,b); printf(%c20Ld %20Ldn,%,b); b= -3;a= -3; printf( %cu %un,%,a); printf( %c10 x %10 xn,%,a); printf( %cLx %Lxn,%,b); printf(%c20Ld %20Ldn,%,b);【練中學1-4】*格式符的使用?!境绦虼a】#include void main( ) int a,b;printf(請輸入三個整數(shù),
22、整數(shù)間兩個用英文空格分開:); scanf(%d%*d%d,&a,&b); printf(a=%d,b=%dn,a,b);【練中學1-5】域?qū)捀袷椒氖褂?。【程序代碼】#include void main( ) int a,b;printf(請連續(xù)輸入8個以上數(shù)字:); scanf(%4d%4d,&a,&b); printf(a=%d,b=%dn,a,b);【練中學1-6】%s格式符的使用?!境绦虼a】#include void main( ) char st40; int a;printf(請連續(xù)輸入3個數(shù)字3個字母一個空格后再輸入若干字母:); scanf(%d%s,&a,st); pri
23、ntf(你的輸入是:%d%sn,a,st);【練中學1-7】分別輸入一個八進制、一個十進制和一個十六進制數(shù),將這3個數(shù)相加,以十進制的形式輸出。【程序代碼】#include void main()int a,b,c,d;printf(請輸入三個數(shù)(第一個8進制,第二個10進制,第三個16進制)n);scanf(%o,%d,%x,&a,&b,&c); /*提示用戶,并接收輸入的三個數(shù)*/d=a+b+c; /*3個數(shù)相加,存入d單元變量*/printf(0%o + %d + 0 x%x =%d n,a,b,c,d); /*以十進制的形式輸出結(jié)果*/三、歸納總結(jié),布置課后作業(yè) (1)回顧上課前的學習
24、目標,對本節(jié)課知識點進行總結(jié)。 (2)掃描二維碼查看相應(yīng)資源,完成課后作業(yè)。第八學時(Visual Studio 2019環(huán)境下的程序調(diào)試、Dev-C+環(huán)境下的程序調(diào)試)一、引入學習任務(wù)(1)回顧上節(jié)課的內(nèi)容,格式輸入和輸出。(2)明確學習方向?!局R點】Visual Studio 2019環(huán)境下的程序調(diào)試Dev-C+環(huán)境下的程序調(diào)試【能力點】熟練掌握Visual Studio 2019環(huán)境下的程序調(diào)試熟練掌握Dev-C+環(huán)境下的程序調(diào)試二、明確目標,完成任務(wù)1. Visual Studio 2019環(huán)境下的程序調(diào)試調(diào)試方式有斷點調(diào)試及單步調(diào)試兩種。(1)添加斷點(2)調(diào)試程序(3)單步調(diào)試
25、Dev-C+環(huán)境下的程序調(diào)試調(diào)試方式有斷點調(diào)試及單步調(diào)試兩種。(1)打開調(diào)試工具(2)通過鼠標查看變量(3)設(shè)置斷點(4)調(diào)試程序(5)單步調(diào)試三、歸納總結(jié),布置課后作業(yè) (1)回顧上課前的學習目標,對本節(jié)課知識點進行總結(jié)。 (2)掃描二維碼查看相應(yīng)資源,完成上機作業(yè)。教學后記職業(yè)本科規(guī)劃教材C語言程序設(shè)計教學設(shè)計課程名稱: C語言程序設(shè)計 授課年級: 2022年級 授課學期: 2022學年第一學期 教師姓名: XXX 2021年10月22日第3章 面向?qū)ο螅ㄉ希┠K三 循環(huán)程序設(shè)計訓練課題名稱模塊二 分支程序設(shè)計訓練計劃學時8學時內(nèi)容分析根據(jù)某種條件的成立與否采用不同的程序段進行處理的程序結(jié)
26、構(gòu)稱為選擇結(jié)構(gòu)。通常選擇結(jié)構(gòu)有兩個分支,條件為“真”,執(zhí)行甲程序段,否則執(zhí)行乙程序段。有時,兩個分支還是不能完全描述實際問題,這樣的程序結(jié)構(gòu)稱為多分支選擇結(jié)構(gòu)。教學目標及基本要求(1) 掌握關(guān)系表達式和邏輯表達式的應(yīng)用。(2) 掌握利用if語句實現(xiàn)的單分支和雙分支選擇結(jié)構(gòu)。(3) 掌握利用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)。教學重點if語句、switch語句教學難點多分支選擇結(jié)構(gòu)教學方式教學采用教師課堂講授與學生操作練習共同進行的一體化教學方式概念性知識點:提出為什么,將抽象具體化,配合教學PPT、案例輔助講解。操作性知識點:提需求,并上機演示如何操作,重點內(nèi)容總結(jié)經(jīng)驗及注意事項。學生操作練習
27、:完成教材中的引例、做中學以及練中學案例,有能力的學生還可以完成教師額外布置的拓展練習題目。教學過程第一、二學時(if-else語句)一、引例任務(wù),提出需求(1)通過引力任務(wù),引出本節(jié)所需知識內(nèi)容?!疽蝿?wù)】比較兩個數(shù)的大小。【程序代碼】#include void main( )float a,b;printf(請您輸入兩個實數(shù):n);scanf(%f,%f,&a,&b);if (ab) printf(第一個數(shù)較大。n);else if (a=b) printf(兩個數(shù)相等。n);else printf(第二個數(shù)較大。n);【程序運行】請您輸入兩個實數(shù):4,8第二個數(shù)較大。(2)明確學習方向
28、?!局R點】引例程序中3條輸出語句用if-else語句連接,根據(jù)關(guān)系表達式的值執(zhí)行其中一條輸出語句,是一個典型的分支結(jié)構(gòu)。C語言有兩種實現(xiàn)分支結(jié)構(gòu)的語句:if-else和switch-case語句。本節(jié)課的主要內(nèi)容是學習利用if語句實現(xiàn)分支結(jié)構(gòu)。【能力點】掌握單分支if語句掌握雙分支if-else語句明確目標,完成任務(wù)在C語言中,if語句是常用的條件判斷語句,用來判定是否滿足指定的條件(條件式),并根據(jù)條件式的運算結(jié)果來執(zhí)行給定的操作。C語言提供了3種形式的if語句,在使用時可根據(jù)具體問題的復雜程度來選擇合適的形式。單分支結(jié)構(gòu)的if語句【做中學2-1】兩個數(shù)的升序排序?!境绦虼a】 #incl
29、ude void main( ) float a,b,t; printf(請輸入兩個實數(shù):); scanf(%f,%f,&a,&b); if (ab) /*判斷ab的值,如果為真,則執(zhí)行下面的語句*/ t=a;a=b;b=t; printf(%5.2f %5.2fn,a,b);1)語法格式: if (條件表達式) 語句;2)單分支結(jié)構(gòu)執(zhí)行過程:首先對表達式求解,當結(jié)果為真(非0)時,則執(zhí)行指定的語句;否則跳過指定語句,接著執(zhí)行該語句下面的語句。3)語法特征為:一個條件表達式,一個可選執(zhí)行。2. 雙分支結(jié)構(gòu)的if語句【做中學2-2】求絕對值。【程序代碼】 #include void main(
30、) int x,y; printf(輸入一個整數(shù):); scanf(%d,&x); if (x0) /*判斷x0是否成立*/ y=-x; else /*若x0的值為假*/ y=x; printf(這個數(shù)的絕對值是:%dn,y); 1)語法格式: if (條件表達式) 語句1;else 語句2; 2)雙分支結(jié)構(gòu)執(zhí)行過程:先對表達式求解,當結(jié)果為“真”(非0)時,執(zhí)行語句1;當計算結(jié)果為假(0)時,執(zhí)行語句2。然后執(zhí)行if語句下面的語句。所以利用if-e1se形式的if語句可以實現(xiàn)雙向分支選擇。實際運用中,語句1、語句2常為復合語句。3語法特征為:一個條件表達式,兩個可選執(zhí)行。三、歸納總結(jié),布置課
31、后作業(yè) (1)回顧上課前的學習目標,對本節(jié)課知識點進行總結(jié)。 (2)掃描二維碼查看相應(yīng)資源,完成課后實訓題。第三學時(switch-case語句)一、引入學習任務(wù)(1)回顧上節(jié)課的內(nèi)容,if-else語句。(2)明確學習方向?!局R點】switch-case語法switch-case語句流程【能力點】熟練掌握switch-case語句二、明確目標,完成任務(wù)【做中學2-3】某運輸公司對用戶收取運費的規(guī)定如下(s表示里程數(shù)km): S250 0(沒有折扣) 250s500 2% 500s1000 5% 1000s2000 8% 2000s3000 10% 3000s 15%設(shè)基本運費為每公里每噸p
32、元,貨物重為w噸,折扣為d,總運費f的計算公式為 f = pws(1-d)距離s折扣率d距離s折扣率ds25001750s20008%250s5002%2000s225010%500s7505%2250s250010%750s10005%2500s275010%1000s12508%2750s300010%1250s15008%3000s15%1500s17508%通過分析,可以用多分支選擇結(jié)構(gòu)處理這種多種選擇的情況。f是因變量,s、p、w的值從鍵盤輸入?!境绦虼a】 #include void main( )int c,s;float p,w,d,f;printf(請輸入每公里運價(元/噸*
33、公里),貨物重量(噸),運輸里程(公里):);scanf(%f,%f,%d,&p,&w,&s);if(s=3000) c=12;else c=s/250;switch(c) case 0:d=0;break; case 1:d=2;break; case 2: case 3:d=5;break; case 4: case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15;break; default:printf(輸入里程有錯!n); f=p*w*s*(1-d/100.0
34、f);printf(應(yīng)繳運費:%15.4fn,f); 1語法格式:switch (表達式)case常量1:語句1; case常量2:語句2; case常量n:語句n;default:語句n+1;2switch-case 語句使用說明(1) 表達式可以為任何整數(shù)類型(包括字符型,也包括無符號的整數(shù)類型)。(2) 各個常量取不同的值。(3) 當表達式的值與某個case后的常量的值相等時,就執(zhí)行此常量后面的語句,如果表達式的值沒有和任何常量相匹配,就執(zhí)行default后面的語句,如果省略了default語句,那么將不作任何處理,接著執(zhí)行switch結(jié)構(gòu)后面的語句。(4) 如果在相匹配case的語句塊
35、中沒有break語句,那么程序?qū)拇碎_始順序執(zhí)行,直到遇到某個case子句中的break語句,才跳出switch結(jié)構(gòu)。否則,一直執(zhí)行到switch語句結(jié)束。因而多個case可以共用同一組執(zhí)行語句。如: case 8: case 9: case 10: case 11:d=10;break;(5) case后面必須是常量表達式,表達式中不能包含變量。例如,不能寫成 case b。(6) default出現(xiàn)的位置不影響程序執(zhí)行結(jié)果。所以可先出現(xiàn)default子句,再出現(xiàn)各case子句。3語法特征為:一個表達式的值,對應(yīng)n個常量表達式的值。三、歸納總結(jié),布置課后作業(yè) (1)回顧上課前的學習目標,對本
36、節(jié)課知識點進行總結(jié)。 (2)掃描二維碼查看相應(yīng)資源,完成課后作業(yè)。第四、五學時(多分支結(jié)構(gòu)的if-else語句)引例任務(wù),提出需求(1)回顧上節(jié)課的內(nèi)容,switch-case語句。(2)明確本節(jié)課學習方向?!局R點】多分支結(jié)構(gòu)的if-else語句【能力點】熟練掌握多分支結(jié)構(gòu)的if-else語句二、明確目標,完成任務(wù)對于雙分支結(jié)構(gòu)的if語句,若它的子句(語句1或語句2)也是if語句,就出現(xiàn)了if語句的嵌套?!咀鲋袑W2-4】分段函數(shù)計算。編程實現(xiàn)多值函數(shù)的功能?!境绦虼a】 #include void main( ) int x,y; printf(請輸入一個整數(shù):); scanf(%d,&x)
37、; if(x0&x=10) /*如果滿足條件0 x10&x20) /*如果滿足條件10 x=20&x100) /*如果滿足條件20=x100 */ y=3*x; printf(x20,100),y=%dn,y); else y=0; printf(x的值太大或太??!y=%dn,y); 1語法格式: if (條件式1) 語句1; else if(條件式2) 語句2; else if條件式3) 語句3 else if(條件式n) 語句n; else 語句n+1;2執(zhí)行過程:執(zhí)行時,程序首先求解表達式l的值,當計算結(jié)果為“真”時,執(zhí)行語句1;否則求解表達式2的值,當計算結(jié)果為“真”時,執(zhí)行語句2;否
38、則再繼續(xù)求解表達式3,當計算結(jié)果為“真”時,執(zhí)行語句3;否則接著進行判斷,依此類推,直到找到結(jié)果為“真”的表達式,并執(zhí)行與之相關(guān)的語句。如果經(jīng)過求解,所有的表達式都為“假”,那么就執(zhí)行最后一個else后面的語句。三、歸納總結(jié),布置課后作業(yè) (1)回顧上課前的學習目標,對本節(jié)課知識點進行總結(jié).(2)掃描二維碼查看相應(yīng)資源,完成課后作業(yè)。第六、七、八學時(邊學邊練、實訓題)一、上機練習【能力點】熟練掌握條件表達式和邏輯表達式的使用。熟練掌握if語句的使用。熟練掌握switch語句的使用?!揪氈袑W2-1】實現(xiàn)英寸與厘米的換算?!境绦虼a】#include void main( ) float y,r
39、=2.54; int flag; printf(輸入數(shù)據(jù),標志(1英寸厘米,2厘米英寸):); scanf(%f,%d,&y,&flag); if (flag = 2 | flag =1) if (flag =1) printf(%10.2f英寸=%10.2f厘米,y,y*r); else printf(%10.2f厘米=%10.2f英寸,y,y/r); else printf(輸入數(shù)據(jù)有錯!n);【練中學2-2】求方程ax2+bx+c=0的解?!境绦虼a】#include #include void main( ) float a,b,c,x1,x2,d; printf(輸入一元二次方程的三
40、個系數(shù)(a,b,c):); scanf(%f,%f,%f,&a,&b,&c); if (a=0) if (b=0) printf(不是方程。n); else printf(是一次方程只有一個根:x=%10.2fn,-c/b); else d=b*b-4*a*c; if (d0) x1= (-b+(float)sqrt(d)/(2*a); x2= (-b-(float)sqrt(d)/(2*a); printf(方程有兩不等根:nx1=%10.2f,x2=%10.2fn,x1,x2); else printf(方程有兩相等根:nx1=x2=%10.2f n,-b/(2*a); 【練中學2-3】輸
41、入年份,判斷是否為潤年?!境绦虼a】#include void main( )int year,leap=0;printf(程序用于判斷閏年。請輸入年份:);scanf(%d,&year);if (year % 4=0)if (year%100!=0) leap=1; if (year%400=0) leap=1;if (leap) printf(%d年是潤年。n,year);else printf(%d年不是閏年。n,year);【練中學2-4】三個數(shù)按升序排序。【程序代碼】#include void main( ) int a1,a2,a3,temp; printf(請輸入3個整數(shù):);
42、scanf(%d,%d,%d,&a1,&a2,&a3); if (a1a2) temp=a1;a1=a2;a2=temp; if (a2a3) temp=a2;a2=a3;a3=temp; if (a1a2) temp=a1;a1=a2;a2=temp; printf(三個數(shù)排序后:%d,%d,%dn,a1,a2,a3);【練中學2-5】根據(jù)利潤計算工資。【程序代碼】#include void main( ) int profit; int grade; /*利潤級別*/ double salary=500; /*基本工資*/ printf(輸入利潤:); scanf(%ld, &profit
43、); grade= profit / 100; switch(grade) case 0: break; case 1: salary += profit*0.1; break; /*提成算式*/ case 2: case 3: case 4: salary += profit*0.15; break; case 5: case 6: case 7: case 8: case 9: salary += profit*0.2; break; default: salary += profit*0.25; printf(salary=%.2fn, salary);二、歸納總結(jié),完成課后實訓題 (1
44、)回顧本節(jié)課的學習目標,對知識點進行總結(jié)。 (2)完成課后實訓作業(yè)。教學后記職業(yè)本科規(guī)劃教材C語言程序設(shè)計教學設(shè)計課程名稱: C語言程序設(shè)計 授課年級: 2022年級 授課學期: 2022學年第一學期 教師姓名: XXX 2021年10月22日第3章 面向?qū)ο螅ㄉ希┠K四 數(shù)組應(yīng)用訓練課題名稱模塊三 循環(huán)程序設(shè)計訓練計劃學時8學時內(nèi)容分析重復做某件事的現(xiàn)象稱為“循環(huán)”。C程序的循環(huán)結(jié)構(gòu)就是在滿足循環(huán)條件時,重復執(zhí)行某程序段,直到循環(huán)條件不滿足為止,重復執(zhí)行的程序段稱為循環(huán)體。循環(huán)結(jié)構(gòu)有兩種形式:“當型”循環(huán)和“直到型”循環(huán)。教學目標及基本要求(1) 掌握循環(huán)結(jié)構(gòu)的構(gòu)成及特點;(2) 掌握循環(huán)控
45、制變量的使用;(3) 熟練掌握三種基本的循環(huán)控制語句;(4) 熟練掌握一重循環(huán)的構(gòu)建方法,學會構(gòu)建二重循環(huán);(5) 了解goto語句構(gòu)成的循環(huán);教學重點循環(huán)結(jié)構(gòu)的構(gòu)成、循環(huán)控制變量、循環(huán)控制語句教學難點循環(huán)控制變量的使用、構(gòu)建二重循環(huán)教學方式教學采用教師課堂講授與學生操作練習共同進行的一體化教學方式概念性知識點:提出為什么,將抽象具體化,配合教學PPT、案例輔助講解。操作性知識點:提需求,并上機演示如何操作,重點內(nèi)容總結(jié)經(jīng)驗及注意事項。學生操作練習:完成教材中的引例、做中學以及練中學案例,有能力的學生還可以完成教師額外布置的拓展練習題目。教學過程第一、二學時(while語句)一、引例任務(wù),提出
46、需求(1)通過引力任務(wù),引出本節(jié)所需知識內(nèi)容?!疽蝿?wù)】計算1+2+100。【程序代碼】#include void main( ) int s=0;/s用來存放累加和,初始值為0int i=1;/i用來存放累加次數(shù),初值為1表示第一次相加 while(i=100) s=s+i;/把數(shù)i累加到s中 i+;/累加次數(shù)增1,i也是累加數(shù) printf(“s=%dn”,s);【程序運行】s=5050(2)明確學習方向。【知識點】循環(huán)控制變量:用于控制循環(huán)次數(shù)的變量,引例中的i為循環(huán)控制變量。循環(huán)體結(jié)構(gòu):由四個部分組成,包括初始化部分、判斷部分、循環(huán)體部分和迭代部分。初始化部分:對循環(huán)控制變量的初始化
47、,只做一次。引例中的“int i=1;”就是初始化部分,初值為1表示做第1 次循環(huán)。判斷部分:判斷循環(huán)控制變量的值是否超過邊界值,若沒有超過執(zhí)行循環(huán)體,否則退出循環(huán)。引例中的“while(i=100)”就是判斷部分,若i的值小于等于100,執(zhí)行循環(huán)體。循環(huán)體部分:被反復執(zhí)行的部分。引例中的“s=s+i;”就是循環(huán)體,被反復執(zhí)行了100次。迭代部分:用來修改循環(huán)控制變量的值。引例中的“i+;”就是迭代部分,每執(zhí)行一次,循環(huán)控制變量i的值就更加接近邊界值(100)。明確目標,完成任務(wù)用while語句實現(xiàn)的循環(huán),其結(jié)構(gòu)是當型循環(huán)結(jié)構(gòu),即先判斷后執(zhí)行循環(huán)體的循環(huán)結(jié)構(gòu)?!咀鲋袑W3-1】從鍵盤輸入n(n0
48、)的值,計算并輸出“n!”的值?!境绦虼a】 #include void main( ) int i=1,n;/初始化部分 double f=1; printf(請輸入變量n的值:n);scanf(%d,&n); while(i=n) /判斷部分 f=f*i;/循環(huán)體部分 i+;/迭代部分 printf(%d!=%le,n,f);1while語句語法格式: while(表達式) 語句其中,“語句”表示while循環(huán)結(jié)構(gòu)中不斷被重復執(zhí)行的語句行,稱為循環(huán)體。若循環(huán)體內(nèi)有多條語句,則用花括弧引起來。2while循環(huán)結(jié)構(gòu)的功能:只要循環(huán)條件表達式成立(條件表達式為真),則執(zhí)行循環(huán)體,直到表達式不成立
49、(表達式為假)時結(jié)束循環(huán)。循環(huán)體可以為空語句、簡單語句或復合語句。三、歸納總結(jié),布置課后作業(yè) (1)回顧上課前的學習目標,對本節(jié)課知識點進行總結(jié)。 (2)掃描二維碼查看相應(yīng)資源,完成課后實訓題。第三、四學時(do-while語句、for語句)一、引入學習任務(wù)(1)回顧上節(jié)課的內(nèi)容,while語句。(2)明確學習方向?!局R點】do-while語句for語句【能力點】熟練掌握do-while語句熟練掌握for語句二、明確目標,完成任務(wù)1.do-while語句用do-while語句實現(xiàn)的循環(huán),其結(jié)構(gòu)是直到型循環(huán)結(jié)構(gòu)。它的特點是先執(zhí)行循環(huán)體,再判斷循環(huán)條件是否成立,流程圖如圖3-4所示?!咀鲋袑W3-
50、2】用do-while語句完成引例任務(wù)。【程序代碼】#include void main( ) int n=1,total=0; do total=total+n; n+; while(n=100); printf(total=%d,total);1)do-while語句語法格式: do 語句組 while(條件表達式);2)執(zhí)行過程:先執(zhí)行循環(huán)體語句一次,再判別表達式的值,若為真(非0) ,則繼續(xù)循環(huán),否則終止循環(huán)。2.for語句在C語言程序設(shè)計中,for循環(huán)結(jié)構(gòu)使用最為靈活,不僅適用于循環(huán)次數(shù)已知的情況,也適用于循環(huán)次數(shù)不能確定、只能給出循環(huán)結(jié)束條件的情況,它完全可以替代while語句?!?/p>
51、做中學3-3】用for語句實現(xiàn)求1100的累加和?!境绦虼a】#include void main()int k, s=0; for(k=1;k=100;k+) s+= k;printf(sum=%dn,s);1)for語句語法格式: for(表達式1;表達式2;表達式3) 循環(huán)體語句;2)執(zhí)行過程:(1) 求解表達式1,初始化循環(huán)控制變量,只求一次。(2) 求解表達式2,判斷表達式2的值是否成立。若表達式2的值為真,執(zhí)行循環(huán)體語句。若表達式2的值為假,結(jié)束循環(huán)。執(zhí)行for語句后面的一條語句。執(zhí)行循環(huán)體。(3) 求解表達式3,修改循環(huán)控制變量的值。(4) 返回第2步繼續(xù)執(zhí)行。3)說明:3個表達
52、式可以為任何表達式。(1) 表達式1為循環(huán)控制變量賦初值,通常為賦值表達式。(2) 表達式2通常為關(guān)系表達式或邏輯表達式,作為循環(huán)控制條件。(3) 表達式3為循環(huán)控制變量的修正表達式,通常也為賦值表達式。(4) 表達式1和表達式3一般為簡單表達式,也可以為逗號表達式。(5) 3個表達式均可以省略或部分省略。但是用作分隔符的分號不能省略。省略了表達式1,表示不對循環(huán)控制變量賦初值。省略了表達式2,for循環(huán)便成了死循環(huán)。省略了表達式3,則不對循環(huán)控制變量進行修改,這時需在循環(huán)體中加入修改循環(huán)控制變量的語句,否則for循環(huán)也可能成為死循環(huán)。4)循環(huán)的比較:(1) 幾種循環(huán)(while、do-whi
53、le、for)一般情況下可互相替代。(2) for語句主要用于給定循環(huán)控制變量初值,步長增量以及循環(huán)次數(shù)確定的循環(huán)結(jié)構(gòu)。(3) 循環(huán)次數(shù)及控制條件要在循環(huán)過程中才能確定的循環(huán)可用while或do-while語句。(4) 循環(huán)條件:while、do-while在while條件表達式中指定,for循環(huán)在“表達式2”中指定。(5) 循環(huán)變量的初始化:while、do-while在循環(huán)之前指定循環(huán)變量初值,for循環(huán)在“表達式1”中指定。(6) 判斷循環(huán)條件的時機:while、for循環(huán)先判斷循環(huán)條件,后執(zhí)行循環(huán)體;do-while循環(huán)先執(zhí)行循環(huán)體,后判斷循環(huán)條件。 三、歸納總結(jié),布置課后作業(yè) (1)
54、回顧上課前的學習目標,對本節(jié)課知識點進行總結(jié)。 (2)掃描二維碼查看相應(yīng)資源,完成課后作業(yè)。第五、六學時(循環(huán)嵌套、循環(huán)退出語句)引例任務(wù),提出需求(1)回顧上節(jié)課的內(nèi)容,do-while語句、for語句。(2)明確本節(jié)課學習方向?!局R點】循環(huán)嵌套break語句continue語句goto語句【能力點】掌握二重循環(huán)嵌套了解三重循環(huán)嵌套熟練應(yīng)用break語句和continue語句掌握goto語句的使用二、明確目標,完成任務(wù)1.循環(huán)嵌套所謂循環(huán)嵌套即一個循環(huán)體內(nèi)還包含另一個或幾個完整的循環(huán)結(jié)構(gòu),當內(nèi)嵌的循環(huán)中還嵌套其他循環(huán)時,成為多層循環(huán)?!咀鲋袑W3-4】 打印下列形式的乘積表:11=121=2
55、 22=431=3 32=1 33=991=9 92=18 93=27 99=81【程序清單】#include void main(void)int i,j;for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%2d ,i,j,i*j);printf(n); 123456while() while() do dowhile(); while();for(;) for(;) while() dowhile(); for(;) while() do for (;) while();三種循環(huán)結(jié)構(gòu)(for、while和do while)可以互相嵌套,多重循環(huán)的使用
56、與單一循環(huán)完全相同,但應(yīng)特別注意內(nèi)、外層循環(huán)條件的變化。2.break語句有時在循環(huán)的過程中,若滿足一定的條件需要退出循環(huán),可用break語句實現(xiàn)。【做中學3-5】求解當n 多少時12n的積剛好大于1000。【程序代碼】 #include void main(void) float f=1; int n; for(n=1;n+) f*=n; if (f1000) break;/積大于1000時,推出循環(huán) printf(n=%d,%d!=%fn,n,n,f);break語句的作用是跳出switch語句或跳出本層循環(huán)。break語句用于switch結(jié)構(gòu)的情況在任務(wù)二已講,用于for、while或d
57、o while循環(huán)語句中時,可使程序終止循環(huán)而執(zhí)行循環(huán)體后面的語句,通常與if語句配合使用,用于提前退出循環(huán)。3. continue語句有時在循環(huán)的過程中,若滿足一定的條件本次循環(huán)的剩余語句可以不執(zhí)行,用來加速循環(huán),可用continue語句實現(xiàn)?!咀鲋袑W3-6】輸出1100之間的不能被5整除的數(shù)?!境绦虼a】#include void main(void) int n; for (n=1;n=100;n+) if (n%5=0) continue; printf(%5d,n); continue語句的作用是跳過循環(huán)體中剩余的語句而強行執(zhí)行下一次循環(huán)。只用于for、while、do-while等
58、循環(huán)體中,常與if條件語句一起使用,用于加速循環(huán)。4.goto語句goto語句為無條件轉(zhuǎn)向語句,它可以控制程序的轉(zhuǎn)向操作?!咀鲋袑W3-7】反復讀取鍵盤字符,并顯示在屏幕,直到讀到回車符為止。【程序代碼】#include void main()char ch,ch1;printf(請輸入一串字符:n);output :ch=getchar();/定義了語句標號outputch1=getchar();/讀取回車符printf(n你輸入的字符為:%cn,ch);if (ch!=n) goto output;1)goto語句語法格式: goto 語句標號;2)說明:(1) 語句標號是按標識符規(guī)定書寫的
59、符號,放在某一語句行的前面,標號后加冒號。(2) 語句標號起標識語句的作用,與goto語句配合使用。執(zhí)行g(shù)oto語句后,程序?qū)⑻D(zhuǎn)到該標號處并執(zhí)行其后的語句。(3) 標號必須與goto語句同處于一個函數(shù)中,但可以不在一個循環(huán)體中。(4) goto語句用途有兩種:與if語句一起構(gòu)成循環(huán);從循環(huán)體內(nèi)跳到循環(huán)體外。三、歸納總結(jié),布置課后作業(yè) (1)回顧上課前的學習目標,對本節(jié)課知識點進行總結(jié).(2)掃描二維碼查看相應(yīng)資源,完成課后作業(yè)。第七、八學時(邊學邊練、實訓題)一、上機練習【能力點】掌握循環(huán)結(jié)構(gòu)的基本構(gòu)成。掌握3種循環(huán)語句的執(zhí)行過程。掌握循環(huán)語句的實際應(yīng)用。掌握多重的構(gòu)建和使用。掌握循環(huán)邊界的
60、定義?!揪氈袑W3-1】判斷一個整數(shù)是否為“素數(shù)”?!境绦虼a】#include #include void main() int m,i,k; scanf(“%d”,&m); k=(int)sqrt(m); for (i=2;i=k+1) printf(“%d是素數(shù)。n”,m); else printf(“%d不是素數(shù)。n”,m);【練中學3-2】求100200間的全部素數(shù),并統(tǒng)計素數(shù)個數(shù)?!境绦虼a】#include “math.h”#include void main() int m,k,i,n=0; /*n用于累計素數(shù)的個數(shù)*/ for (m=101;m=200;m=m+2) k=(in
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)浴員工合同范本
- 分租門面裝修合同范本
- 企業(yè)招募資金協(xié)議合同范本
- 公司 法律 合同范本
- 公司欠工資合同范本
- 衛(wèi)生清理施工合同范例
- 合伙店轉(zhuǎn)讓合同范例
- 北京保利拍賣合同范本
- 醫(yī)師執(zhí)業(yè)合同范本
- 農(nóng)村菜地養(yǎng)殖合同范本
- 2025江蘇太倉市城市建設(shè)投資集團限公司招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2.2 學會管理情緒(同步課件)2024-2025學年七年級道德與法治下冊(統(tǒng)編版2024)
- 14磁極與方向(教學設(shè)計)-二年級科學下冊(教科版)
- 2025年山西經(jīng)貿(mào)職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2024年09月江蘇2024年蘇州金融租賃校園招考筆試歷年參考題庫附帶答案詳解
- 2025年八省聯(lián)考數(shù)學試題(原卷版)
- 高教社馬工程倫理學(第二版)教學課件02
- 廣西柳州市2025屆高三第二次模擬考試政治試題含答案
- 《宏觀經(jīng)濟管理研究》課件
- 鳳凰衛(wèi)視中文臺節(jié)目表
- 2025屆廣東省佛山一中、石門中學高考數(shù)學考前最后一卷預測卷含解析
評論
0/150
提交評論