蘇小紅c語言電子教案第六章教學(xué)文案_第1頁
蘇小紅c語言電子教案第六章教學(xué)文案_第2頁
蘇小紅c語言電子教案第六章教學(xué)文案_第3頁
蘇小紅c語言電子教案第六章教學(xué)文案_第4頁
蘇小紅c語言電子教案第六章教學(xué)文案_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

蘇小紅c語言電子教案第六章Example:如何確定程序的輸入和輸出呢?Drawaflowchartforthefollowingproblem:讀入5個(gè)整數(shù),計(jì)算并顯示它們的和.Input:

5個(gè)整數(shù)n1,n2,n3,n4,n5Output:

n1,n2,n3,n4,n5的和Inputexample:2 3456Outputexample:20問題的提出Inputn1Inputn2Inputn3inputn4inputn5outputsumsum←n1+n2+n3+n4+n52n1Assumeinputexample:

234563n24n35n46n520sumend使用了6個(gè)不同的變量start問題的提出6.1循環(huán)控制結(jié)構(gòu)與循環(huán)語句標(biāo)記控制SentinelControlled計(jì)數(shù)控制CounterControlled1,2,3,4,……,4,3,2,1條件控制ConditionControlled如何對(duì)循環(huán)進(jìn)行控制呢?counter←1,sum←0counter<6sum←sum+nfalsetruecounter++outputsuminput

n1countersum01<6 true2n0+2222<6 true32+3533<6 true45+4944<6 true59+51455<6 true614+62066<6 falsecounter-controlled

計(jì)數(shù)器每次增1使用了3個(gè)變量Assumeinputexample:

234566.2計(jì)數(shù)控制的循環(huán)startend6.2計(jì)數(shù)控制的循環(huán)counter←initialValuetestcounterStepnStepxfalsetrueUpdatecounter循環(huán)體(BodyofLoop)前測(cè)當(dāng)型循環(huán)——Conditionistested

first

計(jì)數(shù)控制——Loopiscontrolledbya

counterSyntaxfor

(initialvalue;condition;updatecounter) statement;Or

for(initialvalue;condition;updatecounter){ statement; statement; }for循環(huán)語句循環(huán)起始條件循環(huán)結(jié)束條件循環(huán)變量增值復(fù)合語句compoundstatement被當(dāng)作一條語句看待循環(huán)變量控制循環(huán)次數(shù),不要在循環(huán)體內(nèi)改變這個(gè)變量的值i←0,sum←0i<5sum←sum+nfalsetruei++outputsuminputninti,sum,n;sum=0;for(i=0;i<5;i++){ scanf(“%d”,&n); sum=sum+n;}printf(“%d”,sum);for循環(huán)語句startendA條件P后測(cè)當(dāng)型循環(huán)假真6.3條件控制的循環(huán)A前測(cè)當(dāng)型循環(huán)真假假條件P

前測(cè)當(dāng)型循環(huán)——Conditionistestedfirst

條件或計(jì)數(shù)控制——Loopiscontrolledbyconditionoracounter

語法

while(condition) statement;Or

while(condition){ statement; statement; }Nosemicolon!!while循環(huán)語句后測(cè)當(dāng)型循環(huán)——Statementsintheloopareexecutedfirst(atleastonce),andconditionistestedlast條件或計(jì)數(shù)控制——

Loopiscontrolledbyconditionoracounter

語法do{ statement; statement;}while(condition);statement;Don’tforgetthesemicolon!!do-while循環(huán)語句【例6.1】計(jì)算并輸出1+2+3+…+n的值循環(huán)次數(shù)已知,計(jì)數(shù)控制的循環(huán)循環(huán)次數(shù)已知,計(jì)數(shù)控制的循環(huán)【例6.1】計(jì)算并輸出1+2+3+…+n的值sum=0的作用?

循環(huán)次數(shù)已知,計(jì)數(shù)控制的循環(huán)【例6.1】計(jì)算并輸出1+2+3+…+n的值循環(huán)條件第一次就為假(如輸入-1)時(shí)會(huì)怎樣?

【例6.1】計(jì)算并輸出1+2+3……+n的值A(chǔ)前測(cè)當(dāng)型循環(huán)真假假條件P假條件P

TestingConditionFirst【例6.1】計(jì)算并輸出1+2+3+…+n的值條件P后測(cè)當(dāng)?shù)叫脱h(huán)A假真條件PA假Testingconditionlast

【例6.1】計(jì)算并輸出1+2+3+…+n的值注意在for和前測(cè)while語句之后一般沒有分號(hào)有分號(hào)表示循環(huán)體就是分號(hào)之前的內(nèi)容空語句——表示循環(huán)體內(nèi)什么都不做while(i<100);

i++;死循環(huán)for(i=0;i<100;i++);

printf("%d",i);用于延時(shí)注意!如何減少循環(huán)的次數(shù)?【例6.1】計(jì)算并輸出1+2+3+…+n的值【例6.1】計(jì)算并輸出1+2+3+…+n的值逗號(hào)運(yùn)算符(CommaOperator)多數(shù)情況下,并不使用整個(gè)逗號(hào)表達(dá)式的值,更常見的情況是要分別得到各表達(dá)式的值主要用在循環(huán)語句中,同時(shí)對(duì)多個(gè)變量賦初值等

for(i=1,j=100;i<j;i++,j--)表達(dá)式1,表達(dá)式2,…,表達(dá)式n循環(huán)起始條件循環(huán)變量增值循環(huán)結(jié)束條件【例6.3】計(jì)算并輸出

n!=1×2×3×…×n

【例6.4】計(jì)算并輸出

1!,2!,3!,…,n!

循環(huán)次數(shù)未知,標(biāo)記控制的循環(huán)標(biāo)記值(SentinelValue)【例6.2】輸入數(shù)據(jù),顯示每次累加的結(jié)果,直到輸入0時(shí)為止

循環(huán)次數(shù)未知,標(biāo)記控制的循環(huán)【例6.2】輸入數(shù)據(jù),顯示每次累加的結(jié)果,直到輸入0時(shí)為止

選擇三種循環(huán)的一般原則如果循環(huán)次數(shù)已知,計(jì)數(shù)控制的循環(huán)用for如果循環(huán)次數(shù)未知,條件控制的循環(huán)用while如果循環(huán)體至少要執(zhí)行一次用do-while這只是“一般”原則,不是“原則”循序漸進(jìn)式編程

——例6.6:猜數(shù)游戲想一個(gè)1~100之間的數(shù)猜對(duì):right!猜錯(cuò):wrong!并提示大小只猜1次直到猜對(duì)為止最多猜10次猜多個(gè)數(shù)10次猜不對(duì)就猜下一個(gè)數(shù)循序漸進(jìn)式編程:猜數(shù)游戲

——例5.4,例6.6,例6.7,例6.12猜數(shù)游戲用到的庫函數(shù)怎樣模擬計(jì)算機(jī)“想”一個(gè)數(shù)呢?隨機(jī)函數(shù)rand()產(chǎn)生[0,RAND_MAX]之間的隨機(jī)數(shù)magic=rand();#include<stdlib.h>RAND_MAX在stdlib.h中定義,不大于雙字節(jié)整數(shù)的最大值32767產(chǎn)生[0,b-1]之間的隨機(jī)數(shù)magic=rand()%b;產(chǎn)生[a,a+b-1]之間的隨機(jī)數(shù)magic=rand()%b+a;#include<stdlib.h>#include<stdio.h>

main(){

intmagic;/*計(jì)算機(jī)"想"的數(shù)*/

intguess;/*人猜的數(shù)*/

magic=rand()%100+1;/*“想”一個(gè)[1,100]之間的數(shù)magic*/ printf("Pleaseguessamagicnumber:"); scanf("%d",&guess);

if(guess>magic) {printf("Wrong!Toohigh!\n"); }

elseif(guess<magic) {printf("Wrong!Toolow!\n"); }

else

{ printf("Right!\n"); printf("Thenumberis:%d\n",magic); }}例5.4只猜1次#include<stdlib.h>#include<stdio.h>main(){

intmagic;

intguess;

int

counter;/*記錄人猜次數(shù)的計(jì)數(shù)器變量*/ magic=rand()%100+1;

counter=0;/*計(jì)數(shù)器變量count初始化為0*/

do{ printf("Pleaseguessamagicnumber:"); scanf("%d",&guess);

counter++;/*計(jì)數(shù)器變量count加1*/

if(guess>magic) printf("Wrong!Toohigh!\n");

elseif(guess<magic) printf("Wrong!Toolow!\n");elseprintf("Right!\n");

}while

(guess!=magic);

printf("counter=%d\n",counter);}直到猜對(duì)為止例6.6猜數(shù)游戲用到的庫函數(shù)每次運(yùn)行程序時(shí)計(jì)算機(jī)所“想”的數(shù)都是一樣的,這是什么原因呢?函數(shù)rand()產(chǎn)生的只是偽隨機(jī)數(shù)隨機(jī)函數(shù)srand為函數(shù)rand()設(shè)置隨機(jī)數(shù)種子來實(shí)現(xiàn)對(duì)函數(shù)rand所產(chǎn)生的偽隨機(jī)數(shù)的“隨機(jī)化”通過輸入隨機(jī)數(shù)種子,產(chǎn)生[0,100]之間的隨機(jī)數(shù)scanf("%u",&seed);srand(seed);magic=rand()%100+1;#include<stdlib.h>#include<stdio.h>main(){

intmagic;

intguess;

int

counter;/*記錄人猜次數(shù)的計(jì)數(shù)器變量*/unsignedint

seed;

printf("Pleaseenterseed:"); scanf("%u",&seed); srand(seed); magic=rand()%100+1; counter=0;/*計(jì)數(shù)器變量count初始化為0*/

do{ printf("Pleaseguessamagicnumber:"); scanf("%d",&guess); counter++;/*計(jì)數(shù)器變量count加1*/

if(guess>magic) printf("Wrong!Toohigh!\n");

elseif(guess<magic) printf("Wrong!Toolow!\n");elseprintf("Right!\n");

}while

(guess!=magic); printf("counter=%d\n",counter);}直到猜對(duì)為止例6.6【例6.9】輸入n值,計(jì)算并輸出1!+2!+3!+…+n!

每次單獨(dú)計(jì)算累加項(xiàng)【例6.9】輸入n值,計(jì)算并輸出1!+2!+3!+…+n!

利用前項(xiàng)計(jì)算后項(xiàng)使用嵌套循環(huán)的注意事項(xiàng)使用復(fù)合語句,以保證邏輯上的正確性即用一對(duì)花括號(hào)將各層循環(huán)體語句括起來內(nèi)層和外層循環(huán)控制變量不能同名,以免造成混亂采用右縮進(jìn)格式書寫,以保證層次的清晰性

注意!編程實(shí)現(xiàn)簡單圖形的輸出1、編程輸出如下圖形:****************************************2、編程輸出九九乘法表3、任意輸入一個(gè)整數(shù),判斷是否為素?cái)?shù)4、任意輸入兩個(gè)正整數(shù),求最大公約數(shù)和最小公倍數(shù)break語句和continue語句對(duì)for、while、do-while循環(huán)進(jìn)行內(nèi)部手術(shù)Break:退出循環(huán)體或switchContinue:中斷此次循環(huán),開始下一次循環(huán)6.5流程的轉(zhuǎn)移控制

n???10Pleaseentern:10↙n=10Pleaseentern:-10↙Programisover!【例6.14】演示break與continue

-10#include<stdio.h>main(){

inti,n;

for(i=1;i<=5;i++) { printf("Pleaseentern:"); scanf("%d",&n);

if(n<0)

break; printf("n=%d\n",n); } printf("Programisover!\n");}n???10Pleaseentern:10↙n=10Pleaseentern:-10↙Pleaseentern:20↙n=20Pleaseentern:-20↙Pleaseentern:30↙n=30Programisover!【例6.14】演示break與continue

-1020-2030#include<stdio.h>main(){

inti,n;

for(i=1;i<=5;i++) { printf("Pleaseentern:"); scanf("%d",&n);

if(n<0)

continu

溫馨提示

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

評(píng)論

0/150

提交評(píng)論