![第3章算法與控制語(yǔ)句_第1頁(yè)](http://file4.renrendoc.com/view10/M02/2C/33/wKhkGWV2mBmAU_ctAACKjMP-2MQ955.jpg)
![第3章算法與控制語(yǔ)句_第2頁(yè)](http://file4.renrendoc.com/view10/M02/2C/33/wKhkGWV2mBmAU_ctAACKjMP-2MQ9552.jpg)
![第3章算法與控制語(yǔ)句_第3頁(yè)](http://file4.renrendoc.com/view10/M02/2C/33/wKhkGWV2mBmAU_ctAACKjMP-2MQ9553.jpg)
![第3章算法與控制語(yǔ)句_第4頁(yè)](http://file4.renrendoc.com/view10/M02/2C/33/wKhkGWV2mBmAU_ctAACKjMP-2MQ9554.jpg)
![第3章算法與控制語(yǔ)句_第5頁(yè)](http://file4.renrendoc.com/view10/M02/2C/33/wKhkGWV2mBmAU_ctAACKjMP-2MQ9555.jpg)
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年罩極型電動(dòng)機(jī)項(xiàng)目可行性研究報(bào)告
- 成都四川省人民醫(yī)院蒲江醫(yī)院·蒲江縣人民醫(yī)院編外護(hù)理人員招聘3人筆試歷年參考題庫(kù)附帶答案詳解
- 2025年熱彎爐項(xiàng)目可行性研究報(bào)告
- 2025年槳葉-微粉兩級(jí)干燥系統(tǒng)項(xiàng)目可行性研究報(bào)告
- 2025年旋轉(zhuǎn)式膜電位器項(xiàng)目可行性研究報(bào)告
- 2025年差動(dòng)軸項(xiàng)目可行性研究報(bào)告
- 2025年噴氣織機(jī)邊撐項(xiàng)目可行性研究報(bào)告
- 2025年利巴韋林滴眼液項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)3-丙二醇行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年高純錳礦項(xiàng)目投資價(jià)值分析報(bào)告
- 學(xué)校幼兒花名冊(cè)模板
- SB/T 10415-2007雞粉調(diào)味料
- 考古繪圖基礎(chǔ)
- GB/T 32574-2016抽水蓄能電站檢修導(dǎo)則
- 《社會(huì)主義市場(chǎng)經(jīng)濟(jì)理論(第三版)》第十三章社會(huì)主義市場(chǎng)經(jīng)濟(jì)標(biāo)準(zhǔn)論
- 變更索賠案例分析
- 過(guò)敏性休克的急救及處理流程教材課件(28張)
- 《花婆婆》兒童繪本故事
- DB44∕T 2149-2018 森林資源規(guī)劃設(shè)計(jì)調(diào)查技術(shù)規(guī)程
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter10 Hashing
- 機(jī)動(dòng)車牌證申請(qǐng)表格模板(完整版)
評(píng)論
0/150
提交評(píng)論