C語言程序設(shè)計 課件 5學(xué)生成績的分組匯_第1頁
C語言程序設(shè)計 課件 5學(xué)生成績的分組匯_第2頁
C語言程序設(shè)計 課件 5學(xué)生成績的分組匯_第3頁
C語言程序設(shè)計 課件 5學(xué)生成績的分組匯_第4頁
C語言程序設(shè)計 課件 5學(xué)生成績的分組匯_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計項(xiàng)目5學(xué)生成績的分組匯總目標(biāo)TARGET知識目標(biāo)掌握while,do…while和for三種循環(huán)語句。學(xué)會使用continue、break語句。掌握循環(huán)的嵌套使用。能夠使用循環(huán)語句進(jìn)行程序設(shè)計。目標(biāo)TARGET技能目標(biāo)掌握while語句、do…while語句、for語句,三種語句的表示形式。掌握while語句、do…while語句、for語句應(yīng)用于循環(huán)結(jié)構(gòu)程序設(shè)計。掌握嵌套循環(huán)結(jié)構(gòu)程序設(shè)計。掌握continue、break語句的應(yīng)用。計算一個小組學(xué)生成績的總分及平均分任務(wù)5.1

計算每個小組學(xué)生成績的總分及平均分任務(wù)5.2任務(wù)5.1計算一個小組學(xué)生成績的總分及平均分

任務(wù)描述一個班進(jìn)行了一次考試,現(xiàn)要輸入第一小組學(xué)生的成績,編寫一個程序,連續(xù)輸入10名學(xué)生得成績,并計算總分和平均分。任務(wù)分析輸入10名學(xué)生的成績,求解總分及平均分。需要利用C語言循環(huán)語句進(jìn)行計算。算法設(shè)計(1)定義float變量sum、average用來表示總分和平均分;(2)定義int變量i用來表示循環(huán)次數(shù)。任務(wù)5.1計算一個小組學(xué)生成績的總分及平均分

實(shí)現(xiàn)在線測試系統(tǒng)主頁面的布局和美化某班級需要一個學(xué)生成績管理系統(tǒng),該系統(tǒng)應(yīng)具有學(xué)生成績的添加、刪除、查詢、修改、插入和排序等處理功能,提供數(shù)字按鍵菜單操作方式,如圖0-1所示。程序代碼#include<stdio.h>intmain(){

inta,i;

floatsum=0,average;

printf("pleaseinput10numbers:");

for(i=1;i<=10;i++)

{scanf("%d",&a);sum=sum+a;}average=sum/10;printf("averageis%f\n",average);}任務(wù)5.1計算一個小組學(xué)生成績的總分及平均分

執(zhí)行結(jié)果1循環(huán)結(jié)構(gòu)程序設(shè)計及其應(yīng)用Part◎do…while語句◎for循環(huán)語句◎三種循環(huán)語句的比較◎while循環(huán)while循環(huán)

1.while語句的一般形式while語句是當(dāng)型循環(huán)控制語句,其一般格式為:while(表達(dá)式){語句體;}while循環(huán)

說明:1)表達(dá)式為循環(huán)的條件,可以是C語言中任意合法的表達(dá)式,一般為關(guān)系或者邏輯表達(dá)式。2)語句體即為重復(fù)執(zhí)行的操作,也可以把它稱為循環(huán)體。通常語句體可以是一個語句,也可以是多個語句。當(dāng)只有一個語句時,外層的大括號可以省略,如果語句體是多個語句時,一定要用“{}”括起來,以復(fù)合語句的形式出現(xiàn)。3)while循環(huán)的特點(diǎn)是先判斷條件后執(zhí)行語句體。因此,語句體可能一次也不會被執(zhí)行到。4)循環(huán)體內(nèi)一定要有改變循環(huán)條件的語句,使循環(huán)趨于結(jié)束,否則就會形成死循環(huán),即循環(huán)將無休止地執(zhí)行下去。while循環(huán)

2.while語句的執(zhí)行過程

首先計算表達(dá)式的值,如果表達(dá)式的值為非0(真),則執(zhí)行循環(huán)體語句,然后重新計算表達(dá)式的值,并再次判斷值是否為真,如為真,再執(zhí)行循環(huán)體內(nèi)的語句,如此循環(huán)往復(fù)。如果表達(dá)式的值為0(假),則退出循環(huán)結(jié)構(gòu),條件語句體NY

while語句執(zhí)行流程while循環(huán)

1)定義一個累加變量并賦初值為0。

2)每次累加的數(shù)比前一個數(shù)增加一個。

3)將累加數(shù)累加到累加變量中。

4)輸出總數(shù)。例5-1編寫程序計算1+2+…+100,然后輸出結(jié)果。計算1~100的和可以使用循環(huán)控制,完成重復(fù)加1個數(shù)的操作。

問題分析

算法設(shè)計while循環(huán)

流程圖算法

程序代碼#include<stdio.h>voidmain(){inti=1,iSum=0;while(i<=100){iSum=iSum+i;i++;}printf("thesumis%d\n",iSum);}

程序執(zhí)行的結(jié)果while循環(huán)

1)定義一個變量存放每個月的煤氣費(fèi)用。

2)循環(huán)輸入12個月的煤氣費(fèi)用。

3)計算12個月費(fèi)用的總和。

4)輸出總費(fèi)用。例5-2計算一個住戶一年的煤氣費(fèi)用的總和(每月煤氣費(fèi)由鍵盤輸入)一年12個月,需要用循環(huán)控制依次輸入每月的費(fèi)用,并且進(jìn)行累加。

問題分析

算法設(shè)計while循環(huán)

流程圖算法

程序代碼#include<stdio.h>voidmain(){ floatfCost,fSum=0.0; inti=1; while(i<=12) { scanf("%f",&fCost); fSum=fSum+fCost; i++; }printf("\nthesumofgascostis%.1f\n",fSum);}

程序執(zhí)行的結(jié)果while循環(huán)

1)定義一個變量i為循環(huán)控制變量。

2)循環(huán)輸出表達(dá)式i*i及表達(dá)式的值。例5-3用while語句顯示1~10的二次方。需要用循環(huán)控制依次輸出1~10的二次方。

問題分析

算法設(shè)計while循環(huán)

流程圖表達(dá)式i<=100NY表達(dá)式1i=1語句體i++輸出表達(dá)式i*i及其值while循環(huán)

程序代碼#include<stdio.h>voidmain(){inti=1;while(i<=10){printf("%d*%d=%d\n",i,i,i*i);i++;}}

程序執(zhí)行的結(jié)果

1.do…while語句一般格式句do…while循環(huán)又稱直到型循環(huán),其一般格式為:do{語句體;}while(表達(dá)式);do…while循環(huán)

說明:1)表達(dá)式為循環(huán)的條件,可以是C語言中任意合法的表達(dá)式,一般為關(guān)系或者邏輯表達(dá)式。2)語句體即為重復(fù)執(zhí)行的操作,也可以把它稱為循環(huán)體。通常語句體可以是一個語句,也可以是多個語句。當(dāng)只有一個語句時,外層的大括號可以省略,如果語句體是多個語句時,一定要用“{}”括起來,以復(fù)合語句的形式出現(xiàn)。3)do…while循環(huán)的特點(diǎn)是先執(zhí)行一次語句體然后判斷條件。因此,語句體至少會執(zhí)行一次。4)do…while最后的分號“;”不能省略。do…while循環(huán)

2.do...while語句的執(zhí)行過程

首先執(zhí)行do后面的語句體,然后計算while后面表達(dá)式的值,如果表達(dá)式的值為非0(真),則繼續(xù)執(zhí)行循環(huán)體語句,如此循環(huán)往復(fù)。如果表達(dá)式的值為0(假),則退出循環(huán)結(jié)構(gòu).

do...while語句執(zhí)行流程條件語句體NYdo…while循環(huán)

與例5-1相似,這里不再敘述。例5-4用do…while語句構(gòu)成循環(huán),求1+2+…+100,然后輸出結(jié)果。計算1~100的和可以使用循環(huán)控制,完成重復(fù)加1個數(shù)的操作,與例5-1相似。

問題分析

算法設(shè)計do…while循環(huán)

流程圖do…while循環(huán)

程序代碼#include<stdio.h>voidmain(){inti,iSum=0;scanf("%d",&i);do{iSum+=i;i++;}while(i<=100);printf("%d",iSum);}do…while循環(huán)

注意1)do…while循環(huán)語句特點(diǎn)是先執(zhí)行循環(huán)體后判斷條件,因此不管條件是否成立,循環(huán)體語句都至少被執(zhí)行一次,這是它與while循環(huán)語句的本質(zhì)區(qū)別。2)不論循環(huán)體是一個語句還是多個語句,最好都用花括號括起來。3)避免出現(xiàn)“死循環(huán)”。4)do…while語句與while語句的不同之處①執(zhí)行流程不同。do…while語句先執(zhí)行一次循環(huán)體,再判斷表達(dá)式;而while語句先判斷表達(dá)式,后執(zhí)行循環(huán)體。②執(zhí)行循環(huán)體的次數(shù)可能不同。do…while語句的循環(huán)體至少執(zhí)行一次;而while語句的循環(huán)體可能一次也不執(zhí)行。do…while循環(huán)For循環(huán)語句

1.for循環(huán)語句的一般格式for循環(huán)語句又稱計數(shù)循環(huán),其一般格式為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){語句體;}for循環(huán)語句

說明:1)表達(dá)式1一般用來給循環(huán)變量賦初值,因此常為賦值表達(dá)式,指定循環(huán)的起點(diǎn)。也可以在for語句外給循環(huán)變量賦初值,這是可以省略該表達(dá)式。2)表達(dá)式2一般用來表示循環(huán)的條件,決定循環(huán)的繼續(xù)或者結(jié)束,一般為關(guān)系或者邏輯表達(dá)式。3)表達(dá)式3一般用來修改循環(huán)變量的值,控制變量每循環(huán)一次按什么方式變化,從而改變表達(dá)式2的真假性(即改變循環(huán)的條件),一般為賦值語句。4)根據(jù)上述for語句的3個表達(dá)式的用法,for語句的常用形式如下:for(初始表達(dá)式;循環(huán)條件表達(dá)式;循環(huán)變量增值表達(dá)式){語句體;}for循環(huán)語句

5)for循環(huán)相當(dāng)于下面的while循環(huán):表達(dá)式1;While(表達(dá)式2){語句體;表達(dá)式3;}

6)for語句的3個表達(dá)式,他們之間用分號“;”隔開。不能使用其它符號。for循環(huán)語句

2.for循環(huán)語句的執(zhí)行過程(1)先執(zhí)行表達(dá)式1。(2)計算表達(dá)式2,若為非0(真),則執(zhí)行循環(huán)體;若為0(假),則結(jié)束循環(huán)。(3)計算表達(dá)式3,然后重復(fù)執(zhí)行第二步。表達(dá)式1i=1語句體i++表達(dá)式i<=100NY表達(dá)式3圖5-7for語句執(zhí)行流程for循環(huán)語句

請參看例5-1。例5-5用for語句計算1+2+???+100的值。計算1~100的和可以使用循環(huán)控制,完成重復(fù)加1個數(shù)的操作,請參看例5-1。

問題分析

算法設(shè)計for循環(huán)語句

程序代碼#include<stdio.h>voidmain(){inti,iSum;for(i=1,iSum=0;i<=100;i++){iSum=iSum+i;}printf("iSum=%d\n",iSum);}for循環(huán)語句

for循環(huán)語句的幾種形式for語句中的3個表達(dá)式都可以根據(jù)需要任意省略,但是分號不能省。因此,for循環(huán)語句可以有如下形式:(1)省略表達(dá)式1:應(yīng)在for之前為變量賦初值。如例5-4可改寫為:inti=1,iSum=0;for(;i<=100;i++){iSum=iSum+i;}printf("iSum=%d\n",iSum);for循環(huán)語句

for循環(huán)語句的幾種形式(2)省略表達(dá)式2:循環(huán)條件始終為“真”,循環(huán)不終止。如例5-4可改寫為:inti,iSum=0;for(i=1;;i++){if(i>100)break;iSum=iSum+i;}printf("iSum=%d\n",iSum);for循環(huán)語句

for循環(huán)語句的幾種形式(3)省略表達(dá)式3:應(yīng)另外設(shè)法使程序能夠結(jié)束。如例5-4可改寫為:inti,iSum=0;for(i=1;i<=100;){iSum=iSum+i;i++;}printf("iSum=%d\n",iSum);for循環(huán)語句

for循環(huán)語句的幾種形式(4)省略表達(dá)式1、3:完全等同于while語句。如例5-4可改寫為:inti=1,iSum=0;for(;i<=100;){iSum=iSum+i;i++;}printf("iSum=%d\n",iSum);for循環(huán)語句

for循環(huán)語句的幾種形式(5)三個表達(dá)式都省略:無初值,不判斷條件,循環(huán)變量不增值,死循環(huán)。如例5-4可改寫為:inti=1,iSum=0;for(;;){if(i>100)break;iSum=iSum+i;i++;}printf("iSum=%d\n",iSum);三種循環(huán)語句的比較

(1)三種循環(huán)都可以用來處理同一類問題,一般情況下它們可以互相替代。(2)三種循環(huán)都能用break結(jié)束循環(huán),用continue開始下一次循環(huán)。(3)while和do…while只判斷循環(huán)條件。循環(huán)變量的初值化要放在循環(huán)語句之前(如i=0,s=1等),在循環(huán)體中還應(yīng)包含修改循環(huán)條件的語句(如i++,j++等)。(4)for語句本身除了包含循環(huán)條件之外,還可以給循環(huán)變量賦初值。當(dāng)然也允許省略其中某些部分。如果省略前后兩項(xiàng)成為for(;循環(huán)條件;)時,完全與while(循環(huán)條件)等效。(5)while和for都是先判斷后循環(huán),而do…while是先循環(huán)后判斷。三種循環(huán)語句的比較

任務(wù)5.2計算每個小組學(xué)生成績的總分及平均分

任務(wù)描述一個班進(jìn)行了一次考試,現(xiàn)要輸入4個小組學(xué)生的成績,編寫一個程序,連續(xù)輸入4個小組,每個小組10名學(xué)生得成績,并計算總分和平均分。任務(wù)分析輸入4小組學(xué)生的成績,求解總分及平均分。需要利用C語言循環(huán)嵌套語句進(jìn)行計算。算法設(shè)計(1)定義float變量sum、average用來表示總分和平均分;(2)定義int變量j用來表示4個小組,int變量i用來表示每個小組10名學(xué)生。任務(wù)5.2計算每個小組學(xué)生成績的總分及平均分

程序代碼#include<stdio.h>intmain(){intscore,i,sum;floataverage;intj=1;for(;j<=4;j++){sum=0;printf("請輸入第%d小組學(xué)生的成績:");for(i=1;i<=10;i++){任務(wù)5.2計算每個小組學(xué)生成績的總分及平均分

程序代碼scanf("%d",&score);sum=sum+score;}average=sum/10;printf("本小組10名學(xué)生的總分為:%d\n",sum);printf("本小組10名學(xué)生的平均分為:%2f\n",average);}}任務(wù)5.2計算每個小組學(xué)生成績的總分及平均分

程序執(zhí)行結(jié)果2循環(huán)嵌套的應(yīng)用Part◎break語句和continue語句◎循環(huán)的嵌套循環(huán)的嵌套

一個循環(huán)的循環(huán)體內(nèi)包含另外一個循環(huán)語句,稱為循環(huán)的嵌套。圖5-8是一個循環(huán)嵌套的例子。循環(huán)嵌套時,外層循環(huán)執(zhí)行一次,內(nèi)層循環(huán)從頭到尾執(zhí)行一遍。3種循環(huán)不僅可以自身嵌套,而且還可以互相嵌套。循環(huán)的嵌套

1)定義行變量、列變量。

2)循環(huán)輸出行乘列的值。

3)每行最后輸出一個換行符。例5-6打印九九乘法表九九乘法表一共九行九列,一共輸出45個式子,每個式子的被乘數(shù)和乘數(shù)都按一定規(guī)律進(jìn)行變化,外循環(huán)控制行(被乘數(shù)的變化),內(nèi)循環(huán)來控制列(乘數(shù)的變化)。

問題分析

算法設(shè)計循環(huán)的嵌套

流程圖循環(huán)的嵌套

程序代碼#include<stdio.h>voidmain(){intiRow,iCol;for(iRow=1;iRow<=9;iRow++) { for(iCol=1;iCol<=iRow;iCol++) printf("%d*%d=%-5d",iRow,iCol,iRow*iCol); printf("\n"); }}循環(huán)的嵌套

執(zhí)行結(jié)果break語句和continue語句

一般格式:break;continue;說明:1)break:強(qiáng)行結(jié)束循環(huán),轉(zhuǎn)向執(zhí)行循環(huán)語句的下一條語句。2)continue:結(jié)束本次循環(huán)。對于while和do…while循環(huán),跳過循環(huán)體其余語句,轉(zhuǎn)向循環(huán)終止條件的判斷;而對for循環(huán),跳過循環(huán)體其余語句,轉(zhuǎn)向循環(huán)變量增值量表達(dá)式的計算,如圖5-11所示。break語句和continue語句圖5-11break和continue語句對循環(huán)控制的影響拓展案例案例5-1趣味古典數(shù)學(xué)問題問題描述求Fibonacci數(shù)列:1、1、2、3、5、8……前40個數(shù)。Fibonacci數(shù)列可以用一個有趣的古典數(shù)學(xué)問題來描述:有一對兔子,出生三個月后每個月都生一對兔子。小兔子長到三個月后每個月又生一對兔子。假設(shè)所有的兔子都不死,問每個月的兔子總數(shù)是多少對?拓展案例算法設(shè)計1)設(shè)f1、f2為數(shù)列的第1、2項(xiàng),f為前兩個數(shù)的和。2)i為循環(huán)次數(shù),每行輸出7個數(shù)然后換行,滿足i能被7整除時換行。拓展案例程序代碼#include<stdio.h>voidmain(){inti;longf1=1,f2=1,f;printf("%6ld%6ld",f1,f2);for(i=3;i<=21;i++){拓展案例f=f1+f2;//由前兩項(xiàng)的f1,f2求得當(dāng)前項(xiàng)fprintf("%6ld",f);//輸出fif(i%7==0)printf("\n");//每行限輸出7個fibonacci數(shù)f1=f2;f2=f;//修改f1,f2的值,被下次循環(huán)遞推}}拓展案例案例5-2判斷n是否為素數(shù)問題描述任意輸入一個正整數(shù),判斷其是否為素數(shù)。拓展案例算法設(shè)計參考第1章拓展案例1-2。拓展案例程序代碼include<stdio.h>#include<math.h>voidmain(){intn,i,k;scanf("%d",&n);k=sqrt(n);for(i=2;i<=k;i++)if(n%i==0)拓展案例break;if(i>k)printf("%disaprimenumber\n",m);elseprintf("%disnotaprimenumber

溫馨提示

  • 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

提交評論