版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)1一、實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的控制語(yǔ)句二、循環(huán)嵌套三、循環(huán)結(jié)構(gòu)程序舉例主要內(nèi)容2一、實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的控制語(yǔ)句while語(yǔ)句do-while語(yǔ)句for語(yǔ)句break、continue語(yǔ)句幾種循環(huán)的比較3格式while(表達(dá)式)語(yǔ)句§5.1while語(yǔ)句舉例P79求1~10的累加和。i=1sum=0當(dāng)i<=10sum=sum+ii++輸出sum#include"stdio.h"intmain(){inti,sum;i=1;sum=0;while(i<=10){
sum=sum+i;i++;}printf("sum=%5d\n",sum);return0;}說(shuō)明1、循環(huán)體如果包含一個(gè)以上的語(yǔ)句,必須使用復(fù)合語(yǔ)句形式。2、在循環(huán)體中,必須有使循環(huán)條件趨向于不滿(mǎn)足(假)的語(yǔ)句。3、先判斷后執(zhí)行。1求1~100的累加和.2求1~10的奇數(shù)和.3求N!表達(dá)式循環(huán)體語(yǔ)句不成立
成立?4
求1到10的奇數(shù)和舉例#include"stdio.h"intmain(){inti,sum;i=1;sum=0;while(i<=10){
sum=sum+i;i+=2;}printf("sum=%5d\n",sum);return0;}運(yùn)行結(jié)果:5#include<stdio.h>voidmain(){inti,sum=0;i=1;while(i<=10){if(i%2==0)sum=sum+i;i++;}printf("%d\n",sum);}運(yùn)行結(jié)果:求1到10之間的偶數(shù)和舉例6舉例求N!#include<stdio.h>voidmain(){ inti=1,n; floatfac=1; printf("請(qǐng)輸入n:"); scanf("%d",&n); while(i<=n){fac=fac*i;i++;} printf("%.0f\n",fac);}運(yùn)行結(jié)果:7利用公式:sum=1-3+5-7+9-11…求前10項(xiàng)的和。#include<stdio.h>voidmain(){ints,i,sum,t,n;i=0;n=1,sum=0,t=1,s=1;while(i<10){sum=sum+t;n=n+2;s=-s;t=s*n;i++;}printf("sum=%d\n",sum);}s:變化的符號(hào)i:第i項(xiàng)n:第i項(xiàng)的絕對(duì)值t:第i項(xiàng)的值sum:和舉例運(yùn)行結(jié)果:8舉例例5.2設(shè)s=1×2×3×……×n,求s不大于400000時(shí)最大的n。#include<stdio.h>intmain(){ intn=1; longints=1; while(s<=400000) {n=n+1;s=s*n; } printf("不大于400000時(shí)的最大n為:%d\ns值為:%ld\n",n-1,s/n); return0;}運(yùn)行結(jié)果:前n項(xiàng)的乘積P819舉例例5.3現(xiàn)有某班20名學(xué)生的C語(yǔ)言成績(jī),求該班學(xué)生的C語(yǔ)言的平均成績(jī)。運(yùn)行結(jié)果:
請(qǐng)輸入學(xué)生成績(jī):23凵89凵67凵78凵94凵56凵34凵83凵90
凵67凵48凵72凵81凵65凵74凵87凵73凵67凵90凵98
20名學(xué)生的C語(yǔ)言平均成績(jī)?yōu)椋?1.8#include<stdio.h>intmain(){floattotal=0,score,average;inti=1;printf("請(qǐng)輸入學(xué)生成績(jī):");while(i<=20){ scanf("%f",&score);total=total+score;i++;}average=total/20;printf("20名學(xué)生的C語(yǔ)言平均成績(jī)?yōu)椋?.1f\n",average);return0;}total:前i名學(xué)生的成績(jī)的和score:每一名學(xué)生的成績(jī)average:
平均成績(jī)P8110格式do
循環(huán)體語(yǔ)句while(表達(dá)式);§5.2do-while語(yǔ)句舉例P85求1~10的累加和。#include"stdio.h"intmain(){inti,sum;i=1;sum=0;
do
{sum=sum+i;i++;
}while(i<=10);printf("sum=%5d\n",sum);return0;}說(shuō)明1、循環(huán)體如果包含一個(gè)以上的語(yǔ)句,必須使用復(fù)合語(yǔ)句形式。2、在循環(huán)體中,必須有使循環(huán)條件趨向于不滿(mǎn)足(假)的語(yǔ)句。3、先執(zhí)行,后判斷。i=1sum=0當(dāng)i<=10(直到i>10)輸出sumsum=sum+ii++表達(dá)式循環(huán)體語(yǔ)句假真至少執(zhí)行一次11舉例while和do-while循環(huán)的比較。#include<stdio.h>voidmain(){inti,sum=0;scanf("%d",&i);while(i<=10)
{sum=sum+i;i++;
}printf("sum=%d\n",sum);}#include<stdio.h>voidmain(){inti,sum=0;scanf("%d",&i);
do{sum=sum+i;i++;
}while(i<=10);printf("sum=%d\n",sum);}輸入:1
輸入:11sum=55輸出:sum=55sum=0輸出:sum=11此程序的功能?什么情況下兩者結(jié)果相同?12格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句P87for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)語(yǔ)句執(zhí)行過(guò)程(1)先求解表達(dá)式1;(2)求解表達(dá)式2,若其值為真,則執(zhí)行循環(huán)體語(yǔ)句,然后執(zhí)行第(3)步;若為假,則結(jié)束循環(huán),轉(zhuǎn)到第(5)步;(3)求解表達(dá)式3;(4)轉(zhuǎn)向步驟(2);(5)循環(huán)結(jié)束,執(zhí)行for語(yǔ)句下面的一個(gè)語(yǔ)句。表達(dá)式2循環(huán)體語(yǔ)句假
真求解表達(dá)式1求解表達(dá)式3§5.3for語(yǔ)句13舉例求1~100的累加和。#include<stdio.h>voidmain(){inti,sum;sum=0;
for(i=1;i<=100;i++)
sum=sum+i;printf("sum=%5d\n",sum);}?1求1~50的累加和.2求1~100的奇數(shù)和.3求N!i=1;while(i<=100){sum=sum+i;i++;}14for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句說(shuō)明三個(gè)表達(dá)式都可以省略。表達(dá)式2循環(huán)體語(yǔ)句假
真求解表達(dá)式3表達(dá)式1省略需在循環(huán)體外賦初值循環(huán)體語(yǔ)句求解表達(dá)式1求解表達(dá)式3表達(dá)式2省略恒真循環(huán)表達(dá)式2循環(huán)體語(yǔ)句假
真求解表達(dá)式1表達(dá)式3省略?xún)煞N情況?結(jié)果?15說(shuō)明1i=1;for(;i<=10;i++)sum=sum+i;2for(i=1;
;i++)sum=sum+i;?3for(i=1;i<=10;){sum=sum+i;i++;}for(i=1;i<=10;i++)sum=sum+i;表達(dá)式1可以省略,但其后的分號(hào)不可以省略。沒(méi)有循環(huán)結(jié)束條件,構(gòu)成了死循環(huán)for(i=1;i<=10;i++)sum=sum+i;i=1while(1){sum=sum+i;i++;}16說(shuō)明45for(;;)sum=sum+i;6表達(dá)式1和表達(dá)式3可以是與循環(huán)變量無(wú)關(guān)的表達(dá)式。for(;i<=10;){sum=sum+i;i++;}7表達(dá)式2一般是關(guān)系表達(dá)式,也可以是數(shù)值或字符表達(dá)式。while(i<=10){sum=sum+i;i++;}while(1)sum=sum+i;表達(dá)式1和表達(dá)式3可以同時(shí)省略,此時(shí)等同于while語(yǔ)句。for(sum=0,i=1;i<=100;i++)sum=sum+i;例建議:for語(yǔ)句中只放與循環(huán)控制有關(guān)的語(yǔ)句。17說(shuō)明1、三種循環(huán)語(yǔ)句在處理循環(huán)問(wèn)題時(shí),一般可以相互替代。2、對(duì)于循環(huán)次數(shù)固定的問(wèn)題,用for語(yǔ)句實(shí)現(xiàn)比較簡(jiǎn)單。3、對(duì)于循環(huán)次數(shù)不確定的問(wèn)題,可用while語(yǔ)句或do-while語(yǔ)句實(shí)現(xiàn)。4、while語(yǔ)句:先判斷,后執(zhí)行。
do-while語(yǔ)句:先執(zhí)行,后判斷。幾種循環(huán)語(yǔ)句的比較18格式while(表達(dá)式1){…if(表達(dá)式2)break;
…}§5.4break/continue語(yǔ)句舉例…...sum=0;for(i=1;i<=10;i++){if(i>5)break;sum=sum+i;}printf(“sum=%5d\n”,sum);…...while(表達(dá)式1){…if(表達(dá)式2)conitue;
…}結(jié)束整個(gè)循環(huán)結(jié)束本次循環(huán)…...sum=0;for(i=1;i<=10;i++){if(i<=5)continue;sum=sum+i;}printf(“sum=%5d\n”,sum);…...1到5的累加和6到10的累加和19舉例例5.11分析下面程序的運(yùn)行結(jié)果。P90結(jié)束整個(gè)循環(huán)#include<stdio.h>intmain(){inti=0,a=0;while(i<20){if(i%10==0)break;elsei++;}i+=11;a+=i;printf("%d\n",a);return0;}ii%10第1次執(zhí)行循環(huán)00條件表達(dá)式i%10==0成立,執(zhí)行break語(yǔ)句,跳出循環(huán)運(yùn)行結(jié)果:1120舉例例5.12輸出100以?xún)?nèi)能被7整除的最大數(shù)。P91結(jié)束整個(gè)循環(huán)#include"stdio.h"intmain(){intn;for(n=100;n>=1;n--)if(n%7==0){printf("100以?xún)?nèi)能被7整除的最大數(shù)為:%d\n",n);break;}return0;}nn%7第1次執(zhí)行循環(huán)1002第2次執(zhí)行循環(huán)99
1第3次執(zhí)行循環(huán)980第4次執(zhí)行循環(huán)時(shí)條件表達(dá)式n%7==0成立,執(zhí)行break語(yǔ)句,跳出循環(huán)運(yùn)行結(jié)果:100以?xún)?nèi)能被7整除的最大數(shù)為:9821舉例例5.13分析下面程序的運(yùn)行結(jié)果。P92結(jié)束本次循環(huán)#include"stdio.h"intmain(){inti=0,s=0;do
{if(i%2)
{i++;continue;
}i++;s+=i;
}while(i<7);printf("%d\n",s);return0;}
ii%2i++scontinue
是否執(zhí)行第1次執(zhí)行循環(huán)0011否第2次執(zhí)行循環(huán)1
121是第3次執(zhí)行循環(huán)2034
否第4次執(zhí)行循環(huán)3144
是第5次執(zhí)行循環(huán)4059否第6次執(zhí)行循環(huán)5169是第7次執(zhí)行循環(huán)60716否此時(shí)條件表達(dá)式1<7不成立,結(jié)束循環(huán)運(yùn)行結(jié)果:16S=1+3+5+722#include<stdio.h>voidmain(){inti;for(i=1;i<=5;i++){ if(i>3)break; if(i%2)printf("*"); elsecontinue; printf("#"); }printf("$\n");}分析如下程序的輸出結(jié)果:*#*#$舉例23舉例例5.14把100~200之間的能被13整除的數(shù)輸出。P92#include"stdio.h"
intmain()
{
intn;
for(n=100;n<=200;n++)
{
if(n%13!=0)
continue;
else
printf("%d",n);
}
printf("\n");
return0;
}運(yùn)行結(jié)果:104117130143156169182195#include"stdio.h"
intmain()
{
intn;
for(n=100;n<=200;n++)
if(n%13==0)
printf("%d",n);
printf("\n");
return0;
}24概念一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱(chēng)為循環(huán)嵌套。舉例例5.15馬克思曾經(jīng)做過(guò)這樣一道趣味數(shù)學(xué)題:有30個(gè)人在一家小飯館里用餐,其中有男人、女人和小孩。每個(gè)男人花3先令,每個(gè)女人花2先令,每個(gè)小孩花1先令,共花去50先令。問(wèn)男人、女人和小孩各幾人(男人、女人和小孩均存在)?P83#include"stdio.h"intmain(){intman,women,child;for(man=1;man<16;man++) for(women=1;women<=23;women++) {child=30-man-women; if(man*3+women*2+child*1==50) printf("man=%-6dwowen=%-6dchild=%-6d\n",man,women,child);}return0;}§5.5循環(huán)嵌套男人人數(shù),最多15人(16*3=48)女人人數(shù),最多23人(24*2=48)小孩人數(shù)=30-man-women25運(yùn)行結(jié)果:man=1women=18chile=11man=2women=16chile=12man=3women=14chile=13man=4women=12chile=14man=5women=10chile=15man=6women=8chile=16man=7women=6chile=17man=8women=4chile=18man=9women=2chile=192627概念一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱(chēng)為循環(huán)嵌套。1234246836912481216舉例打印乘法口訣表。#include<stdio.h>voidmain(){inti,j;for(i=1;i<=4;i++)
{for(j=1;j<=4;j++)printf("%4d",i*j);printf("\n");
}}i=1,j=11*1
j=21*2
j=31*3
j=41*4i=2,j=12*1
j=2……i=3i=4fori=1to4輸出i*jforj=1to4換行§5.5循環(huán)嵌套第六章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)28124369481216#include<stdio.h>voidmain(){inti,j;for(i=1;i<=4;i++)
{for(j=1;j<=i;j++)printf("%4d",i*j);printf("\n");
}}§5.5循環(huán)嵌套思考1第六章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)29#include<stdio.h>voidmain(){inti,j;for(i=1;i<=4;i++)
{for(j=1;j<=5-i;j++)printf("%4d",i*j);printf("\n");
}}§5.5循環(huán)嵌套思考21234246364第六章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)30#include<stdio.h>voidmain(){inti,j;for(i=1;i<=4;i++)
{for(j=1;j<=4-i;j++)
printf(“%4d”,’‘);
for(j=5-i;j<=4;j++)printf(“%4d”,i*j);
printf(“\n”);
}}§5.5循環(huán)嵌套思考34686912481216第六章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)31#include<stdio.h>voidmain(){inti,j;for(i=1;i<=4;i++)
{for(j=1;j<=i-1;j++)printf(“%4d”,’‘);for(j=i;j<=4;j++)printf(“%4d”,i*j);printf(“\n”);
}}§5.5循環(huán)嵌套思考4123446891216第六章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)32舉例例5.16打印乘法口訣表。P95#include"stdio.h"intmain(){inti,j,result;for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
result=i*j;//計(jì)算i行j列上的元素值
printf("%d*%d=%-3d\t",i,j,result);
}printf("\n");
}return0;}resulti=1,j=11*1j=21*2j=31*3
┇
j=91*9i=2,j=12*1j=22*2
┇j=92*9……i=9,j=19*1j=29*2┇j=99*91*1=11*2=2…1*9=92*1=22*2=4…2*9=18…9*1=99*2=18…9*9=8133#include"stdio.h"intmain(){inti,j,result;for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
result=i*j;//計(jì)算i行j列上的元素值
printf("%d*%d=%-3d\t",i,j,result);
}printf("\n");
}return0;}resulti=1,j=11*1j=21*2j=31*3
┇
j=91*9i=2,j=12*1j=22*2
┇j=92*9……i=9,j=19*1j=29*2┇j=99*934舉例例5.17求Fibonacci數(shù)列的前40個(gè)數(shù)。按每行4個(gè)進(jìn)行輸出。#include"stdio.h"intmain(){intn;longf1,f2;f1=1;f2=1;printf("%10d%10d",f1,f2);for(n=1;n<=19;n++){if(n%2==0)
printf(“\n”);//每行輸出4個(gè)
f1=f1+f2;f2=f2+f1;printf("%10d%10d",f1,f2);}printf("\n");return0;}特點(diǎn):第1、2個(gè)數(shù)為1、1。從第三個(gè)數(shù)開(kāi)始,該數(shù)是其前面兩個(gè)數(shù)之和。F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n>=3)P961123581321345589144……§5.6程序舉例35輸出下列圖形:112123123412345123456123456712345678123456789#include"stdio.h"intmain(){inti,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++) printf("%3d",j);
printf("\n");}return0;}36舉例例5.4從鍵盤(pán)輸入一個(gè)非負(fù)整數(shù),判斷m是否是素?cái)?shù)。P82素?cái)?shù)(質(zhì)數(shù)):只能被1和它本身整除的數(shù)。判別方法:57:若2~56之間的每一個(gè)數(shù)都不能整除57,則57為素?cái)?shù),否則57不是素?cái)?shù)。m,k=m-1,i=2~k:若每一個(gè)i的值都不能整除m,則m為素?cái)?shù),否則m不是素?cái)?shù)。k=m-1;k=[m/2];[(m+1)/2];k=[sqrt(m)];[sqrt(m+1)]flag=1;k=m-1;for(i=2;i<=k;i++)if(m%i==0)
{
flag=0;
break;
}if(flag==1)printf("yes!");elseprintf("no!");k=m-1;for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1)printf("yes!");elseprintf("no!");37#include<stdio.h>#include<math.h>intmain(){intm,k,i,n=0;scanf("%d",&m);k=sqrt(m+1);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1)printf("%d是素?cái)?shù)",m);elseprintf("%d不是素?cái)?shù)",m);return0;}38#include"math.h"#include"stdio.h"intmain(){ intm,flag=0,i=2; printf("請(qǐng)輸入一個(gè)非負(fù)整數(shù):\n"); scanf("%d",&m); while(i<=sqrt(m)&&flag==0) { if(m%i==0) flag=1;//m不是素?cái)?shù),修改flag的值
elsei++; }
if(flag==0) printf("%d是素?cái)?shù)。\n",m);
else
printf("%d不是素?cái)?shù)。\n",m); return0;}P8239第六章順序結(jié)構(gòu)程序設(shè)計(jì)舉例:求100~200之間的全部素?cái)?shù)。form=101to200
判斷m是否為素?cái)?shù)
若m是素?cái)?shù),則輸出并統(tǒng)計(jì)個(gè)數(shù)n.
每輸出10個(gè)素?cái)?shù),換行#include<stdio.h>#include<math.h>intmain(){intm,k,i,n=0;for(m=101;m<=200;m++)
{k=sqrt(m+1);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1)
{printf("%4d",m);n=n+1;
if(n%10==0)printf("\n");
}}return0;}
if(i>=k+1)
{printf("%4d",m);n=n+1;}if(n%10==0)printf("\n");?40#include<stdio.h>
//輸出100到200之間的素?cái)?shù)#include<math.h>voidmain(){inti,k,m,flag=1;for(m=100;m<200;m++){k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0){
flag=0;
break;}if(flag==1)
printf("%d\t",m);}printf("\n");}?flag=1;41例1利用公式
/4=1-1/3+1/5-1/7+…求
的近似值。直到某一項(xiàng)的絕對(duì)值小于10-6為止。pi=1-1/3+…輸出4*pis=1(-1)n=1,3,5,7…t=s/nt=1,p=0,n=1,s=1當(dāng)|t|>=10-6pi=pi+tn=n+2s=-st=s/npi=pi*4輸出pi#include<stdio.h>#include<math.h>voidmain(){ints;
floatn,t,pi;t=1;pi=0;n=1;s=1;
while(fabs(t)>=1e-6)
{pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf("pi=%10.6f\n",pi);}同類(lèi)題sin(x)=x-x3/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 地皮投資協(xié)合同范例
- 更新造林合同范例
- 工廠鍋爐維修合同范例
- 園林燈飾合同范例
- 家庭電梯購(gòu)買(mǎi)合同范例
- 日雜訂購(gòu)合同范例
- 廈門(mén)房屋出租合同范例
- 商業(yè)車(chē)庫(kù)銷(xiāo)售合同范例
- 標(biāo)準(zhǔn)商用購(gòu)房合同范例
- 合同范例及解釋
- 小學(xué)數(shù)學(xué)教育現(xiàn)狀與發(fā)展趨勢(shì)分析
- 新版袁行霈中國(guó)文學(xué)史第3版
- 特殊教育概論第二版PPT完整全套教學(xué)課件
- 臨床藥學(xué)基地管理細(xì)則
- 中藥飲片采購(gòu)配送服務(wù)投標(biāo)方案
- 中國(guó)流行音樂(lè) 課件-2022-2023學(xué)年高中音樂(lè)湘教版(2019)必修音樂(lè)鑒賞下篇
- 《商務(wù)禮儀》案例分析題匯編
- 孫子兵法-湖南大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 新湘少版英語(yǔ)四年級(jí)上冊(cè):unit10 Welcome to our home!說(shuō)課稿
- 國(guó)開(kāi)機(jī)考《建筑工程質(zhì)量檢驗(yàn)》
- 軍隊(duì)文職招聘考試-數(shù)量關(guān)系100題
評(píng)論
0/150
提交評(píng)論