




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第四章C程序流程設(shè)計(jì)4.1C語句概述C語句:以“;”作分隔符,編譯后產(chǎn)生機(jī)器指令.C語句分類表達(dá)式語句:表達(dá)式加分號構(gòu)成。空語句:;程序控制語句(9種):if()~else~switchfor()~while()~do~while()continuebreakgotoreturn分支循環(huán)輔助控制如total=total+limit;a=3;func();printf(“Hello,world!\n”);第四章C程序流程設(shè)計(jì)4.1C語句概述空語句:;程序控復(fù)合語句:用{…}括起來的一組語句一般形式:
{[數(shù)據(jù)說明部分;]執(zhí)行語句部分;}說明:“}”后不加分號語法上和單一語句相同復(fù)合語句可嵌套復(fù)合語句:用{…}括起來的一組語句4.2
程序的三種基本結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計(jì)基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示,限制使用無條件轉(zhuǎn)移語句(goto)結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)成的程序叫~優(yōu)點(diǎn):結(jié)構(gòu)清晰,易讀,提高程序設(shè)計(jì)質(zhì)量和效率三種基本結(jié)構(gòu)順序結(jié)構(gòu)ABAB流程圖N-S圖4.2程序的三種基本結(jié)構(gòu)ABAB流程圖N-S圖PAB真假PBA真假選擇結(jié)構(gòu)kA1A2AiAnk=k2k=k1k=knk=ki......二分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)PAB真假PBA真假選擇結(jié)構(gòu)kA1A2AiAnk=k2k=k循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)PA假真當(dāng)P為真AAP真假A直到P為真注:A,B,A1….An可以是一個(gè)簡單語句,也可以是一個(gè)基本結(jié)構(gòu)循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)PA假真當(dāng)P為真AAP真假4.3選擇型程序設(shè)計(jì)if語句(條件選擇語句)if語句的三種形式形式一:格式:if(expression)statement執(zhí)行過程:exprstatement非0=0例:if(x>y)printf(“%d”,x);exprstatement1statement2非0=0形式二:格式:if(expression)statement1elsestatement2執(zhí)行過程:例:if(x>y)max=x;elsemax=y;4.3選擇型程序設(shè)計(jì)exprstatement非0=0例:形式三:格式:if(expr1)statement1elseif(expr2)statement2elseif(expr3)statement3…...[elsestatementn]expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0執(zhí)行過程:
例:if(salary>1000)index=0.4;elseif(salary>800)index=0.3;elseif(salary>600)index=0.2;elseif(salary>400)index=0.1;elseindex=0;形式三:if(expr1)st如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);說明:if后面的表達(dá)式類型任意語句可以是復(fù)合語句
if(x)if(x!=0)if(!x)if(x==0)例考慮下面程序的輸出結(jié)果:#include<stdio.h>intmain(){intx,y;scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;printf(“%d,%d\n”,x,y);return0;}CompileError!如:if(a==b&&x==y)printf(“a=#include<stdio.h>intmain(){intx,y;printf("Enteraninteger:");scanf("%d",&x);y=x;
if(y<0)y=-y;printf("\ninteger:%d--->absolutevalue:%d\n",x,y);return0;}例求一個(gè)數(shù)的絕對值運(yùn)行:Enteraninteger:-12integer:-12--->absolutevalue:12#include<stdio.h>例求一個(gè)數(shù)的絕對值運(yùn)#include<stdio.h>intmain(){inta,b;printf("Enterintegera:");scanf("%d",&a);printf("Enterintegerb:");scanf("%d",&b);
if(a==b)printf("a==b\n");elseprintf("a!=b\n");return0;}例輸入兩個(gè)數(shù)并判斷兩數(shù)相等否運(yùn)行:Enterintegera:12
Enterintegerb:12a==b運(yùn)行:Enterintegera:12
Enterintegerb:9a!=b#include<stdio.h>例輸入兩個(gè)數(shù)并判斷兩數(shù)#include<stdio.h>intmain(){charc;printf("Enteracharacter:");c=getchar();if(c<0x20)printf("Thecharacterisacontrolcharacter\n");elseif(c>='0'&&c<='9')printf("Thecharacterisadigit\n");elseif(c>='A'&&c<='Z')printf("Thecharacterisacapitalletter\n");elseif(c>='a'&&c<='z')printf("Thecharacterisalowerletter\n");elseprintf("Thecharacterisothercharacter\n");return0;}例判斷輸入字符種類運(yùn)行:Enteracharacter:
Thecharacterisacontrolcharacter運(yùn)行:Enteracharacter:8Thecharacterisadigit運(yùn)行:Enteracharacter:DThecharacterisacapitalletter運(yùn)行:Enteracharacter:hThecharacterisalowerletter運(yùn)行:Enteracharacter:]Thecharacterisothercharacter#include<stdio.h>例判斷輸入字符種類運(yùn)if語句嵌套:一般形式:if(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3elsestatement4內(nèi)嵌if內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement2內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement2
內(nèi)嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4內(nèi)嵌ifif語句嵌套:if(expr1)內(nèi)嵌if內(nèi)嵌ifif(e例輸入兩數(shù)并判斷其大小關(guān)系#include<stdio.h>intmain(){intx,y;printf("Enterintegerx,y:");scanf("%d,%d",&x,&y);
if(x!=y)
if(x>y)printf("X>Y\n");elseprintf("X<Y\n");
elseprintf("X==Y\n");return0;}運(yùn)行:Enterintegerx,y:12,23X<Y
Enterintegerx,y:12,6X>YEnterintegerx,y:12,12X==Y例輸入兩數(shù)并判斷其大小關(guān)系#include<stdio.if~else配對原則:缺省{}時(shí),else總是和它上面離它最近的未配對的if配對if(……)if(……)if(……)else…...else…...else…...if~else配對原則:缺省{}時(shí),else總是和例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if(a==b)
{if(b==c)printf(“a==b==c”);
}elseprintf(“a!=b”);實(shí)現(xiàn)if~else正確配對方法:加{}例:if(a==b)修改:if(a==b)實(shí)現(xiàn)if例考慮下面程序輸出結(jié)果:intmain(){intx=100,a=10,b=20;intv1=5,v2=0;if(a<b)if(b!=15)if(!v1)x=1;elseif(v2)x=10;x=-1;printf(“%d”,x);}結(jié)果:-1例考慮下面程序輸出結(jié)果:結(jié)果:-1switch語句(開關(guān)分支語句)一般形式:switch(表達(dá)式){caseE1:
語句組1;
break;caseE2:
語句組2;
break;…….caseEn:
語句組n;
break;[default:
語句組;break;]}執(zhí)行過程:switch表達(dá)式語句組1語句組2語句組n語句組…...E1E2Endefaultcaseswitch語句(開關(guān)分支語句)switch(表達(dá)式)執(zhí)行說明:E1,E2,…En是常量表達(dá)式,且值必須互不相同語句標(biāo)號作用,必須用break跳出case后可包含多個(gè)可執(zhí)行語句,且不必加{}switch可嵌套多個(gè)case可共用一組執(zhí)行語句如:……case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;……..說明:如:……例switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}運(yùn)行結(jié)果:score為5時(shí),輸出:
Verygood!Good!Pass!Fail!dataerror!例switch(score)運(yùn)行結(jié)果:score為5例intmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(“\na=%d,b=%d”,a,b);return0;}運(yùn)行結(jié)果:a=2,b=1例intmain()運(yùn)行結(jié)果:a=2,b=1#include<stdio.h>intmain(){intc;printf("Entermornorhorother:");c=getchar();switch(c){case'm':printf("\nGoodmorning!\n");break;case'n':printf("\nGoodnight!\n");break;case'h':printf("\nHello!\n");break;default:printf("\n????????\n");break;}return0;}例根據(jù)輸入字母輸出字符串#include<stdio.h>例根據(jù)輸入字母輸出字4.4
循環(huán)型程序設(shè)計(jì)概述C語言可實(shí)現(xiàn)循環(huán)的語句:while語句do~while語句for語句4.4循環(huán)型程序設(shè)計(jì)while語句一般形式:while(表達(dá)式)
循環(huán)體語句;執(zhí)行流程:expr循環(huán)體假(0)真(非0)whilewhile語句while(表達(dá)式)執(zhí)行流程:expr循環(huán)體特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體說明:循環(huán)體有可能一次也不執(zhí)行循環(huán)體可為任意類型語句下列情況,退出while循環(huán)條件表達(dá)式不成立(為零)循環(huán)體內(nèi)遇break,return無限循環(huán):while(1)
循環(huán)體;特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體例用while循環(huán)求#include<stdio.h>intmain(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);return0;}循環(huán)初值循環(huán)終值循環(huán)變量增值循環(huán)條件循環(huán)體例用while循環(huán)求#include<stdio.h>例顯示1~10的平方#include<stdio.h>intmain(){inti=1;while(i<=10){printf("%d*%d=%d\n",i,i,i*i);i++;}return0;}運(yùn)行結(jié)果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100例顯示1~10的平方#include<stdio.h>運(yùn)do~while語句一般形式:do
循環(huán)體語句;
while(表達(dá)式);執(zhí)行流程:do循環(huán)體expr假(0)真(非0)whiledo~while語句do執(zhí)行流程:do循環(huán)體expr假(0特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式說明:至少執(zhí)行一次循環(huán)體do~while可轉(zhuǎn)化成while結(jié)構(gòu)expr循環(huán)體假(0)真(非0)循環(huán)體While循環(huán)特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式expr循環(huán)體假(0)真(非例用do~while循環(huán)求#include<stdio.h>intmain(){inti,sum=0;i=1;do{sum+=i; i++;}while(i<=100);printf("%d",sum);return0;}例用do~while循環(huán)求#include<stdio例while和do~while比較#include<stdio.h>intmain(){inti,sum=0;scanf("%d",&i);do{sum+=i; i++;}while(i<=10);printf("%d",sum);return0;}intmain(){inti,sum=0;scanf("%d",&i);while(i<=10){sum+=i; i++;}printf("%d",sum);return0;}例while和do~while比較#include<sfor語句一般形式:for([expr1];[expr2];[expr3])
循環(huán)體語句;執(zhí)行流程:expr2循環(huán)體假(0)真(非0)forexpr1expr3for語句for([expr1];[expr2];[for語句一般應(yīng)用形式:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值){
循環(huán)體語句;}說明:for語句中expr1,expr2,expr3類型任意,都可省略,但分號;不可省無限循環(huán):for(;;)for語句可以轉(zhuǎn)換成while結(jié)構(gòu)expr1;while(expr2){
循環(huán)體語句;
expr3;}例用for循環(huán)求
#include<stdio.h>intmain(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d",sum);return0;}for語句一般應(yīng)用形式:for(循環(huán)變量賦初值;循環(huán)條件;循例:#include<stdio.h>intmain(){inti=0;for(i=0;i<10;i++)putchar(‘a(chǎn)’+i);return0;}運(yùn)行結(jié)果:abcdefghij例:#include<stdio.h>intmain(){inti=0;
for(;i<10;i++)putchar(‘a(chǎn)’+i);return0;}例:#include<stdio.h>main(){inti=0;
for(;i<10;)putchar(‘a(chǎn)’+(i++));}例:#include<stdio.h>intmain(){inti=0;
for(;i<10;putchar(‘a(chǎn)’+i),i++)
;return0;}例:#include<stdio.h>運(yùn)行結(jié)果:abcdefintmain(){inti,j,k;
for(i=0,j=100;i<=j;i++,j--){k=i+j; printf("%d+%d=%d\n",i,j,k);}return0;}#include<stdio.h>intmain(){charc;
for(;(c=getchar())!='\n';)printf("%c",c);return0;}intmain()#include<stdio.h>例(f0r)梯形法求數(shù)值積分0yxaa+ha+iha+(i+1)hbf(x)例(f0r)梯形法求數(shù)值積分0yxaa+ha+iha+(循環(huán)的嵌套三種循環(huán)可互相嵌套,層數(shù)不限外層循環(huán)可包含兩個(gè)以上內(nèi)循環(huán)嵌套循環(huán)的執(zhí)行流程(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)嵌套循環(huán)的跳轉(zhuǎn)禁止:從外層跳入內(nèi)層跳入同層的另一循環(huán)向上跳轉(zhuǎn)循環(huán)的嵌套(1)while()(2)do(3)w例循環(huán)嵌套,輸出九九表1234567891234567892468101214161836912151821242791827364554637281……………..ij#include<stdio.h>intmain(){inti,j;for(i=1;i<10;i++)printf("%4d",i);printf("\n---------------------------------------\n");for(i=1;i<10;i++)for(j=1;j<10;j++) printf((j==9)?"%4d\n":"%4d",i*j);return0;}例循環(huán)嵌套,輸出九九表12345678912345678i<10printf假(0)真(非0)i=1j++j=1j<10真(非0)假(0)i++for(i=1;i<10;i++)
for(j=1;j<10;j++)printf((j==9)?"%4d\n":"%4d",i*j);外循環(huán)內(nèi)循環(huán)i<10printf假(0)真(非0)i=1j++j=1j<
4.5輔助控制語句break語句功能:在循環(huán)語句和switch語句中,終止并跳出循環(huán)體或開關(guān)體說明:break只能終止并跳出最近一層的結(jié)構(gòu)break不能用于循環(huán)語句和switch語句之外的任何其它語句之中4.5輔助控制語句
expr……break;……假(0)真(非0)whiledo……break;…...expr假(0)真(非0)while
expr……假(0)真(非0)whiledo……expr假expr2……break;…...假(0)真(非0)forexpr1expr3switchexpr語句組1break;語句組2break;語句組nbreak;語句組break;…...const1const2constndefaultcaseexpr2……假(0)真(非0)forexpr1expr3s例break舉例:假設(shè)半徑為1到10的整數(shù),逐個(gè)輸出圓面積,直到面積大于100時(shí)停止#definePI3.14159intmain(){intr;doublearea;for(r=1;r<=10;r++){area=PI*r*r;if(area>100) break;printf("r=%d,area=%.2lf\n",r,area);}return0;}例break舉例:假設(shè)半徑為1到10的整數(shù),逐個(gè)輸出圓面例break舉例:小寫字母轉(zhuǎn)換成大寫字母,直至輸入非小寫字母字符#include<stdio.h>intmain(){inti,j;charc;while(1){c=getchar(); if(c>='a'&&c<='z') putchar(c+‘A’-’a’); else break;}return0;}例break舉例:小寫字母轉(zhuǎn)換成大寫字母,直至輸入非小寫continue語句功能:結(jié)束本次循環(huán),跳過循環(huán)體中尚未執(zhí)行的語句,進(jìn)行下一次是否執(zhí)行循環(huán)體的判斷僅用于循環(huán)語句中expr……continue;……假(0)真(非0)while真(非0)do……continue;…...expr假(0)whileexpr2……continue;…...假(0)真(非0)forexpr1expr3continue語句expr……假(0)真(非0)while例從鍵盤輸入十個(gè)整數(shù),求輸入的十個(gè)整數(shù)中正數(shù)的個(gè)數(shù)及其平均值#include<stdio.h>intmain(){inti,num=0,a;intsum=0;for(i=0;i<10;i++){scanf("%d",&a); if(a<=0)continue; num++; sum+=a;}printf("%dplusinteger'ssum:%d\n",num,sum);printf("Meanvalue:%6.2f\n",sum*1.0/num);return0;}例從鍵盤輸入十個(gè)整數(shù),求輸入的十個(gè)整數(shù)中正數(shù)的個(gè)數(shù)及其平程序舉例t=1,pi=0,n=1.0,s=1當(dāng)|t|1e-6pi=pi+tn=n+2s=-st=s/npi=pi*4輸出pi分子:1,-1,1,-1…分母:1,3,5,7,...程序舉例t=1,pi=0,n=1.0,s=1當(dāng)|t|1e-例求Fibonacci數(shù)列:1,1,2,3,5,8,……的前40個(gè)數(shù)f1=1,f2=1fori=1to20輸出f1,f2f1=f1+f2f2=f2+f11534233159710946750255142293524578241578171855377258417711121393832040570288739088169213896104181286571964181346269922746563245986321144987676546368317811217830914930352102334155例求Fibonacci數(shù)列:1,1,2,3,5,8,……例判斷m是否素?cái)?shù)讀入mk=mi=2當(dāng)ikm被i整除真假用break結(jié)束循環(huán)i=i+1ik+1真假輸出:m”是素?cái)?shù)”輸出:m”不是素?cái)?shù)”例判斷m是否素?cái)?shù)讀入mk=mi=2當(dāng)ikm被i整除真第四章C程序流程設(shè)計(jì)4.1C語句概述C語句:以“;”作分隔符,編譯后產(chǎn)生機(jī)器指令.C語句分類表達(dá)式語句:表達(dá)式加分號構(gòu)成。空語句:;程序控制語句(9種):if()~else~switchfor()~while()~do~while()continuebreakgotoreturn分支循環(huán)輔助控制如total=total+limit;a=3;func();printf(“Hello,world!\n”);第四章C程序流程設(shè)計(jì)4.1C語句概述空語句:;程序控復(fù)合語句:用{…}括起來的一組語句一般形式:
{[數(shù)據(jù)說明部分;]執(zhí)行語句部分;}說明:“}”后不加分號語法上和單一語句相同復(fù)合語句可嵌套復(fù)合語句:用{…}括起來的一組語句4.2
程序的三種基本結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計(jì)基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示,限制使用無條件轉(zhuǎn)移語句(goto)結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)成的程序叫~優(yōu)點(diǎn):結(jié)構(gòu)清晰,易讀,提高程序設(shè)計(jì)質(zhì)量和效率三種基本結(jié)構(gòu)順序結(jié)構(gòu)ABAB流程圖N-S圖4.2程序的三種基本結(jié)構(gòu)ABAB流程圖N-S圖PAB真假PBA真假選擇結(jié)構(gòu)kA1A2AiAnk=k2k=k1k=knk=ki......二分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)PAB真假PBA真假選擇結(jié)構(gòu)kA1A2AiAnk=k2k=k循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)PA假真當(dāng)P為真AAP真假A直到P為真注:A,B,A1….An可以是一個(gè)簡單語句,也可以是一個(gè)基本結(jié)構(gòu)循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)PA假真當(dāng)P為真AAP真假4.3選擇型程序設(shè)計(jì)if語句(條件選擇語句)if語句的三種形式形式一:格式:if(expression)statement執(zhí)行過程:exprstatement非0=0例:if(x>y)printf(“%d”,x);exprstatement1statement2非0=0形式二:格式:if(expression)statement1elsestatement2執(zhí)行過程:例:if(x>y)max=x;elsemax=y;4.3選擇型程序設(shè)計(jì)exprstatement非0=0例:形式三:格式:if(expr1)statement1elseif(expr2)statement2elseif(expr3)statement3…...[elsestatementn]expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0執(zhí)行過程:
例:if(salary>1000)index=0.4;elseif(salary>800)index=0.3;elseif(salary>600)index=0.2;elseif(salary>400)index=0.1;elseindex=0;形式三:if(expr1)st如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);說明:if后面的表達(dá)式類型任意語句可以是復(fù)合語句
if(x)if(x!=0)if(!x)if(x==0)例考慮下面程序的輸出結(jié)果:#include<stdio.h>intmain(){intx,y;scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;printf(“%d,%d\n”,x,y);return0;}CompileError!如:if(a==b&&x==y)printf(“a=#include<stdio.h>intmain(){intx,y;printf("Enteraninteger:");scanf("%d",&x);y=x;
if(y<0)y=-y;printf("\ninteger:%d--->absolutevalue:%d\n",x,y);return0;}例求一個(gè)數(shù)的絕對值運(yùn)行:Enteraninteger:-12integer:-12--->absolutevalue:12#include<stdio.h>例求一個(gè)數(shù)的絕對值運(yùn)#include<stdio.h>intmain(){inta,b;printf("Enterintegera:");scanf("%d",&a);printf("Enterintegerb:");scanf("%d",&b);
if(a==b)printf("a==b\n");elseprintf("a!=b\n");return0;}例輸入兩個(gè)數(shù)并判斷兩數(shù)相等否運(yùn)行:Enterintegera:12
Enterintegerb:12a==b運(yùn)行:Enterintegera:12
Enterintegerb:9a!=b#include<stdio.h>例輸入兩個(gè)數(shù)并判斷兩數(shù)#include<stdio.h>intmain(){charc;printf("Enteracharacter:");c=getchar();if(c<0x20)printf("Thecharacterisacontrolcharacter\n");elseif(c>='0'&&c<='9')printf("Thecharacterisadigit\n");elseif(c>='A'&&c<='Z')printf("Thecharacterisacapitalletter\n");elseif(c>='a'&&c<='z')printf("Thecharacterisalowerletter\n");elseprintf("Thecharacterisothercharacter\n");return0;}例判斷輸入字符種類運(yùn)行:Enteracharacter:
Thecharacterisacontrolcharacter運(yùn)行:Enteracharacter:8Thecharacterisadigit運(yùn)行:Enteracharacter:DThecharacterisacapitalletter運(yùn)行:Enteracharacter:hThecharacterisalowerletter運(yùn)行:Enteracharacter:]Thecharacterisothercharacter#include<stdio.h>例判斷輸入字符種類運(yùn)if語句嵌套:一般形式:if(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3elsestatement4內(nèi)嵌if內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement2內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement2
內(nèi)嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4內(nèi)嵌ifif語句嵌套:if(expr1)內(nèi)嵌if內(nèi)嵌ifif(e例輸入兩數(shù)并判斷其大小關(guān)系#include<stdio.h>intmain(){intx,y;printf("Enterintegerx,y:");scanf("%d,%d",&x,&y);
if(x!=y)
if(x>y)printf("X>Y\n");elseprintf("X<Y\n");
elseprintf("X==Y\n");return0;}運(yùn)行:Enterintegerx,y:12,23X<Y
Enterintegerx,y:12,6X>YEnterintegerx,y:12,12X==Y例輸入兩數(shù)并判斷其大小關(guān)系#include<stdio.if~else配對原則:缺省{}時(shí),else總是和它上面離它最近的未配對的if配對if(……)if(……)if(……)else…...else…...else…...if~else配對原則:缺省{}時(shí),else總是和例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if(a==b)
{if(b==c)printf(“a==b==c”);
}elseprintf(“a!=b”);實(shí)現(xiàn)if~else正確配對方法:加{}例:if(a==b)修改:if(a==b)實(shí)現(xiàn)if例考慮下面程序輸出結(jié)果:intmain(){intx=100,a=10,b=20;intv1=5,v2=0;if(a<b)if(b!=15)if(!v1)x=1;elseif(v2)x=10;x=-1;printf(“%d”,x);}結(jié)果:-1例考慮下面程序輸出結(jié)果:結(jié)果:-1switch語句(開關(guān)分支語句)一般形式:switch(表達(dá)式){caseE1:
語句組1;
break;caseE2:
語句組2;
break;…….caseEn:
語句組n;
break;[default:
語句組;break;]}執(zhí)行過程:switch表達(dá)式語句組1語句組2語句組n語句組…...E1E2Endefaultcaseswitch語句(開關(guān)分支語句)switch(表達(dá)式)執(zhí)行說明:E1,E2,…En是常量表達(dá)式,且值必須互不相同語句標(biāo)號作用,必須用break跳出case后可包含多個(gè)可執(zhí)行語句,且不必加{}switch可嵌套多個(gè)case可共用一組執(zhí)行語句如:……case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;……..說明:如:……例switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}運(yùn)行結(jié)果:score為5時(shí),輸出:
Verygood!Good!Pass!Fail!dataerror!例switch(score)運(yùn)行結(jié)果:score為5例intmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(“\na=%d,b=%d”,a,b);return0;}運(yùn)行結(jié)果:a=2,b=1例intmain()運(yùn)行結(jié)果:a=2,b=1#include<stdio.h>intmain(){intc;printf("Entermornorhorother:");c=getchar();switch(c){case'm':printf("\nGoodmorning!\n");break;case'n':printf("\nGoodnight!\n");break;case'h':printf("\nHello!\n");break;default:printf("\n????????\n");break;}return0;}例根據(jù)輸入字母輸出字符串#include<stdio.h>例根據(jù)輸入字母輸出字4.4
循環(huán)型程序設(shè)計(jì)概述C語言可實(shí)現(xiàn)循環(huán)的語句:while語句do~while語句for語句4.4循環(huán)型程序設(shè)計(jì)while語句一般形式:while(表達(dá)式)
循環(huán)體語句;執(zhí)行流程:expr循環(huán)體假(0)真(非0)whilewhile語句while(表達(dá)式)執(zhí)行流程:expr循環(huán)體特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體說明:循環(huán)體有可能一次也不執(zhí)行循環(huán)體可為任意類型語句下列情況,退出while循環(huán)條件表達(dá)式不成立(為零)循環(huán)體內(nèi)遇break,return無限循環(huán):while(1)
循環(huán)體;特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體例用while循環(huán)求#include<stdio.h>intmain(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);return0;}循環(huán)初值循環(huán)終值循環(huán)變量增值循環(huán)條件循環(huán)體例用while循環(huán)求#include<stdio.h>例顯示1~10的平方#include<stdio.h>intmain(){inti=1;while(i<=10){printf("%d*%d=%d\n",i,i,i*i);i++;}return0;}運(yùn)行結(jié)果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100例顯示1~10的平方#include<stdio.h>運(yùn)do~while語句一般形式:do
循環(huán)體語句;
while(表達(dá)式);執(zhí)行流程:do循環(huán)體expr假(0)真(非0)whiledo~while語句do執(zhí)行流程:do循環(huán)體expr假(0特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式說明:至少執(zhí)行一次循環(huán)體do~while可轉(zhuǎn)化成while結(jié)構(gòu)expr循環(huán)體假(0)真(非0)循環(huán)體While循環(huán)特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式expr循環(huán)體假(0)真(非例用do~while循環(huán)求#include<stdio.h>intmain(){inti,sum=0;i=1;do{sum+=i; i++;}while(i<=100);printf("%d",sum);return0;}例用do~while循環(huán)求#include<stdio例while和do~while比較#include<stdio.h>intmain(){inti,sum=0;scanf("%d",&i);do{sum+=i; i++;}while(i<=10);printf("%d",sum);return0;}intmain(){inti,sum=0;scanf("%d",&i);while(i<=10){sum+=i; i++;}printf("%d",sum);return0;}例while和do~while比較#include<sfor語句一般形式:for([expr1];[expr2];[expr3])
循環(huán)體語句;執(zhí)行流程:expr2循環(huán)體假(0)真(非0)forexpr1expr3for語句for([expr1];[expr2];[for語句一般應(yīng)用形式:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值){
循環(huán)體語句;}說明:for語句中expr1,expr2,expr3類型任意,都可省略,但分號;不可省無限循環(huán):for(;;)for語句可以轉(zhuǎn)換成while結(jié)構(gòu)expr1;while(expr2){
循環(huán)體語句;
expr3;}例用for循環(huán)求
#include<stdio.h>intmain(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d",sum);return0;}for語句一般應(yīng)用形式:for(循環(huán)變量賦初值;循環(huán)條件;循例:#include<stdio.h>intmain(){inti=0;for(i=0;i<10;i++)putchar(‘a(chǎn)’+i);return0;}運(yùn)行結(jié)果:abcdefghij例:#include<stdio.h>intmain(){inti=0;
for(;i<10;i++)putchar(‘a(chǎn)’+i);return0;}例:#include<stdio.h>main(){inti=0;
for(;i<10;)putchar(‘a(chǎn)’+(i++));}例:#include<stdio.h>intmain(){inti=0;
for(;i<10;putchar(‘a(chǎn)’+i),i++)
;return0;}例:#include<stdio.h>運(yùn)行結(jié)果:abcdefintmain(){inti,j,k;
for(i=0,j=100;i<=j;i++,j--){k=i+j; printf("%d+%d=%d\n",i,j,k);}return0;}#include<stdio.h>intmain(){charc;
for(;(c=getchar())!='\n';)printf("%c",c);return0;}intmain()#include<stdio.h>例(f0r)梯形法求數(shù)值積分0yxaa+ha+iha+(i+1)hbf(x)例(f0r)梯形法求數(shù)值積分0yxaa+ha+iha+(循環(huán)的嵌套三種循環(huán)可互相嵌套,層數(shù)不限外層循環(huán)可包含兩個(gè)以上內(nèi)循環(huán)嵌套循環(huán)的執(zhí)行流程(1)while(){……while(){……}…...}(2)do{……do{……}while();…...}while();(3)while(){……do{……}while();…….}(4)for(;;){……do{……}while();……while(){……}…...}內(nèi)循環(huán)外循
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZSM 0060-2024“領(lǐng)跑者”評價(jià)技術(shù)要求 微型往復(fù)活塞空氣壓縮機(jī)
- 二零二五年度競業(yè)禁止期限及競業(yè)限制解除后的競業(yè)禁止責(zé)任及賠償執(zhí)行及監(jiān)督合同
- 二零二五年度金融衍生品合同印花稅稅率變動與市場創(chuàng)新
- 二零二五年度手房過戶二手房交易中介服務(wù)合同協(xié)議
- 二零二五年度智慧能源合伙經(jīng)營股權(quán)協(xié)議書
- 二零二五年度文藝演出宣傳推廣合作協(xié)議
- 2025年度智能債權(quán)轉(zhuǎn)讓服務(wù)合同不可適用借款合同解析
- 2025年度生態(tài)魚塘資源租賃管理合同
- 二零二五年度商鋪?zhàn)赓U糾紛解決機(jī)制合同
- 二零二五年度跨區(qū)域集體合同-XX行業(yè)職工勞動條件提升協(xié)議
- 《抖音營銷教程》課件
- 2025屆山東核電校園招聘正式啟動筆試參考題庫附帶答案詳解
- 2025年湖南科技職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 公路工程標(biāo)準(zhǔn)施工招標(biāo)文件(2018年版)
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蝕工程施工及驗(yàn)收規(guī)范
- (高清版)JTG 3370.1-2018 公路隧道設(shè)計(jì)規(guī)范 第一冊 土建工程
- 小學(xué)科學(xué)冀人版六年級下冊全冊同步練習(xí)含答案
- 酒店前臺績效考核表
- 精神發(fā)育遲滯的護(hù)理查房
- 粵勞社[2002]246號關(guān)于職工在機(jī)關(guān)事業(yè)單位與企業(yè)之間流動時(shí)社會保險(xiǎn)關(guān)系處理意見的通知
- 通信防雷與接地系統(tǒng)PPT學(xué)習(xí)教案
評論
0/150
提交評論