C語言程序設計-循環(huán)例子課件_第1頁
C語言程序設計-循環(huán)例子課件_第2頁
C語言程序設計-循環(huán)例子課件_第3頁
C語言程序設計-循環(huán)例子課件_第4頁
C語言程序設計-循環(huán)例子課件_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設計

—基礎篇第7章簡單程序設計之二2023/10/6C語言程序設計

—基礎篇第7章簡單程序設計1本章內(nèi)容提要多分支選擇結(jié)構(gòu)—switch語句循環(huán)嵌套break語句和continue語句

程序舉例

2023/10/6本章內(nèi)容提要多分支選擇結(jié)構(gòu)—switch語句2023/10/2教學目標在三種基本結(jié)構(gòu)的基礎上,結(jié)合本章介紹流程控制的其他幾個語句:switch語句、break語句和continue語句及循環(huán)的嵌套,實現(xiàn)復雜的算法,設計出結(jié)構(gòu)清晰、功能強大的程序,對C語言程序開發(fā)設計有比較深刻的認識。2023/10/6教學目標在三種基本結(jié)構(gòu)的基礎上,結(jié)合本章介紹流程控制的其他幾37.1多分支選擇結(jié)構(gòu)程序設計1、語句形式:

switch(表達式){ case常量1:語句1;

case常量2:語句2;

case常量3:語句3;.......

case常量n:語句n;default:語句n+1;}根據(jù)表達式的不同值,選擇不同的程序分支,又稱開關語句。數(shù)值型或字符型常量表達式的值必須互不相同,否則執(zhí)行時將出現(xiàn)矛盾,即同一個開關值,將對應多種執(zhí)行方案。千萬不能接(;)號2023/10/67.1多分支選擇結(jié)構(gòu)程序設計1、語句形式:switc42、語句執(zhí)行流程:指語句的最后一條是否為break簡單語句或復合語句breakbreak有無break有無有計算表達式常量1常量2常量n=語句1…===語句2語句n其它=語句n+1無值case語句出現(xiàn)的次序并不影響執(zhí)行結(jié)果。2023/10/62、語句執(zhí)行流程:指語句的最后一條是否為break簡單語句或5voidmain(){intn;printf("請輸入成績:");

scanf("%d",&n);switch((int)(n/10)){case10:printf("成績%d的等級為優(yōu)秀\n",n);case9:printf("成績%d的等級為優(yōu)秀\n",n);case8:printf("成績%d的等級為良好\n",n);case7:printf("成績%d的等級為中等\n",n);case6:printf("成績%d的等級為及格\n",n);default:printf("成績%d的等級為不及格\n",n);}}

【例7.1】編寫程序,對學生成績進行等級評定。將成績分為幾個等級:0~59分為不及格,60~69分為及格,70~79分為中等,80~89分為良好,90~100分為優(yōu)秀。要求輸入一個成績,輸出其對應的等級。

請輸入成績:78↙成績78的等級為中等成績78的等級為及格成績78的等級為不及格

出錯啦???2023/10/6voidmain()【例7.1】編寫程序,對學生成績進行等6在“switch”語句中,“case常量表達式”只相當于一個語句標號,表達式的值和某標號相等則轉(zhuǎn)向該標號執(zhí)行,但不能在執(zhí)行完該標號的語句后自動跳出整個switch語句,因此會繼續(xù)執(zhí)行所有后面語句的情況。為此,C語言提供了一種break語句,其功能是可以跳出它所在的switch語句。2023/10/6在“switch”語句中,“case常量表達式”只相當于一7將上面的例7.1修改如下:voidmain(){intn;printf("請輸入成績:");

scanf("%d",&n);switch((int)(n/10)){case10:printf("成績%d的等級為優(yōu)秀\n",n);break;case9:printf("成績%d的等級為優(yōu)秀\n",n);break;case8:printf("成績%d的等級為良好\n",n);break;case7:printf("成績%d的等級為中等\n",n);break;case6:printf("成績%d的等級為及格\n",n);break;default:printf("成績%d的等級為不及格\n",n);}}請輸入成績:78↙成績78的等級為中等2023/10/6將上面的例7.1修改如下:voidmain()請輸入成績:8使用switch語句時還應注意以下幾點

switch后面圓括號內(nèi)表達式的值和case語句中常量表達式的值,都必須是整型的、枚舉型的或字符型的,不允許是浮點型的。在case后的各常量表達式的值不能相同。每個case子句既可以是一條語句,也可以是多條語句。當是多條語句時,不需要用花括號括起來。各個case子句和default子句的先后順序可以變動,而不會影響程序執(zhí)行結(jié)果。default子句可以省略不用。多個case的后面可以共用一組執(zhí)行語句。如例7.1中等級為優(yōu)秀的判斷程序可改為:2023/10/6使用switch語句時還應注意以下幾點switch后面圓括9switch((int)(n/10)){case10:case9:printf("成績%d的等級為優(yōu)秀\n");break;

…}2023/10/6switch((int)(n/10))2023/10/6107.2嵌套循環(huán)結(jié)構(gòu)程序設計

在一個循環(huán)內(nèi)又完整地包含另一個循環(huán),稱為循環(huán)的嵌套。for語句可以與while語句、do-while語句相互嵌套,構(gòu)成多重循環(huán),例如:

2023/10/67.2嵌套循環(huán)結(jié)構(gòu)程序設計在一個循環(huán)內(nèi)又完整地包含另一11(1)

(2)for() do{{… …while()for(){…}{…}

…} }while();(3)

(4)while()for(){ {

…for()for(){…}{

…}}

}2023/10/6(1) 12for(i=1;i<=9;i++){

打印第i行;}【例7.2】打印乘法小九九表。

使用一個循環(huán)9次的循環(huán)語句,每次循環(huán)打印一行:打印第i行,循環(huán)i次,每次循環(huán)打印一個表達式:for(j=1;j<=i;j++){

打印第j個表達式;}打印完一行后換行2023/10/6for(i=1;i<=9;i++)【例7.2】打印乘法小九13#include<stdio.h>voidmain(){ inti,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) printf("%d*%d=%-3d",i,j,i*j); printf("\n"); }}程序運行情況如下:1*1=12*1=22*2=43*1=33*2=63*3=94*1=44*2=84*3=124*4=165*1=55*2=105*3=155*4=205*5=256*1=66*2=126*3=186*4=246*5=306*6=367*1=77*2=147*3=217*4=287*5=357*6=427*7=498*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=649*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=812023/10/6#include<stdio.h>程序運行情況如下:20214【例7.3】百雞問題。

#include"stdio.h"voidmain(){intx,y,z;

for(x=1;x<=20;x++)/*用嵌套的for循環(huán)依次設公雞有1,2,…,20只*/

for(y=1;y<=33;y++)/*設母雞有1,2,…,33只*/

for(z=3;z<100;z+=3)/*設小雞有3,6,…,99只*/

if(x*5+y*3+z/3==100&&x+y+z==100)printf(“公雞%d只、母雞%d只、小雞%d只\n",x,y,z);}程序運行結(jié)果如下:公雞4只、母雞18只、小雞78只公雞8只、母雞11只、小雞81只公雞12只、母雞4只、小雞84只

2023/10/6【例7.3】百雞問題。#include"stdio.h"157.3break語句和continue語句在循環(huán)中的應用

break語句只能用在switch語句或循環(huán)語句中,其作用是跳出switch語句或跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。由于break語句的轉(zhuǎn)移方向是明確的,所以不需要語句標號與之配合。break語句的一般形式為break;注意:break語句對if-else的條件語句不起作用。在多層循環(huán)中,一個break語句只向外跳一層。使用break語句可以使循環(huán)語句有多個出口

2023/10/67.3break語句和continue語句在循環(huán)中的應用16continue語句continue語句只能用在循環(huán)體中,其一般格式是:continue;其語義是:結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue語句之后的語句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。應注意的是,本語句只結(jié)束本層本次的循環(huán),并不跳出循環(huán)。continue語句只用在for、while、do-while等循環(huán)體中,常與if條件語句一起使用,用來加速循環(huán)。1)while(表達式1){……if(表達式2)break;……}2)

while(表達式1){……if(表達式2)continue;……}2023/10/6continue語句continue語句只能用在循環(huán)體中,172023/10/62023/10/618【例7.4】輸出100以內(nèi)能被7整除的數(shù)。

#include"stdio.h"voidmain(){intn;for(n=1;n<=100;n++){if(n%7!=0)continue;printf("%d",n);}printf("\n");}程序運行情況如下:7142128354249566370778491982023/10/6【例7.4】輸出100以內(nèi)能被7整除的數(shù)。#include19【例7.5】判斷m是否素數(shù)#include<math.h>#include<stdio.h>intmain(){ intm,i,k; scanf("%d",&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) printf("%disaprimenumber\n",m); else printf("%disnotaprimenumber\n",m); return(0);}2023/10/6【例7.5】判斷m是否素數(shù)#include<math.h>207.4程序舉例

【例7.6】模擬自動飲料機

#include"stdio.h"voidmain(){intbutton;printf("=====自動飲料機=====\n");printf("1.可口可樂\n");printf("2.雪碧\n");printf("3.百事可樂\n");printf("4.芬達\n");printf("5.非??蓸穃n");printf("請按1~5鍵選擇飲料:\n");scanf("%d",&button);2023/10/67.4程序舉例

【例7.6】模擬自動飲料機#incl21switch(button){case1:printf("\n你獲得一聽可口可樂\n");break;case2:printf("\n你獲得一聽雪碧\n");break;case3:printf("\n你獲得一聽百事可樂\n");break;case4:printf("\n你獲得一聽芬達\n");break;case5:printf("\n你獲得一聽非??蓸穃n");break;default:printf("\n非法操作!\n");}}程序運行情況如下:=====自動飲料機=====1.可口可樂2.雪碧3.百事可樂4.芬達5.非??蓸氛埌?~5鍵選擇飲料:3↙你獲得一聽百事可樂2023/10/6switch(button)程序運行情況如下:2023/1022【例7.10】數(shù)組元素排序——冒泡排序(以升序為例)

排序過程:比較第一個數(shù)與第二個數(shù),若為逆序a[0]>a[1],則交換;然后比較第二個數(shù)與第三個數(shù);依次類推,直至第n-1個數(shù)和第n個數(shù)比較為止——第一趟冒泡排序,結(jié)果最大的數(shù)被安置在最后一個元素位置上對前n-1個數(shù)進行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在第n-1個元素位置重復上述過程,共經(jīng)過n-1趟冒泡排序后,排序結(jié)束2023/10/6【例7.10】數(shù)組元素排序——冒泡排序(以升序為例)排序過23例3849657613273097第一趟38496513273076第二趟384913273065第三趟3813273049第四趟13273038第五趟132730第六趟4938659776132730

初始關鍵字n=8384976971397279730971376767627301365276530651313494930492738273830381327第七趟2023/10/6例384965761324輸入n個數(shù)給a[0]到a[n-1]for(i=0;i<n-1;i++)for(j=0;j<n-i-1;j++)a[j]>a[j+1]真假a[j]

a[j+1]輸出a[0]到a[n-1]#include<stdio.h>main(){inta[10],i,j,t;printf("Input10numbers:\n");

for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");

for(i=0;i<9;i++)for(j=0;j<9-i;j++)

if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}printf("Thesortednumbers:\n");

for(i=0;i<10;i++) printf("%d",a[i]);}2023/10/6輸入n個數(shù)給a[0]到

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論