天軟專業(yè)課2014年考試專用語言cc52程序流程設(shè)計(jì)_第1頁
天軟專業(yè)課2014年考試專用語言cc52程序流程設(shè)計(jì)_第2頁
天軟專業(yè)課2014年考試專用語言cc52程序流程設(shè)計(jì)_第3頁
天軟專業(yè)課2014年考試專用語言cc52程序流程設(shè)計(jì)_第4頁
天軟專業(yè)課2014年考試專用語言cc52程序流程設(shè)計(jì)_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第五章(下)C程序流程設(shè)計(jì)5.4C語句概述C語句:以“;”作分隔符,編譯后產(chǎn)生機(jī)器指令.C語句分類表達(dá)式語句:表達(dá)式加分號構(gòu)成??照Z句:;程序控制語句(9種):if()~else~switchfor()~while()~do~while()continuebreakgotoreturn分支循環(huán)輔助控制如total=total+limit;a=3;func();printf(“Hello,world!\n”);復(fù)合語句:用{…}括起來的一組語句一般形式:

{[數(shù)據(jù)說明部分;]

執(zhí)行語句部分;

}說明:“}”后不加分號語法上和單一語句相同復(fù)合語句可嵌套5.5

程序的三種基本結(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圖PAB真假PBA真假選擇結(jié)構(gòu)kA1A2AiAnk=k2k=k1k=knk=ki......二分支選擇結(jié)構(gòu)多分支選擇結(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真假A直到P為真注:A,B,A1….An可以是一個(gè)簡單語句,也可以是一個(gè)基本結(jié)構(gòu)順序結(jié)構(gòu)程序設(shè)計(jì)的步驟(算法的體現(xiàn)):(1)定義數(shù)據(jù)(2)對數(shù)據(jù)進(jìn)行處理,以其得到相應(yīng)的結(jié)果(3)顯示結(jié)果程序舉例/*ch3_12.c*/#include<math.h>#include<stdio.h>main(){floata,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);printf("area=%7.2f\n",area);}例輸入三角形邊長,求面積輸入:3,4,6輸出:a=3.00,b=4.00,c=6.00s=6.50area=5.33文件包含預(yù)處理命令變量定義輸入數(shù)據(jù)輸出數(shù)據(jù)例從鍵盤輸入大寫字母,用小寫字母輸出/*ch3_13.c*/#include"stdio.h"main(){charc1,c2;c1=getchar();printf("%c,%d\n",c1,c1);c2=c1+32;printf("%c,%d\n",c2,c2);}輸入:A

輸出:A,65a,97/*ch3_14.c*/#include<stdio.h>#include<math.h>main(){floata,b,c,disc,x1,x2,p,q;scanf("a=%f,b=%f,c=%f",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);}輸入:a=1,b=3,c=2

輸出:x1=-1.00x2=-2.005.6選擇型程序設(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;形式三:格式:if(expr1)statement1elseif(expr2)statement2elseif(expr3)statement3…...[elsestatementn]expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0執(zhí)行過程:

例:if(cash>1000)cost=0.5;elseif(cash>800)cost=0.6;elseif(cash>600)cost=0.7;elseif(cash>400)cost=0.9;elsecost=1;如: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>main(){intx,y;scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;printf(“%d,%d\n”,x,y);}CompileError!/*ch4_1.c*/#include<stdio.h>main(){intx,y;printf("Enteraninteger:");scanf("%d",&x);y=x;

if(y<0)y=-y;printf("\ninteger:%d--->absolutevalue:%d\n",x,y);}例求一個(gè)數(shù)的絕對值運(yùn)行:Enteraninteger:-12integer:-12--->absolutevalue:12/*ch4_2.c*/#include<stdio.h>main(){inta,b;printf("Enterintegera:");scanf("%d",&a);printf("Enterintegerb:");scanf("%d",&b);

if(a==b)printf("a==b\n");elseprintf("a!=b\n");}例輸入兩個(gè)數(shù)并判斷兩數(shù)相等否運(yùn)行:Enterintegera:12

Enterintegerb:12a==b運(yùn)行:Enterintegera:12

Enterintegerb:9a!=b/*ch4_3.c*/#include<stdio.h>main(){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");}例判斷輸入字符種類運(yùn)行:Enteracharacter:

Thecharacterisacontrolcharacter運(yùn)行:Enteracharacter:8Thecharacterisadigit運(yùn)行:Enteracharacter:DThecharacterisacapitalletter運(yùn)行:Enteracharacter:hThecharacterisalowerletter運(yùn)行:Enteracharacter:F1Thecharacterisothercharacterif語句嵌套:一般形式:if(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3elsestatement4內(nèi)嵌if內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement2內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement3

內(nèi)嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4內(nèi)嵌if例輸入兩數(shù)并判斷其大小關(guān)系/*ch4_4.c*/#include<stdio.h>main(){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");}運(yùn)行:Enterintegerx,y:12,23X<Y

Enterintegerx,y:12,6X>YEnterintegerx,y:12,12X==Yif~else配對原則:缺省{}時(shí),else總是和它上面離它最近的未配對的if配對if(……)if(……)if(……)else…...else…...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正確配對方法:加{}例考慮下面程序輸出結(jié)果:main(){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é)果:-1switch語句(開關(guān)分支語句)一般形式:switch(表達(dá)式)/*整型、字符型*/{caseE1:

語句組1;[break;]caseE2:

語句組2;[break;]…….caseEn:

語句組n;[break;][default:

語句組;break;]}執(zhí)行過程:switch表達(dá)式語句組1語句組2語句組n語句組…...E1E2Endefaultcase說明:E1,E2,…En是常量表達(dá)式,且值必須互不相同case起語句標(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!例voidmain(){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);}運(yùn)行結(jié)果:a=2,b=1/*ch4_5.c*/#include<stdio.h>main(){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;}}例根據(jù)輸入字母輸出字符串5.7

循環(huán)型程序設(shè)計(jì)概述C語言可實(shí)現(xiàn)循環(huán)的語句:用goto和if構(gòu)成循環(huán)while語句do~while語句for語句goto語句及用goto構(gòu)成循環(huán)goto語句一般格式:

goto語句標(biāo)號;

….…..標(biāo)號:語句;循環(huán)的基本概念循環(huán)---重復(fù)執(zhí)行循環(huán)控制條件---重復(fù)執(zhí)行循環(huán)體的條件循環(huán)變量---決定循環(huán)次數(shù)的變量循環(huán)體---一組被重復(fù)執(zhí)行的語句(動作)5.7

循環(huán)型程序設(shè)計(jì)goto語句及用goto構(gòu)成循環(huán)goto語句一般格式:

goto語句標(biāo)號;

….…..標(biāo)號:語句;功能:無條件轉(zhuǎn)移語句說明:不能用整數(shù)作標(biāo)號只能出現(xiàn)在goto所在函數(shù)內(nèi),且唯一只能加在可執(zhí)行語句前面限制使用goto語句例用if和goto語句構(gòu)成循環(huán),求/*ch5_1.c*/#include<stdio.h>main(){inti,sum=0;i=1;loop:if(i<=100){sum+=i; i++;

gotoloop;}printf("%d",sum);}sum=0+1sum==1+2=3sum=3+3=6sum=6+4……sum=4950+100=5050循環(huán)初值循環(huán)終值循環(huán)變量增值循環(huán)條件循環(huán)體例從鍵盤輸入一組數(shù)據(jù),以0結(jié)束輸入,求數(shù)據(jù)和/*ch5_11.c*/#include<stdio.h>main(){ intnumber,sum=0;read_loop:scanf("%d",&number); if(!number)gotoprint_sum; sum+=number;

gotoread_loop;print_sum:printf("Thetotalsumis%d\n",sum);}while語句一般形式:while(表達(dá)式)

循環(huán)體語句;執(zhí)行流程:expr循環(huán)體假(0)真(非0)特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體說明:循環(huán)體有可能一次也不執(zhí)行循環(huán)體可為任意類型語句下列情況,退出while循環(huán)條件表達(dá)式不成立(為零)循環(huán)體內(nèi)遇break,return,goto無限循環(huán):while(1)

循環(huán)體;例用while循環(huán)求

/*ch5_2.c*/#include<stdio.h>main(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}循環(huán)初值循環(huán)終值循環(huán)變量增值循環(huán)條件循環(huán)體例顯示1~10的平方/*ch5_21.c*/#include<stdio.h>main(){inti=1;while(i<=10){printf("%d*%d=%d\n",i,i,i*i);i++;}}運(yùn)行結(jié)果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100do~while語句一般形式:do

循環(huán)體語句;

while(表達(dá)式);執(zhí)行流程:循環(huán)體expr假(0)真(非0)while特點(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)例用do~while循環(huán)求

/*ch5_3.c*/#include<stdio.h>main(){inti,sum=0;i=1;do{sum+=i; i++;}while(i<=100);printf("%d",sum);}例while和do~while比較/*ch5_4.c*/#include<stdio.h>main(){inti,sum=0;scanf("%d",&i);do{sum+=i; i++;}while(i<=10);printf("%d",sum);}main(){inti,sum=0;scanf("%d",&i);while(i<=10){sum+=i; i++;}printf("%d",sum);}for語句一般形式:for([expr1];[expr2];[expr3])

循環(huán)體語句;執(zhí)行流程:expr2循環(huán)體假(0)真(非0)forexpr1expr3for語句一般應(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>main(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}例:#include<stdio.h>main(){inti=0;for(i=0;i<10;i++)putchar(‘a(chǎn)’+i);}運(yùn)行結(jié)果:abcdefghij例:#include<stdio.h>main(){inti=0;

for(;i<10;i++)putchar(‘a(chǎn)’+i);}例:#include<stdio.h>main(){inti=0;

for(;i<10;)putchar(‘a(chǎn)’+(i++));}例:#include<stdio.h>main(){inti=0;

for(;i<10;putchar(‘a(chǎn)’+i),i++);}main(){inti,j,k;

for(i=0,j=100;i<=j;i++,j--){k=i+j; printf("%d+%d=%d\n",i,j,k);}}#include<stdio.h>main(){charc;

for(;(c=getchar())!='\n';)printf("%c",c);}#include<stdio.h>main(){inti,c;

for(i=0;(c=getchar())!='\n';i+=3) printf("%c",i+c);}例(f0r)梯形法求數(shù)值積分0yxaa+ha+iha+(i+1)hbf(x)程序如下:#include<stdio.h>

main()

{

floatsab(inta,intb,intn);

inta,b,n;

floaty;

printf("請輸入兩個(gè)邊界值和等分?jǐn)?shù):\n");

scanf("%d,%d,%d",&a,&b,&n);

y=sab(a,b,n);

printf("函數(shù)f(x)在%d到%d上的積分值為%f\n",a,b,y);

return0;

}floatsab(inta,intb,intn)

{floatf(intx);

floats,k,h;

inti;

k=(f(a)+f(b))/2;

h=(b-a)/n;

for(i=1;i<n;i++)

{k=k+f(a+i*h);}

s=k*h;

return(s);

}floatf(intx)

{floatm;

m=sqrt(4-x*x);

return(m);

}循環(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)嵌套,輸出九九表1234567891234567892468101214161836912151821242791827364554637281……………..ij/*ch5_5.c*/#include<stdio.h>main(){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);}i<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)

5.8輔助控制語句break語句功能:在循環(huán)語句和switch語句中,終止并跳出循環(huán)體或開關(guān)體說明:break只能終止并跳出最近一層的結(jié)構(gòu)break不能用于循環(huán)語句和switch語句之外的任何其它語句之中

expr……break;……假(0)真(非0)whiledo……break;…...expr假(0)真(非0)whileexpr2……break;…...假(0)真(非0)forexpr1expr3switchexpr語句組1break;語句組2break;語句組nbreak;語句組break;…...const1const2constndefaultcase例break舉例:輸出圓面積,面積大于100時(shí)停止#definePI3.14159main(){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>main(){charc;while(1){c=getchar(); if(c>='a'&&c<='z') putchar(c-'a'+'A'); else break;}}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)forexpr1expr3例求輸入的十個(gè)整數(shù)中正數(shù)的個(gè)數(shù)及其平均值/*ch5_12.c*/#include<stdio.h>main(){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",

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論