




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 住宅認(rèn)購定金合同范本
- 倉儲(chǔ)保管填寫合同范本
- 2025年四川貨運(yùn)從業(yè)資格證考試的技巧
- 一房三賣買賣合同范本
- 停息掛賬律師委托合同范本
- 個(gè)人外匯貸款合同范本
- 助資合同范本
- 個(gè)人買房購房合同范本
- 公司稅貸合同范本
- 個(gè)人店面整體裝修合同范本
- 2025年湖南城建職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測(cè)試題庫及答案一套
- 教科版科學(xué)三下開學(xué)第一課《科學(xué)家這樣做-童第周》
- 2025年廣州市黃埔區(qū)文沖街招聘“村改居”社區(qū)治安聯(lián)防隊(duì)員36人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 國家電網(wǎng)新聞宣傳與企業(yè)文化管理專責(zé)考試題及答案
- 土建類專職安全生產(chǎn)管理人員練習(xí)題+參考答案
- 中國新能源汽車:2024年總結(jié)與2025年趨勢(shì)報(bào)告-電動(dòng)汽車觀察家
- 2024年江蘇省衛(wèi)生健康委員會(huì)所屬事業(yè)單位招聘筆試真題
- 廉潔知識(shí)培訓(xùn)課件
- 分布式光伏發(fā)電開發(fā)建設(shè)管理辦法2025
- 《科幻小說賞析與寫作》 課件 -第六章 “外星文明”的善意與惡行-《安德的游戲》
- 《我國的文化安全》課件
評(píng)論
0/150
提交評(píng)論