




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章程序的控制結(jié)構(gòu)C語(yǔ)言大學(xué)實(shí)用教程1內(nèi)容提要算法的描述方法基本控制結(jié)構(gòu)基本控制語(yǔ)句常用算法,如累加、累乘、統(tǒng)計(jì)、遞推、迭代、窮舉等程序的基本版式結(jié)構(gòu)化程序設(shè)計(jì)的基本思想算法的概念
數(shù)據(jù)結(jié)構(gòu)+算法=程序算法:為解決一個(gè)具體問(wèn)題而采取的確定的有限的操作步驟,這里僅指計(jì)算機(jī)能執(zhí)行的算法算法特性:有窮性確定性
有效性
沒(méi)有輸入或有多個(gè)輸入
有一個(gè)或多個(gè)輸出
算法的分類
數(shù)值運(yùn)算算法:解決的是求數(shù)值解的問(wèn)題,例如用輾轉(zhuǎn)相除法求兩個(gè)數(shù)的最大公約數(shù)等非數(shù)值運(yùn)算算法:主要用于解決需要用分析推理、邏輯推理才能解決的問(wèn)題,例如人工智能中的許多問(wèn)題,查找、分類等問(wèn)題算法的表示方法自然語(yǔ)言表示傳統(tǒng)的流程圖表示N-S結(jié)構(gòu)化流程圖表示
偽代碼表示C程序結(jié)構(gòu)C程序源程序文件1源程序文件2源程序文件3編譯預(yù)處理命令全局變量聲明函數(shù)1函數(shù)n…函數(shù)首部函數(shù)體局部變量聲明執(zhí)行語(yǔ)句構(gòu)成程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)已經(jīng)證明,任何程序均可只用這三種結(jié)構(gòu)綜合描述只用這三種結(jié)構(gòu)編制的程序,叫結(jié)構(gòu)化程序程序必須符合結(jié)構(gòu)化規(guī)則結(jié)構(gòu)化程序設(shè)計(jì)的核心思想
采用順序、選擇和循環(huán)三種基本結(jié)構(gòu)作為程序設(shè)計(jì)的基本單元只有一個(gè)入口;只有一個(gè)出口;無(wú)死語(yǔ)句,即不存在永遠(yuǎn)都執(zhí)行不到的語(yǔ)句;無(wú)死循環(huán),即不存在永遠(yuǎn)都執(zhí)行不完的循環(huán)。采用“自頂向下、逐步求精”和模塊化的方法進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì)BANS圖傳統(tǒng)流程圖順序結(jié)構(gòu)BABN如果
成績(jī)<60
那么
通知補(bǔ)考否則
告知你考試成績(jī)AY條件PABNY條件P分支結(jié)構(gòu)(選擇結(jié)構(gòu))條件PA當(dāng)型循環(huán)直到型循環(huán)真假假條件PA假真循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)A真假假條件P循環(huán)結(jié)構(gòu)當(dāng)P為真A當(dāng)P為真A直到型循環(huán)條件PA假真循環(huán)結(jié)構(gòu)直到P為假A直到P為假A復(fù)合語(yǔ)句{}括住的若干條語(yǔ)句構(gòu)成一個(gè)復(fù)合語(yǔ)句語(yǔ)句塊內(nèi)可以定義變量變量?jī)H在定義它的復(fù)合語(yǔ)句內(nèi)有效變量必須在復(fù)合語(yǔ)句的開頭定義復(fù)合語(yǔ)句可以用在任何可以使用語(yǔ)句的地方if-else選擇結(jié)構(gòu)的一種最常用形式if(表達(dá)式)
語(yǔ)句1;
else
語(yǔ)句2;
語(yǔ)句3表達(dá)式值非0時(shí),執(zhí)行語(yǔ)句1,然后語(yǔ)句3;
表達(dá)式值為0時(shí),執(zhí)行語(yǔ)句2,然后語(yǔ)句3else部分可以沒(méi)有。if(表達(dá)式)
語(yǔ)句1;
語(yǔ)句3當(dāng)表達(dá)式值為0時(shí),直接執(zhí)行語(yǔ)句3if-else嵌套使用時(shí),注意else和誰(shuí)配對(duì)的問(wèn)題else-ifif的一種擴(kuò)展形式if(表達(dá)式)
語(yǔ)句1;
elseif(表達(dá)式)
語(yǔ)句2;
elseif(表達(dá)式)
語(yǔ)句3;
…………
else
語(yǔ)句4;
語(yǔ)句5;else部分可以沒(méi)有現(xiàn)場(chǎng)編程完成例4.5體型判斷。按“體指數(shù)”對(duì)肥胖程度進(jìn)行劃分:體指數(shù)t=體重w/(身高h(yuǎn))2
(w單位為公斤,h單位為米)當(dāng)t<18時(shí),為低體重;當(dāng)t介于18和25之間時(shí),為正常體重;當(dāng)t介于25和27之間時(shí),為超重體重;當(dāng)t>=27時(shí),為肥胖。編程從鍵盤輸入你的身高h(yuǎn)和體重w,根據(jù)給定公式計(jì)算體指數(shù)t,然后判斷你的體重屬于何種類型。用3種方法編程:算法1:用不帶else子句的if語(yǔ)句編程算法2:用在if子句中嵌入if語(yǔ)句的形式編程算法3:用在else子句中嵌入if語(yǔ)句的形式編程#include<stdio.h>main(){ floath,w,t; printf("Pleaseenterh,w:"); scanf("%f,%f",&h,&w); t=w/(h*h); if(t<18) { printf("t=%f\tLowerweight!\n",t); } if(t>=18&&t<25) { printf("t=%f\tStandardweight!\n",t); } if(t>=25&&t<27) { printf("t=%f\tHigherweight!\n",t); } if(t>=27) { printf("t=%f\tToofat!\n",t); }}#include<stdlib.h>#include<stdio.h>main(){ intmagic;/*計(jì)算機(jī)"想"的數(shù)*/ intguess;/*人猜的數(shù)*/ magic=rand();/*通過(guò)調(diào)用隨機(jī)函數(shù)任意"想"一個(gè)數(shù)magic*/
printf("Pleaseguessamagicnumber:"); scanf("%d",&guess);/*輸入人猜的數(shù)guess*/ if(guess>magic)/*如果guess大于magic,則提示"錯(cuò)誤!太大!"*/ {printf("Wrong!Toohigh!\n"); } elseif(guess<magic)/*如果guess小于magic,則提示"錯(cuò)誤!太小!"*/ {printf("Wrong!Toolow!\n"); } else/*如果guess等于magic,則提示"正確",并打印這個(gè)數(shù)*/ { printf("Right!\n"); printf("Thenumberis:%d\n",magic); }}switch多路選擇switch(表達(dá)式){
case
常數(shù)1:
語(yǔ)句序列1;
case
常數(shù)2:
語(yǔ)句序列2;
…………
default:
語(yǔ)句序列3;
}default可以沒(méi)有,但最好不省略不要忘記break現(xiàn)場(chǎng)編程完成計(jì)算器程序……例4.8編程設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器程序,要求根據(jù)用戶從鍵盤輸入的表達(dá)式:操作數(shù)1運(yùn)算符op操作數(shù)2然后,計(jì)算表達(dá)式的值,指定的運(yùn)算符為加(+)、減(-)、乘(*)、除(/)#include<stdio.h>main(){ intdata1,data2;/*定義兩個(gè)操作符*/ charop;/*定義運(yùn)算符*/
printf("Pleaseentertheexpression:"); scanf("%d%c%d",&data1,&op,&data2);/*輸入運(yùn)算表達(dá)式*/ switch(op)/*根據(jù)輸入的運(yùn)算符確定要執(zhí)行的運(yùn)算*/ { case'+':/*處理加法*/ printf("%d+%d=%d\n",data1,data2,data1+data2); break; case'-':/*處理減法*/ printf("%d-%d=%d\n",data1,data2,data1-data2); break; case'*':/*處理乘法*/ printf("%d*%d=%d\n",data1,data2,data1*data2); break; case'/':/*處理除法*/ if(data2==0)/*為避免出現(xiàn)溢出錯(cuò)誤,檢驗(yàn)除數(shù)是否為0*/ printf("Divisionbyzero!\n"); else printf("%d/%d=%d\n",data1,data2,data1/data2); break; default: printf("Unknownoperator!\n"); }}#include<stdio.h>main(){ intscore,mark; printf("Pleaseenterscore:"); scanf("%d",&score); mark=score/10;/*采用整除方法,將mark取值壓縮到有限的取值范圍內(nèi)*/switch(mark){case10:case9: printf("%d--A\n",score); break; case8: printf("%d--B\n",score); break; case7: printf("%d--C\n",score); break;case6: printf("%d--D\n",score); break;case5:case4:case3:case2:case1:case0: printf("%d--E\n",score); break; default: printf("Inputerror!\n");/*處理非法數(shù)據(jù)*/
} }循環(huán)——while,forwhile(表達(dá)式)
{
語(yǔ)句;}for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
{
語(yǔ)句;}whilewhile(表達(dá)式)
{
語(yǔ)句;}只要表達(dá)式的值為非0,就重復(fù)執(zhí)行語(yǔ)句,直到表達(dá)式值為0時(shí)止forfor(表達(dá)式1;表達(dá)式2;表達(dá)式3)
{
語(yǔ)句;}首先執(zhí)行表達(dá)式1。如果表達(dá)式2的值為非0,就重復(fù)執(zhí)行語(yǔ)句和表達(dá)式3,直到表達(dá)式2的值為0時(shí)止相當(dāng)于:
表達(dá)式1;
while(表達(dá)式2){
語(yǔ)句;
表達(dá)式3;
}表達(dá)式1和表達(dá)式3可以沒(méi)有或者是用逗號(hào)分隔的多個(gè)表達(dá)式的組合。但最好不要有太多的表達(dá)式組合注意在for和while語(yǔ)句之后一般沒(méi)有分號(hào)有分號(hào)表示循環(huán)體就是分號(hào)之前的內(nèi)容(空循環(huán)體)while(i<100);
i++;for(i=0;i<100;i++);
printf("%d",i);for通常有一個(gè)循環(huán)變量控制循環(huán)的次數(shù),不要在循環(huán)體內(nèi)改變這個(gè)變量do-whiledo
{
語(yǔ)句;
}while(表達(dá)式);首先執(zhí)行語(yǔ)句,然后判斷表達(dá)式的值。如果表達(dá)式為0,繼續(xù)向下執(zhí)行,否則,再次執(zhí)行語(yǔ)句,再次判斷表達(dá)式的值語(yǔ)句會(huì)被至少執(zhí)行一次條件PA當(dāng)型循環(huán)直到循環(huán)真假假條件PA假真假條件P條件PA假當(dāng)循環(huán)條件第一次就為假時(shí)選擇三種循環(huán)的一般原則如果循環(huán)次數(shù)已知,用for如果循環(huán)次數(shù)未知,用while如果循環(huán)體至少要執(zhí)行一次,用do-while這只是“一般”原則,不是“原則”現(xiàn)場(chǎng)編程完成例4.6,例4.9例4.6:猜數(shù)游戲:先由計(jì)算機(jī)“想”一個(gè)數(shù)請(qǐng)人猜,如果人猜對(duì)了,則計(jì)算機(jī)給出提示:“Right!”,否則提示:“Wrong!”,并告訴人所猜的數(shù)是大還是小。例4.9:先由計(jì)算機(jī)“想”一個(gè)1到100之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,則結(jié)束游戲,否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對(duì)為止。計(jì)算機(jī)記錄人猜的次數(shù),以此來(lái)反映猜數(shù)者“猜”的水平。猜數(shù)游戲用到的庫(kù)函數(shù)隨機(jī)函數(shù)rand()#include<stdlib.h>RAND_MAX在stdlib.h中定義,不大于雙字節(jié)整數(shù)的最大值32767產(chǎn)生[0,RAND_MAX]之間的隨機(jī)數(shù)magic=rand();產(chǎn)生[0,b-1]之間的隨機(jī)數(shù)magic=rand()%b;產(chǎn)生[a,a+b-1]之間的隨機(jī)數(shù)magic=rand()%b+a;現(xiàn)場(chǎng)編程完成例4.6,發(fā)現(xiàn)問(wèn)題猜數(shù)游戲用到的庫(kù)函數(shù)隨機(jī)函數(shù)srand為函數(shù)rand()設(shè)置隨機(jī)數(shù)種子來(lái)實(shí)現(xiàn)對(duì)函數(shù)rand所產(chǎn)生的偽隨機(jī)數(shù)的“隨機(jī)化”通過(guò)鍵入隨機(jī)數(shù)種子,產(chǎn)生[1,100]之間的隨機(jī)數(shù)scanf("%u",&seed);srand(seed);magic=rand()%100+1;猜數(shù)游戲用到的庫(kù)函數(shù)隨機(jī)函數(shù)srand為函數(shù)rand()設(shè)置隨機(jī)數(shù)種子來(lái)實(shí)現(xiàn)對(duì)函數(shù)rand所產(chǎn)生的偽隨機(jī)數(shù)的“隨機(jī)化”使用計(jì)算機(jī)讀取其時(shí)鐘值并把該值自動(dòng)設(shè)置為隨機(jī)數(shù)種子,產(chǎn)生[1,100]之間的隨機(jī)數(shù)函數(shù)time()返回以秒計(jì)算的當(dāng)前時(shí)間值,該值被轉(zhuǎn)換為無(wú)符號(hào)整數(shù)并用作隨機(jī)數(shù)發(fā)生器的種子#include<time.h>srand(time(NULL));magic=rand()%100+1;死循環(huán)永遠(yuǎn)不會(huì)退出的循環(huán)為死循環(huán)for(;;){}while(1){}do
{}while(1)一般情況下,要極力避免死循環(huán)絕大多數(shù)程序不需要死循環(huán)。如果出現(xiàn),往往都是bug時(shí)間過(guò)長(zhǎng)的循環(huán)會(huì)造成“假死”效果,也要考慮解決現(xiàn)場(chǎng)編程完成例4.11國(guó)王的許諾。相傳國(guó)際象棋是古印度舍罕王的宰相達(dá)依爾發(fā)明的。舍罕王十分喜歡象棋,決定讓宰相自己選擇何種賞賜。位聰明的宰相指著8×8共64格的象棋盤說(shuō):陛下,請(qǐng)您賞給我一些麥子吧,就在棋盤的第一個(gè)格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盤上的64個(gè)格子,我就感恩不盡了。舍罕王讓人扛來(lái)一袋麥子,他要兌現(xiàn)他的許諾。
國(guó)王能兌現(xiàn)他的許諾嗎?試編程計(jì)算舍罕王共要多少麥子賞賜他的宰相,這些麥子合多少立方米?(已知1立方米麥子約1.42e8粒)
總粒數(shù)為:sum=1+2+22+23+…+263
方法1#defineCONST1.42e8#include<stdio.h>#include<math.h>main(){intn;doubleterm,sum=0;/*累加求和變量賦初值*/for(n=1;n<=64;n++){term=pow(2,n-1);/*根據(jù)累加項(xiàng)的規(guī)律計(jì)算累加項(xiàng)*/sum=sum+term;/*作累加運(yùn)算*/}printf("sum=%e\n",sum);/*打印總麥粒數(shù)*/printf("volum=%e\n",sum/CONST);/*打印折合的總麥粒體積數(shù)*/}方法2#defineCONST1.42e8/*定義符號(hào)常量CONST值為1.42e8*/#include<stdio.h>main(){
intn;
doubleterm=1,sum=1;/*累乘求積、累加求和變量賦初值*/
for(n=2;n<=64;n++){term=term*2;/*根據(jù)后項(xiàng)總是前項(xiàng)的2倍計(jì)算累加項(xiàng)*/sum=sum+term;/*作累加運(yùn)算*/}
printf("sum=%e\n",sum);/*打印總麥粒數(shù)*/
printf("volum=%e\n",sum/CONST);/*打印折合的總麥粒體積數(shù)*/}
循環(huán)的嵌套使用嵌套的循環(huán)體時(shí),應(yīng)注意以下問(wèn)題
在嵌套的各層循環(huán)體中,使用復(fù)合語(yǔ)句(即用一對(duì)大花括號(hào)將循環(huán)體語(yǔ)句括起來(lái))保證邏輯上的正確性
內(nèi)層和外層循環(huán)控制變量不應(yīng)同名,以免造成混亂
嵌套的循環(huán)最好采用右縮進(jìn)格式書寫,以保證層次的清晰性
循環(huán)嵌套不能交叉,即在一個(gè)循環(huán)體內(nèi)必須完整的包含著另一個(gè)循環(huán)
三種循環(huán)可互相嵌套,層數(shù)不限外層循環(huán)可包含兩個(gè)以上內(nèi)循環(huán),但不能相互交叉嵌套循環(huán)的執(zhí)行流程嵌套循環(huán)的跳轉(zhuǎn)(1)while(){……while(){……}…...}(2)do{……do{……}while();…...}while();(3)while(){……do{……}while();…….}(4)for(;;){……do{……}while();……while(){……}…...}內(nèi)循環(huán)外循環(huán)內(nèi)循環(huán)禁止:從外層跳入內(nèi)層跳入同層的另一循環(huán)向上跳轉(zhuǎn)閱讀以下程序,寫出運(yùn)行結(jié)果了解循環(huán)嵌套的工作流程#include<stdio.h>voidmain(){inti,j;for(i=1;i<=3;i++){for(j=1;j<=5;j=j+2)
printf("%3d%3d\n",i,j);
printf("%3d%3d\n",i,j);
}
printf("%3d%3d\n",i,j);}
111315
17
212325
27
313335
37
47例判斷n是否素?cái)?shù)讀入nk=ni=2當(dāng)ikn被i整除真假用break結(jié)束循環(huán)i=i+1ik+1真假輸出:n”是素?cái)?shù)”輸出:n”不是素?cái)?shù)”第一種設(shè)想第二種設(shè)想第三種設(shè)想第四種設(shè)想例4.19,20輸入一個(gè)整數(shù),判斷它是否是素?cái)?shù)
方法1#include<math.h>main(){
intm,i,k;
printf("Pleaseenteranumber:");
scanf("%d",&m); k=sqrt(m);
for(i=2;i<=k;i++) {
if(m%i==0) {
printf("No!\n");
gotoend; } }
printf("Yes!\n");end:
printf("Programisover!\n");}Pleaseenteranumber:
6
Programisover!No!方法1#include<math.h>main(){
intm,i,k;
printf("Pleaseenteranumber:");
scanf("%d",&m); k=sqrt(m);
for(i=2;i<=k;i++) {
if(m%i==0) {
printf("No!\n");
gotoend; } }
printf("Yes!\n");end:
printf("Programisover!\n");}Pleaseenteranumber:
5
Programisover!Yes!方法2#include<math.h>main(){
intm,i,k;
printf("Pleaseenteranumber:");
scanf("%d",&m); k=sqrt(m);
for(i=2;i<=k;i++){
if(m%i==0)
break; }
if(i>k)
printf("Yes!\n");
else
printf("No!\n");
printf("Programisover!\n");}Pleaseenteranumber:
6
Programisover!No!方法3#include<math.h>main(){
intm,i,k,flag=1;/*標(biāo)志變量flag初值置為1*/
printf("Pleaseenteranumber:");
scanf("%d",&m); k=sqrt(m);
for(i=2;i<=k&&flag;i++) {
if(m%i==0)flag=0; }
if(flag)
printf("Yes!\n");
else
printf("No!\n");
printf("Programisover!\n");}這個(gè)程序是做什么的?#include<math.h>main(){
intm,i,k,flag=1;/*標(biāo)志變量flag初值置為1*/
printf("Pleaseenteranumber:");
scanf("%d",&m); k=sqrt(m);
for(i=2;i<=m-1;i++) {
if(m%i==0)flag=0;
printf("%d\n",i);
}
if(flag)
printf("Nodivisor!Itisaprimenumber.\n");
printf("Programisover!\n");}現(xiàn)場(chǎng)編程完成例4.14編程輸出如下形式的乘法九九表
#include<stdio.h>main(){
intm,n;
for(m=1;m<10;m++)
printf("%4d",m);/*打印表頭*/
printf("\n");
for(m=1;m<10;m++)
printf("-");
printf("\n");
for(m=1;m<10;m++) {
for(n=1;n<10;n++) {
printf("%4d",m*n); }
printf("\n"); }}現(xiàn)場(chǎng)編程完成例4.15將上例輸出格式改成如下的下三角格式打印
#include<stdio.h>main(){
intm,n;
for(m=1;m<10;m++)
printf("%4d",m);/*打印表頭*/
printf("\n");
for(m=1;m<10;m++)
printf("-");
printf("\n");
for(m=1;m<10;m++) {
for(n=1;n<=m;n++) {
printf("%4d",m*n); }
printf("\n"); }}for(i=1;i<4*m;i++)
printf(“");
現(xiàn)場(chǎng)編程完成例4.16馬克思手稿中有一道趣味數(shù)學(xué)題:有30個(gè)人,其中有男人、女人和小孩,在一家飯館里吃飯共花了50先令,每個(gè)男人各花3先令,每個(gè)女人各花2先令,每個(gè)小孩各花1先令,問(wèn)男人、女人和小孩各有幾人?
解方程組窮舉法方法1:采用三重循環(huán)窮舉x,y,z的全部可能的組合
#include<stdio.h>main(){
intx,y,z;
printf("Man\tWomen\tChildern\n");
for(x=0;x<=30;x++)
for(y=0;y<=30;y++)
for(z=0;z<=30;z++)
if(x+y+z==30&&3*x+2*y+z==50)
printf("%3d\t%5d\t%8d\n",x,y,z);}
方法2:改進(jìn)算法
#include<stdio.h>
main(){
intx,y,z;
printf("Man\tWomen\tChildern\n");
for(x=0;x<=16;x++)
for(y=0;y<=25;y++){z=30–x-y;
if(3*x+2*y+z==50)printf("%3d\t%5d\t%8d\n",x,y,z);}}
流程的轉(zhuǎn)移控制break語(yǔ)句continue語(yǔ)句goto語(yǔ)句return語(yǔ)句標(biāo)準(zhǔn)庫(kù)函數(shù)exit()
break和continue對(duì)for、while、do-while循環(huán)進(jìn)行內(nèi)部手術(shù)break,退出循環(huán)continue,中斷本次循環(huán)體的執(zhí)行,開始下一次break和continue少用為妙break和continue假假真真break表達(dá)式1表達(dá)式2循環(huán)語(yǔ)句的下一條語(yǔ)句循環(huán)語(yǔ)句的下一條語(yǔ)句假假真真
contiue表達(dá)式1表達(dá)式2continue
break語(yǔ)句功能:在循環(huán)語(yǔ)句和switch語(yǔ)句中,終止并跳出循環(huán)體或開關(guān)體說(shuō)明:break只能終止并跳出最近一層的結(jié)構(gòu)break不能用于循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其它語(yǔ)句之中
expr……break;……假(0)真(非0)whiledo……break;…...expr假(0)真(非0)whileexpr2……break;…...假(0)真(非0)forexpr1expr3switchexpr語(yǔ)句組1break;語(yǔ)句組2break;語(yǔ)句組nbreak;語(yǔ)句組break;…...const1const2constndefaultcase例break舉例:輸出圓面積,面積大于100時(shí)停止#definePI3.14159#include<stdio.h>voidmain(){intr;floatarea;for(r=1;r<=10;r++){area=PI*r*r;if(area>100) break;printf("r=%d,area=%.2f\n",r,area);}}例break舉例:小寫字母轉(zhuǎn)換成大寫字母,直至輸入非字母字符#include<stdio.h>voidmain(){inti,j;charc;while(1){c=getchar(); if(c>='a'&&c<='z') putchar(c-'a'+'A'); else break;}}getch()getche()#include<conio.h>continue語(yǔ)句功能:結(jié)束本次循環(huán),跳過(guò)循環(huán)體中尚未執(zhí)行的語(yǔ)句,進(jìn)行下一次是否執(zhí)行循環(huán)體的判斷僅用于循環(huán)語(yǔ)句中expr……continue;……假(0)真(非0)while真(非0)do……continue;…...expr假(0)whileexpr2……continue;…...假(0)真(非0)forexpr1expr3voidmain(){intn;for(n=100;n<=200;n++) {if(n%3==0)continue;printf(“%d”,n); }}Continue用法:
將100~200的不能被3整除的數(shù)輸出例求輸入的十個(gè)整數(shù)中正數(shù)的個(gè)數(shù)及其平均值#include<stdio.h>voidmain(){inti,num=0,a;floatsum=0;for(i=0;i<10;i++){scanf("%d",&a); if(a<=0)continue; num++; sum+=a;}printf("%dplusinteger'ssum:%6.0f\n",num,sum);printf("Meanvalue:%6.2f\n",sum/num);}標(biāo)號(hào)舉例error:goto舉例gotoerror;一般形式goto語(yǔ)句標(biāo)號(hào);……
語(yǔ)句標(biāo)號(hào):……或語(yǔ)句標(biāo)號(hào):…………goto語(yǔ)句標(biāo)號(hào);goto與標(biāo)號(hào)(label)exit()函數(shù)exit(0)作用是終止整個(gè)程序的執(zhí)行,強(qiáng)制返回操作系統(tǒng)調(diào)用該函數(shù)需要嵌入頭文件<stdlib.h>Dijkstra和
gotoE.W.Dijkstra,生于1930年,卒于2002年8月6日軟件體系結(jié)構(gòu),結(jié)構(gòu)化程序設(shè)計(jì),……Dijkstra和
gotoDijkstra早在1968年就指出:“Gotoconsideredharmful”
,“Ibecameconvincedthatthegotostatementshouldbeabolishedfromall"higherlevel"programminglanguages.”“Thegotostatement…istoomuchaninvitationtomakeamessofone'sprogram.”糟糕的gotoSTART_LOOP:if(fStatusOk){
if(fDataAvaiable){i=10;
gotoMID_LOOP;}else{
gotoEND_LOOP;}}else{
for(i=0;i<100;i++){MID_LOOP://lotsofcodehere……}
gotoSTART_LOOP;}END_LOOP:糟糕的gotoSTART_LOOP:if(fStatusOk){
if(fDataAvaiable){i=10;
gotoMID_LOOP;}else{
gotoEND_LOOP;}}else{
for(i
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆浙江省浙南聯(lián)盟化學(xué)高一下期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 民工衣服庫(kù)存管理辦法
- 晚會(huì)捐贈(zèng)收入管理辦法
- 冬季水管防護(hù)管理辦法
- 現(xiàn)代語(yǔ)文教育數(shù)字化資源整合平臺(tái)建設(shè)研究
- 國(guó)債承銷工作管理辦法
- 口服制劑溶出曲線比對(duì)-洞察及研究
- 噴施KH2PO4對(duì)小麥灌漿期高溫脅迫抑制作用的研究
- 多元種植模式下玉米大豆協(xié)同增產(chǎn)技術(shù)研究
- 建設(shè)工程安全事故分類
- 護(hù)理警示教育培訓(xùn)課件
- 2025年低壓電工證考試試題及答案
- 2025至2030中國(guó)風(fēng)電設(shè)備及零部件行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 實(shí)踐制作“龍骨水車”模型課件-滬科版八年級(jí)全一冊(cè)物理
- 供應(yīng)鏈計(jì)劃員考試題庫(kù)
- 2025年湖北省中考語(yǔ)文試卷真題(含標(biāo)準(zhǔn)答案)
- 兒童舞蹈課件模板
- 2025新疆新型儲(chǔ)能發(fā)展概述與展望報(bào)告-國(guó)網(wǎng)新疆經(jīng)研院
- 2025年高考四川卷物理高考真題+解析(參考版)
- 輕型卒中臨床診療中國(guó)專家共識(shí)(2024版)解讀
- 鐵路換枕合同協(xié)議書
評(píng)論
0/150
提交評(píng)論