第3章算法與控制語(yǔ)句_第1頁(yè)
第3章算法與控制語(yǔ)句_第2頁(yè)
第3章算法與控制語(yǔ)句_第3頁(yè)
第3章算法與控制語(yǔ)句_第4頁(yè)
第3章算法與控制語(yǔ)句_第5頁(yè)
已閱讀5頁(yè),還剩87頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1第3章算法和控制語(yǔ)句2教學(xué)目標(biāo)初步理解算法的概念和特點(diǎn)掌握常用問(wèn)題的算法掌握用流程圖表示算法了解結(jié)構(gòu)化程序設(shè)計(jì)的方法掌握格式化輸入輸出函數(shù)的用法掌握分支結(jié)構(gòu)的程序設(shè)計(jì),理解分支語(yǔ)句的嵌套掌握循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)及其相互嵌套理解break和continue的控制能夠編寫較復(fù)雜的程序33.1算法初步3.2C語(yǔ)言的標(biāo)準(zhǔn)輸入和輸出3.3條件語(yǔ)句3.4多分支語(yǔ)句3.5循環(huán)語(yǔ)句3.6轉(zhuǎn)移語(yǔ)句3.7綜合應(yīng)用43.1算法初步算法的概念算法的表示算法舉例三種基本結(jié)構(gòu)5算法的概念算法:解決問(wèn)題的方法和步驟沃斯公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序改進(jìn)的沃斯公式:數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+開發(fā)工具=程序6算法的表示自然語(yǔ)言傳統(tǒng)流程圖N-S流程圖偽代碼計(jì)算機(jī)語(yǔ)言

7傳統(tǒng)流程圖8計(jì)算機(jī)語(yǔ)言#include<stdio.h>intmain(){ inti,n,s=0; scanf("%d",&n); i=1; while(i<=n) { s=s+i; i++; } printf("s=%d\n",s); return0;}9算法舉例例3.1用流程圖表示求兩個(gè)數(shù)a,b的最大值10例3.2:求n!11例3.3:判斷某一年是否為閏年。12例3.4:輸入一個(gè)正整數(shù),將它反位輸出(如輸入12345,輸出54321)。13例3.5:判斷一個(gè)整數(shù)n是否為素?cái)?shù)14例3.6:對(duì)三個(gè)整數(shù)a、b、c按從小到大排序。15算法的特點(diǎn)有窮性確定性有零個(gè)或多個(gè)輸入有一個(gè)或多個(gè)輸出可行性16三種基本結(jié)構(gòu)順序結(jié)構(gòu):根據(jù)操作的先后順序執(zhí)行17選擇(分支)結(jié)構(gòu):根據(jù)某個(gè)給定條件進(jìn)行判斷,條件為真或假時(shí)分別執(zhí)行不同的操作18循環(huán)結(jié)構(gòu):根據(jù)條件的真或假反復(fù)執(zhí)行某些操作19三種基本結(jié)構(gòu)的特點(diǎn):只有一個(gè)入口和一個(gè)出口結(jié)構(gòu)內(nèi)的每一部分都有可能被執(zhí)行到結(jié)構(gòu)內(nèi)不存在“死循環(huán)”203.2C語(yǔ)言的標(biāo)準(zhǔn)輸入和輸出3.2.1格式化輸入輸出3.2.2其它輸入輸出3.2.3C語(yǔ)言語(yǔ)句3.2.4順序結(jié)構(gòu)程序設(shè)計(jì)213.2.1格式化輸入輸出格式化輸出函數(shù)printf()

:把信息輸出到標(biāo)準(zhǔn)輸出設(shè)備(顯示器)上格式:printf(“控制字符串”,輸出項(xiàng)列表)#include<stdio.h>22輸出項(xiàng)常量、變量、表達(dá)式類型與個(gè)數(shù)必須與控制字符串中格式字符的類型、個(gè)數(shù)一致有多個(gè)輸出項(xiàng)時(shí),各項(xiàng)之間用逗號(hào)分隔控制字符串必須用雙引號(hào)括起格式說(shuō)明普通字符23格式說(shuō)明符:%[<修飾符>]<格式字符>

格式字符含義舉例結(jié)果c按字符輸出chara=65;printf(“%c”,a);Ad按十進(jìn)制整數(shù)輸出inta=567;printf(“%d”,a);567u按十進(jìn)制無(wú)符號(hào)整數(shù)輸出inta=567;printf(“%u”,a);567f按浮點(diǎn)數(shù)輸出floata=567.789;printf(“%f”,a);567.789000E或e按指數(shù)形式輸出doublea=567.789;printf(“%e”,a);5.677890e+02o按八進(jìn)制輸出inta=65;printf(“%o”,a);101X或x按十六進(jìn)制輸出inta=255;printf(“%x”,a);ffs按字符串輸出printf(“%s”,“ABC”);ABCg按e、f格式中較短的一種輸出floata=567.789;printf(“%g”,a);567.78924修飾符含義M輸出數(shù)據(jù)域?qū)?數(shù)據(jù)長(zhǎng)度<m,左補(bǔ)空格;否則按實(shí)際輸出.n對(duì)實(shí)數(shù),指定小數(shù)點(diǎn)后位數(shù)(四舍五入);對(duì)字符串,指定實(shí)際輸出位數(shù)-輸出數(shù)據(jù)在域內(nèi)左對(duì)齊(缺省右對(duì)齊)+指定在有符號(hào)數(shù)的正數(shù)前顯示正號(hào)(+)0輸出數(shù)值時(shí)指定左面不使用的空位置自動(dòng)填0#在八進(jìn)制和十六進(jìn)制數(shù)前顯示前導(dǎo)0,0xl在d,o,x,u前,指定輸出精度為long型在e,f,g前,指定輸出精度為double型修飾符:確定數(shù)據(jù)輸出的寬度、精度、小數(shù)位數(shù)、對(duì)齊方式

25普通字符:打印字符和轉(zhuǎn)義字符#include<stdio.h>intmain(){intx=1234,y=3,z=4;floatf=123.456;doublem=123.456;charch='a',a[]="Hello,world!";printf("%d%d\n",y,z);printf("y=%d,z=%d\n",y,z);printf("%8d,%2d\n",x,x);

printf("%f,%8f,%8.1f,%.2f,%.2e\n",f,f,f,f,f);

printf("%lf\n",m);printf("%3c\n",ch);printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a);return0;}26程序運(yùn)行結(jié)果:34y=3,z=41234,1234123.456001,123.456001,123.5,123.46,1.23e.456000aHello,world!Hello,world!HelloHelloHel27格式化輸入函數(shù)scanf()

:從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)上輸入信息一般形式:scanf(“控制字符串”,地址表列)#include<stdio.h>控制字符串:%[<修飾符>]<格式字符>28l修飾符功能hm*用于d,o,x前,指定輸入為short型整數(shù)用于d,o,x前,指定輸入為long型整數(shù)用于e,f前,指定輸入為double型實(shí)數(shù)指定輸入數(shù)據(jù)寬度,遇空格或不可轉(zhuǎn)換字符則結(jié)束抑制符,指定輸入項(xiàng)讀入后不賦給變量例scanf(“%4d%2d%2d”,&yy,&mm,&dd);

輸入19991015

則1999yy,10mm,15dd例scanf(“%3d%*4d%f”,&k,&f);

輸入12345678765.43

則123k,8765.43f例scanf(“%2d%*3d%2d”,&a,&b);

輸入1234567

則12a,67b例scanf(“%3c%2c”,&c1,&c2);

輸入abcde

則‘a(chǎn)’c1,‘d’c229輸入分隔符的指定一般以空格、TAB或回車鍵作為分隔符其他字符做分隔符:格式串中兩個(gè)格式符間字符例scanf(“%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%d\n”,a,b,c);

輸入123123123

輸出a=123,b=83,c=291例scanf(“%d:%d:%d”,&h,&m,&s);

輸入12:30:45則12h,30m,45s例scanf(“%d,%d”,&a,&b)

輸入3,4

則3a,4b例scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);

輸入a=12,b=24,c=3630說(shuō)明:用“%c”格式符時(shí),空格和轉(zhuǎn)義字符作為有效字符輸入scanf(“%c%c%c”,&c1,&c2,&c3);

若輸入abc

則ac1,

c2,bc3輸入數(shù)據(jù)時(shí),遇以下情況認(rèn)為該數(shù)據(jù)結(jié)束:遇空格、TAB、或回車遇寬度結(jié)束遇非法輸入scanf(“%d%c%f”,&a,&b,&c);

若輸入1234a123o.26

則1234a,‘a(chǎn)’b,123c31輸入函數(shù)留下的“垃圾”例intx;charch;scanf(“%d”,&x);scanf(“%c”,&ch);printf(“x=%d,ch=%d\n”,x,ch);執(zhí)行:123

輸出:x=123,ch=10解決方法:(1)用getchar()清除(2)用函數(shù)fflush(stdin)清除全部剩余內(nèi)容(3)用格式串中空格或“%*c”來(lái)“吃掉”32例intx;charch;scanf(“%d”,&x);ch=getchar();printf(“x=%d,ch=%d\n”,x,ch);執(zhí)行:123

輸出:x=123,ch=10例intx;charch;scanf(“%d”,&x);

scanf(“%c”,&ch);或scanf(“%*c%c”,&ch);

333.2.2其它輸入輸出putchar()函數(shù):向標(biāo)準(zhǔn)輸出設(shè)備輸出一個(gè)字符格式:putchar(ch)ch為一個(gè)字符變量或常量#include<stdio.h>intmain(){

charc;

c='B';

putchar(c);

putchar('\x42');

putchar(0x42);

return0;}

BBB34getchar()函數(shù):從鍵盤輸入的一個(gè)字符格式:getchar()#include<stdio.h>intmain(){charch;ch=getchar();putchar(ch);printf("%d\n",ch);return0;}353.2.3C語(yǔ)言語(yǔ)句控制語(yǔ)句:用來(lái)完成控制功能。if…elsefor()、while()、do…whilecontinuebreakswitchreturn函數(shù)調(diào)用語(yǔ)句:用來(lái)實(shí)現(xiàn)函數(shù)調(diào)用,由函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成。表達(dá)式語(yǔ)句:由一個(gè)表達(dá)式加一個(gè)分號(hào)構(gòu)成,最典型的是賦值表達(dá)式加一個(gè)分號(hào)構(gòu)成賦值語(yǔ)句??照Z(yǔ)句:;復(fù)合語(yǔ)句:當(dāng)一個(gè)語(yǔ)句不能完成某一功能,需要用多個(gè)語(yǔ)句才能實(shí)現(xiàn),這時(shí)用{}把這些語(yǔ)句括起來(lái),構(gòu)成復(fù)合語(yǔ)句。363.2.4順序結(jié)構(gòu)程序設(shè)計(jì)例3.10:編寫一個(gè)程序,從鍵盤上輸入兩個(gè)整數(shù),輸出其中最大者。#include<stdio.h>intmain(){ intx,y,max; scanf("%d%d",&x,&y); max=x>y?x:y; printf("max=%d\n",max); return0;}373.3條件語(yǔ)句3.3.1if語(yǔ)句3.3.2if…else語(yǔ)句3.3.3if…elseif語(yǔ)句3.3.4條件語(yǔ)句的嵌套3.3.5條件語(yǔ)句的應(yīng)用383.3.1if語(yǔ)句格式:if(表達(dá)式){

語(yǔ)句序列}39說(shuō)明:表達(dá)式可以是任何類型的表達(dá)式,只要值是非0就是真,是0就是假。語(yǔ)句序列既可以為單條語(yǔ)句,也可以是復(fù)合語(yǔ)句。if語(yǔ)句表達(dá)式必須書寫在小括號(hào)()內(nèi),如果省略編譯會(huì)出現(xiàn)語(yǔ)法出錯(cuò)。40例3.12:從鍵盤輸入一個(gè)整數(shù),如果該整數(shù)為奇數(shù)則將其乘3加1后輸出,如果為偶數(shù)則直接輸出。41例3.13:從鍵盤輸入三個(gè)整數(shù)a、b、c,對(duì)這三個(gè)數(shù)從小到大排序#include<stdio.h>intmain(){inta,b,c,t;scanf("%d%d%d",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%d,%d,%d\n",a,b,c);return0;}423.3.2if…else語(yǔ)句格式:if(表達(dá)式)

{

語(yǔ)句序列1}else{

語(yǔ)句序列2}43例3.14:從鍵盤上輸入兩個(gè)整數(shù),求它們的最大值。#include<stdio.h>intmain(){ inta,b,max; scanf("%d%d",&a,&b); if(a>b) max=a; else max=b; printf("最大值:%d\n",max); return0;}44例3.15:從鍵盤輸入一個(gè)整數(shù),如果該整數(shù)為奇數(shù)則將其乘3加1后輸出,如果為偶數(shù)則除以2輸出。#include<stdio.h>intmain(){intn,b;scanf("%d",&n);if(n%2==1) b=3*n+1;else b=n/2;printf("變換后的數(shù)為:%d\n",b);return0;}453.3.3if…elseif語(yǔ)句格式:

if(表達(dá)式1)

{

語(yǔ)句序列1}elseif(表達(dá)式2)

{

語(yǔ)句序列2}elseif(表達(dá)式3)

{

語(yǔ)句序列3}

…else{

語(yǔ)句序列n}46說(shuō)明:語(yǔ)句序列為單條語(yǔ)句,{}可以省略。if…elseif滿足完全排斥的特性,絕不會(huì)出現(xiàn)某次執(zhí)行了其中兩路分支以上的情況。if…elseif語(yǔ)句中的elseif可以有有限多個(gè),取決于編程的實(shí)際需求。47例3.16:從鍵盤上輸入字符,判斷輸入字符的種類。#include<stdio.h>intmain(){charc;printf("輸入一個(gè)字符:");c=getchar();if(c<32)printf("是控制字符\n");elseif(c>='0'&&c<='9')printf("是數(shù)字字符\n");elseif(c>='A'&&c<='Z'||c>='a'&&c<='z')printf("是字母\n");elseprintf(“是其他字符\n"); return0;}輸入一個(gè)字符:ctrl回車,是控制字符輸入一個(gè)字符:A回車,是字母輸入一個(gè)字符:9回車,是數(shù)字字符輸入一個(gè)字符:/回車,是其他字符48例3.17:已知2010年12月1日為星期三,從鍵盤上輸入1~31之間的整數(shù),按下述格式輸出該日是星期幾的信息在對(duì)應(yīng)欄下。2010年12月日歷SunMonTueWenTurFriSta----------------------------------------------149if(weekday==0) printf("%2d\n",date);elseif(weekday==1) printf("%7d\n",date);elseif(weekday==2) printf("%12d\n",date);elseif(weekday==3) printf("%17d\n",date);elseif(weekday==4) printf("%22d\n",date);elseif(weekday==5) printf("%27d\n",date);else printf("%32d\n",date);return0;}#include<stdio.h>intmain(){intdate,weekday,original_date=3;scanf("%d",&date);if(date<1||date>31){ printf("數(shù)據(jù)輸入錯(cuò)誤!\n"); return1;}weekday=(date+original_date-1)%7;printf("2010年12月日歷\n");printf("----------------------------------\n");printf("SunMonTueWenThrFriSta\n");printf("----------------------------------\n");50例3.18輸入學(xué)生的成績(jī),輸出學(xué)生的等級(jí):90~100(優(yōu))、80~89(良)、70~79(中)、60~69(及格)、60分以下(不及格)。#include<stdio.h>#include<stdlib.h>intmain(){ intcj; scanf("%d",&cj); if(cj<0||cj>100) { printf("數(shù)據(jù)輸入錯(cuò)誤\n"); exit0; } if(cj>=90&&cj<=100) printf("優(yōu)\n"); elseif(cj>=80&&cj<90) printf("良\n"); elseif(cj>=70&&cj<80) printf("中\(zhòng)n"); elseif(cj>=60&&cj<70) printf("及格\n"); else printf("不及格\n"); return0;}513.3.4條件語(yǔ)句的嵌套嵌套具有else子句的if語(yǔ)句if(表達(dá)式1)if(表達(dá)式2)

語(yǔ)句序列1else

語(yǔ)句序列2嵌套不含else子句的if語(yǔ)句

if(表達(dá)式1)

語(yǔ)句序列1elseif(表達(dá)式2)

語(yǔ)句序列2一般形式if(表達(dá)式1)if(表達(dá)式2)

語(yǔ)句序列1else

語(yǔ)句序列2elseif(表達(dá)式3)

語(yǔ)句序列3else

語(yǔ)句序列452if~else配對(duì)原則:缺省{}時(shí),else總是和它上面離它最近的未配對(duì)的if配對(duì)if(……)if(……)if(……)else…...else…...else…...53例: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正確配對(duì)方法:加{}54例3.19:判斷兩個(gè)數(shù)的大小關(guān)系#include<stdio.h>intmain(){intx,y;printf("輸入兩個(gè)整數(shù)x,y:");scanf("%d,%d",&x,&y);if(x!=y)if(x>y) printf("x>y\n");else printf("x<y\n");elseprintf("x==y\n");return0;}輸入兩個(gè)整數(shù)

x,y:12,23回車x<y輸入兩個(gè)整數(shù)

x,y:20,10回車x>y輸入兩個(gè)整數(shù)

x,y:12,12回車x==y553.3.5條件語(yǔ)句的應(yīng)用例3.21:輸入年份,判斷是否為閏年。例3.22:從鍵盤輸入一元二次方程的系數(shù)a、b、c,求它的根。56573.4多分支語(yǔ)句3.4.1switch多分支語(yǔ)句3.4.2多分支語(yǔ)句的嵌套3.4.3多分支語(yǔ)句應(yīng)用583.4.1switch多分支語(yǔ)句多分支語(yǔ)句switch的格式:switch(表達(dá)式){caseE1:

語(yǔ)句序列1;

caseE2:

語(yǔ)句序列2;

……caseEn:

語(yǔ)句序列n;

[default:

默認(rèn)語(yǔ)句序列;]}59說(shuō)明:switch后面表達(dá)式的值必須是整型或字符型。E1,E2,…En是常量表達(dá)式,且值必須互不相同。每個(gè)case語(yǔ)句的冒號(hào)后面可以是0條或多條語(yǔ)句,多條語(yǔ)句時(shí),可以不加{}。各case的順序可以是任意的。允許多個(gè)case語(yǔ)句使用同一語(yǔ)句序列。default語(yǔ)句不是必須的。每個(gè)case后面語(yǔ)句序列里的break語(yǔ)句可有可無(wú),但執(zhí)行效果不同。60#include<stdio.h>#include<stdlib.h>intmain(){intscore;scanf("%d",&score);

if(score<0||score>100){ printf("輸入數(shù)據(jù)錯(cuò)誤\n"); exit(0);}switch(score/10){ case10: case9:printf("優(yōu)秀\n");break; case8:printf("良好\n");break; case7:printf("中等\n");break; case6:printf("及格\n");break;default:printf("不及格\n");break;}return0;}613.4.2多分支語(yǔ)句的嵌套switch語(yǔ)句嵌套if語(yǔ)句switch(…){

…… if(…) {

…… } else {

…… }

語(yǔ)句序列}switch語(yǔ)句嵌套switch語(yǔ)句

switch(…){

……switch(…){

語(yǔ)句序列1}

語(yǔ)句序列2}if語(yǔ)句嵌套switch語(yǔ)句623.4.3多分支語(yǔ)句應(yīng)用例3.24:已知銀行整存整取存款不同期限的年利率分別為:

2.25%期限1年

2.79%期限2年年息=3.33%期限3年

3.60%期限5年

4.14%期限8年要求輸入本金和期限,求到時(shí)候能從銀行得到的利息與本金的合計(jì)。63#include<stdio.h>intmain(){ intyear; doublemoney,rate,total; printf("輸入存款和存期:"); scanf("%lf%d",&money,&year); switch(year) { case1:rate=0.0225;break; case2:rate=0.0279;break; case3:rate=0.0333;break; case5:rate=0.0360;break; case8:rate=0.0414;break; default:rate=0.0;printf("輸入的存期錯(cuò)誤!\n");break; } total=money+money*rate*year; printf("從銀行獲得的總金額為:%.2lf\n",total); return0;}64例3.25:從鍵盤上輸入年份和月份,求該月有多少天?653.5循環(huán)語(yǔ)句3.5.1while循環(huán)語(yǔ)句3.5.2do…while循環(huán)語(yǔ)句3.5.3for循環(huán)語(yǔ)句3.5.4循環(huán)語(yǔ)句的嵌套663.5.1while循環(huán)語(yǔ)句格式:while(表達(dá)式){

語(yǔ)句序列}語(yǔ)句序列稱為循環(huán)體,當(dāng)為一條語(yǔ)句時(shí),表示復(fù)合語(yǔ)句的{}可以省略。表達(dá)式可以為任何類型先判斷,后執(zhí)行,若條件不成立,有可能一次也不執(zhí)行。語(yǔ)句序列中必須有改變while后面括號(hào)的表達(dá)式值的語(yǔ)句,否則有可能死循環(huán)。67例3.26:從鍵盤上輸入多個(gè)整數(shù),計(jì)算機(jī)它們的和并輸出,輸入0表示數(shù)據(jù)輸入結(jié)束68例3.27:輸入一個(gè)正整數(shù),將它反位組成一個(gè)新的數(shù)輸出(如輸入12345,組成54321輸出)693.5.2do…while循環(huán)語(yǔ)句格式:do{

語(yǔ)句序列}while(表達(dá)式);語(yǔ)句序列稱為循環(huán)體,當(dāng)為一條語(yǔ)句時(shí),表示復(fù)合語(yǔ)句的{}可以省略。表達(dá)式可以為任何類型。其特點(diǎn)是先執(zhí)行,后判斷,若條件不成立,就跳出循環(huán)。語(yǔ)句序列中必須有改變while后面括號(hào)的表達(dá)式值的語(yǔ)句,否則有可能死循環(huán)。while(表達(dá)式)后面的“;”不能少。70用do…while語(yǔ)句重新編寫例3.26的問(wèn)題#include<stdio.h>intmain(){intx,sum=0;do{ scanf("%d",&x); sum=sum+x;}while(x!=0);printf("sum=%d\n",sum);return0;}例3.26:從鍵盤上輸入多個(gè)整數(shù),計(jì)算機(jī)它們的和并輸出,輸入0表示數(shù)據(jù)輸入結(jié)束71例3.29:從鍵盤上輸入兩個(gè)整數(shù),求它們的最大公約數(shù)。輾轉(zhuǎn)相除法迭代法72while語(yǔ)句和do…while語(yǔ)句比較while語(yǔ)句是先判斷后執(zhí)行,只要不滿足條件,循環(huán)體語(yǔ)句根本不會(huì)執(zhí)行do…while語(yǔ)句是先執(zhí)行后判斷,不管條件是否滿足,循環(huán)體語(yǔ)句總會(huì)執(zhí)行一次#include<stdio.h>intmain(){inti,sum=0;scanf("%d",&i);while(i<=10){sum+=i; i++;}printf("%d",sum);return0;}#include<stdio.h>intmain(){inti,sum=0;scanf("%d",&i);do{sum+=i;i++;}while(i<=10);printf("%d",sum);return0;}733.5.3for循環(huán)語(yǔ)句格式:for(<表達(dá)式1>;<表達(dá)式2>;<表達(dá)式3>){

語(yǔ)句序列}語(yǔ)句序列稱為循環(huán)體。當(dāng)語(yǔ)句序列只有單條語(yǔ)句,表示復(fù)合語(yǔ)句的{}可以省略。表達(dá)式1一般為賦值表達(dá)式,給控制變量賦初值??梢允÷?。表達(dá)式2一般為關(guān)系表達(dá)式或邏輯表達(dá)式,稱為循環(huán)控制條件??梢允÷?。表達(dá)式3一般為賦值表達(dá)式,給控制變量增量或減量??梢允÷?。for(;;)也是合法的。74#include<stdio.h>#include<stdlib.h>intmain(){inti,sum=0,p=1,n;scanf("%d",&n);if(n<0){ printf("負(fù)數(shù)沒有階乘!\n"); exit(0);}for(i=1;i<=n;i++){ p=p*i; sum=sum+p;}printf("階乘的和為:%d\n",sum);return0;}例3.30:計(jì)算75例3.31:從輸入一個(gè)正整數(shù),判斷該數(shù)是否為素?cái)?shù)#include<stdio.h>#include<math.h>#include<stdlib.h>intmain(){inti,m,n;scanf("%d",&n);if(n<0){ printf("輸入數(shù)據(jù)錯(cuò)誤!\n"); exit(0);}m=sqrt(n);for(i=2;i<=m;i++)if(n%i==0)break;if(i>m) printf("%d是素?cái)?shù)\n",n);else printf("%d不是素?cái)?shù)\n",n);return0;}76例3.32:求所有水仙花數(shù)#include<stdio.h>intmain(){inti,m,n,k;for(i=100;i<1000;i++){ m=i/100; k=i%10; n=(i-100*m)/10; if(i==m*m*m+n*n*n+k*k*k) printf("%d",i);}return0;}773.5.4循環(huán)語(yǔ)句的嵌套循環(huán)語(yǔ)句的嵌套:一個(gè)循環(huán)語(yǔ)句的循環(huán)體中又包含循環(huán)語(yǔ)句while(){……while(){

……}

…...}do{……do{

……}while();

…...}while();while(){……do{

……

}while();

…….}for(;;){……do{

……}while();

……while(){

……}

…...}三種循環(huán)可互相嵌套,層數(shù)不限。外層循環(huán)可包含兩個(gè)以上內(nèi)循環(huán),但不能相互交叉。嵌套循環(huán)的執(zhí)行流程:外層循環(huán)執(zhí)行一次,內(nèi)層循環(huán)要執(zhí)行完。嵌套循環(huán)的跳轉(zhuǎn):只能跳轉(zhuǎn)出本層循環(huán)。禁止從外層跳入內(nèi)層、禁止跳入同層的另一循環(huán)和向上跳轉(zhuǎn)。78例3.33:編寫C語(yǔ)言程序,輸出乘法九九表。

乘法九九表-------------------------------------------------------123456789---------------------------------------------------------1123456789224681012141618336912151821242744812162024283236551015202530354045661218243036424854771421283542495663881624324048566472991827364554637281---------------------------------------------------------7980#include<stdio.h>intmain(){inti,j;printf("\n---------------------------------------\

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論