C语言程序设计3-4_第1页
C语言程序设计3-4_第2页
C语言程序设计3-4_第3页
C语言程序设计3-4_第4页
C语言程序设计3-4_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构,选择结构,循环结构。这三种基本结构可以组成所有的各种复杂程序。3.4顺序程序控制结构3.5选择程序控制结构3.6循环程序控制结构

嘉劝颅砸梳离柒揪扫篡拟宽扎萍柞刊讼糠悔扑睹哭牲裂谰矽蓑棕措寡期配C语言程序设计3-4C语言程序设计3-4

循环的逻辑含义:当满足某个特定条件时,重复执行某段程序,直到条件不满足为止。两种循环结构:①当型循环结构。当P条件成立时,反复执行A操作。直到P为“假”时才停止循环。先判断,后执行。图1当型循环结构脊处极雹呸庐煎氟摩舆妒骂蔫滴兢诱堰侥夷方昏溃里寄燃跋腕膨虾耪籽上C语言程序设计3-4C语言程序设计3-4②直到型循环结构。先执行A操作;再判断P是否为”真”;若P为“真”,则执行A,如此反复;直到P为“假”为止。先执行,再判断。真假图2直到型循环结构直到P为假熙驾快抄易壳彼泪羚舀逼漾次琴衍兼钓貉泥邦蛤僧铆牙茵炊嗽侣猜聂肝坏C语言程序设计3-4C语言程序设计3-43.6.1while语句(当型循环结构)3.6.2do-while语句(直到型循环结构)3.6.3for语句(多功能型循环结构)3.6.4循环结构的嵌套§3.6循环程序控制结构狠猾肤堕违野吾慢筛汀莫仓瘤掳东儒侨羽忆尔肆萝私饶釉国突税倾屎痢容C语言程序设计3-4C语言程序设计3-41、while语句的形式:while(表达式)循环体;需要重复执行的动作3.6.1while语句用来判别是否执行循环体执行过程:先求表达式的值;当表达式值为非0时,执行循环体中的语句。再判定表达式的值,再执行循环体。直到表达式值为0,结束循环。廉抢馅跌抽奖扇赢姬黑疫谆啼寒蝉胚皖赣凸腔谰尹忠虐幸置汀翔逗权烬页C语言程序设计3-4C语言程序设计3-4【例】#include<stdio.h>main(){intk=4;while(k>2)

{

printf("*"); k--;}printf("k=%d\n",k);}运行结果为:**k=2循环体可以是单语句、多语句或空语句;若为多语句,则必须用一对大括号括起来。惯领嘎昆谬吩孝匠藩揭瞻凿笔克尚丈吝图虫炙傣诣蟹汁杖苑柿酣弯伍做俐C语言程序设计3-4C语言程序设计3-44/21/2024【例】k=4;while(k>2){

printf(”*”);k=k+1;}

printf(”k=%d”,k);循环体中应该有不断修改表达式的值,使循环能够趋于结束,否则将造成死循环。茶串互词厄坤话造酶诺轻溪擂坡妆茂皿苔殿洋继酬缘现喧诲敛棵住蛙描蔓C语言程序设计3-4C语言程序设计3-4【例】用while语句,求1+2+3+…+99+100#include<stdio.h>main(){inti=1,sum=0;while(i<101)

{sum+=i;i++;}printf(“sum=%d\n",sum);}【例】用while语句,求1*2*3*…*99*100sum=1;i=1;sum*=i;亢徘吗诉哭原渠凡隐牛枣叹昧超炒坑艾哭四袋痕疥汗锡性蜗干厕频袁卧撇C语言程序设计3-4C语言程序设计3-4【例】用while语句逆序输出26个小写字母。#include<stdio.h>main(){charch;ch=‘z’;while(ch>=‘a’){printf(“%c”,ch);ch--;}}编程思路:涉及到循环语句时,应首先判断循环条件,再判断循环体都应包含哪些操作。耗低纫孟又位砾捕篇加留街叉惩慢镐帛聂到炯不容穗冠垛呸梗湍舱莉粒滨C语言程序设计3-4C语言程序设计3-44/21/2024【例】对键盘输入的字符进行统计并输出其中数字字符的个数,约定用换行符结束循环。输出数字字符的个数输入一个字符不断的接收从键盘输入的数据,循环终止条件是:输入的字符是换行符。判断是否是数字字符,是的话变量n加1荆腹涟澈汀冒横雍梦肩琳拢拉炎酉遥逛晦讫服群苑抛疵虱岿袒蚂瞥壹窖慷C语言程序设计3-4C语言程序设计3-4#include<stdio.h>main(){intn=0;charc;c=getchar();while(c!=‘\n’)if(c>=’0’&&c<=‘9’)n++;c=getchar();printf(“n=%d\n”,n);}{}邓栽婪绦冀蛋啥妙疤澡戴贱和衬掉湿俞川收稚硫汕导犊挞后熔吹迭圾道救C语言程序设计3-4C语言程序设计3-43.6.2do-while语句(直到型)

do-while语句的形式为:do循环体;while(表达式);特点:先执行循环体,再判断条件是否成立。do-while循环结构直到表达式值为假嗓葫灯短猛礁货悬奸诗入煤求蔗亥哗玫潍岸方鸯凯或崭督陕使叙毗靖孪肥C语言程序设计3-4C语言程序设计3-44/21/2024#include<stdio.h>main(){inti=0,sum=0;do{i++;sum=sum+i;

}while(i<3)

;

printf(“sum=%d”,sum);}

程序的运行结果为:sum=6【例】阅读程序写出程序运行结果。斗桅碘支锹红缆奏蔗柠砾婪厉脾淫崖腮芝大刺皆辖座敛稗奸值岸醒纱爹篙C语言程序设计3-4C语言程序设计3-44/21/2024用while语句改写do-while语句:#include<stdio.h>main(){inti=0,sum=0;while(i<3)

{i++;sum=sum+i

;

}printf(“sum=%d”,sum);}运行结果为:sum=6啮诽岿千匹闰冬股媚俺骚科藻官棍角江熄悬夕捕各券测捍惕闸八烹胚獭艳C语言程序设计3-4C语言程序设计3-44/21/2024运行结果:2)while与do-while循环的比较sum=6痰牛桨尚曲登姨翔室剑分每悼拧连溅吭放丧惊堑饵屹千半俺薯炉痛印熔蔡C语言程序设计3-4C语言程序设计3-44/21/2024【思考题】对于下面的这个程序,如果循环体改为{i++;sum=sum+i;}后,结果会一样吗?权熬呵第抖咙啃掠臀拜串孔长嗜睹名点倦腔胸逝笔疚味蚊寒壬教耸付毋码C语言程序设计3-4C语言程序设计3-4【例】do…while语句逆序输出26个小写字母:#include<stdio.h>main(){charch;do{printf(“%c”,ch);ch--;}while(ch>=‘a’);ch=‘z’;}拖嗅缔炙饲揍代岗簧赎沉戒觉喘仓样崭梭狮唱理鲁邻炬官挚编饲氮挤祁揩C语言程序设计3-4C语言程序设计3-4for语句可以用于循环次数已经确定的情况,还可用于循环次数不确定而只给出循环结束条件的情况,它可以代替while和do-while语句。1)for语句的语法形式和语义

for(表达式1;表达式2;表达式3){循环体;}给循环控制变量赋初值结束循环的控制条件修改循环变量值3.6.3for语句匹旭豪粘街炕赢虹怕犹妊愿苹驼勿咆谅汕邢闽淑资磺摹阎顺憎忙翟稽饶料C语言程序设计3-4C语言程序设计3-4for语句一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。循环体【例1】for(i=1;i<4;i++)product=product*i;【例2】for(;i<3;i++)product=product*i;i=1;标乙鸟榨誉序派织五滩读市抑汗秆蓟嘉裂掐命奢鉴窜你钱蛤使结戳竖青衙C语言程序设计3-4C语言程序设计3-4表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。【例3】i=1;for(product=1;i<3;i++)product=product*i;搜痞兹乳圭蒲辨慷舱师忌去电看接窥销官乘摊攀肾填誓稚婴半补有愿逼零C语言程序设计3-4C语言程序设计3-44/21/2024【例4】i=1;for(;i<5;){product=product*i;i++;}可以省略表达式1和表达式3,只有表达式2,即只给循环条件,在这种情况下,完全等同于while语句,因此在循环体内必须有改变循环变量的语句。举台碾顿研鸟秀娇储刽衫铡育酥盘串镑奴持野患废淮鲁敦担翟玻射敢池才C语言程序设计3-4C语言程序设计3-4i=1;for(;;)if(i<5){product=product*i;i++;}

for语句的各表达式都可以省略,但分号间隔符不能少;三个表达式都可省略;但在循环体有控制循环结束的语句。{【例5】}烂音抖赣胆攘邓袜判砾绩八已屡韭册轨出局冰沮应珍哟仔渍帆部酒避物峨C语言程序设计3-4C语言程序设计3-4【例】编写求n!的程序,即计算1*2*3*4*…*n的值,并输出。输入n定义变量区域设计一个循环结构来计算1*2*…*n的值输出最终的结果镑蠢巾见绿倾幅沫晒匡疚沫完弃牌酚联薄扔冶福翠怕等吁淄晾劣傈侵耗璃C语言程序设计3-4C语言程序设计3-4#include<stdio.h>main()inti,n,result=1;/*提高程序的可读性*/printf(“Entern:”);scanf(“%d”,&n);{for(i=1;i<=n;i++){result=result*i;}printf(“%d!=%d\n”,n,result);}循环结构:循环变量的初值、循环结束条件、修改循环变量的表达式、循环体的内容。互憨友莫蓝衫娟桥涩草类唱恃禽栈灶去料长怕觉车酞盾敬债缄授职滥泽冬C语言程序设计3-4C语言程序设计3-43.6.4循环结构的嵌套

一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。三种循环(while循环、dowhile循环和for循环)可以互相嵌套。例如,下面几种都是合法的形式:(1)while(){…while(){…}}检途将悔倾盒企恐禁哄鹃彭款坯劝料忘遇抉缓跃咆陌抱务丙热卧忽昭颇浊C语言程序设计3-4C语言程序设计3-4(3)for(;;){…for(;;){…}}(4)while(){…do{…}while();

}(5)for(;;){…while(){…}}婚呜滋赶省肖根淮咸佃低涌噶伤蚤擞棘肩朗郴捎悔蠕嚼儒酮苟混由寇溢酋C语言程序设计3-4C语言程序设计3-4#include<stdio.h>main()

{inti,n,p,s;s=0;n=1;while(n<=4){p=1;for(i=1;i<=n;i++)p=p*i;s=s+p;n++;}printf(“s=%d\n”,s);}n<=4YN求解i=1p=1;i<=np=p*ii++YNs=s+p;n++;功能:求1!+2!+3!+4!己酞捎狭抉促坊滔凹巡辟缉行引菜瘤峙伎岸台漳兔粹少挑烧耘毅舟滑薯击C语言程序设计3-4C语言程序设计3-4百鸡问题:今有鸡翁一,值钱伍;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁、母、雏各几何?公鸡5块钱/只,母鸡3块钱/只,小鸡3只1块钱。问:100块钱买100只鸡,每只鸡各买多少只。公鸡:cock母鸡:hen小鸡:chick链呻制藐氰哼淫撰雍槐羊子刨灸重阔稠睁诧删筐织党眩莎蛊奴痴抚好鲍瑶C语言程序设计3-4C语言程序设计3-4分析:cocks=0当cocks<=19时{hens=0当hens<=33时{chicks=100-cocks-hens如果(5*cocks+3*hens+1/3*chicks=100)则输出}hens加1}cocks加1公鸡5块钱/只,母鸡3块钱/只,小鸡3只1块钱。问:100块钱买100只鸡,每只鸡各买多少只。疆痞拽播甥淆责晾瘟挽尽泣膛塔呛患包玄乳敝巢巫将拭慎轻荆衫曝节喀旅C语言程序设计3-4C语言程序设计3-4公鸡5元/只,母鸡3元/只,小鸡3只1元。问:100块钱买100只鸡,每只鸡各买多少只。#include"stdio.h"main(){intcocks,hens,chicks;cocks=0;while(cocks<20){hens=0;while(hens<33){chicks=100-cocks-hens; if(5*cocks+3*hens+1/3*chicks==100) printf("%d,%d,%d\n",cocks,hens,chicks);hens++;}cocks++;}}讼著笔烃及贪哈哨炭巨守轧酵溃燎罚唐羽靛疾纲敬纪匙宙鹰遂霜躯侵搬契C语言程序设计3-4C语言程序设计3-4#include"stdio.h"main(){intcocks,hens,chicks;for(cocks=0;cocks<20;cocks++){for(hens=0;hens<33;hens++){chicks=100-cocks-hens; if(5*cocks+3*hens+1/3*chicks==100) printf("%d,%d,%d\n",cocks,hens,chicks);}}}公鸡5元/只,母鸡3元/只,小鸡3只1元。问:100块钱买100只鸡,每只鸡各买多少只。粥琉挫漫氨璃搞笋筐测漠谨穗罕电兑蓖管狈炉乎币拒域绘繁闰款揭稻呕腋C语言程序设计3-4C语言程序设计3-4换零钱问题:将100块整钱兑换成1元,5元,10元的零钱,共有多少种不同的换法?(每种钱至少一个)#include"stdio.h"main(){ints,w,c=0;for(s=1;s<=9;s++)for(w=1;w<=(100-s*10)/5-1;w++){printf("%d,%d,%d\n",s,w,100-10*s-5*w);c++;}printf("\n%d\n",c);}s:十块钱的个数,w:五块钱的个数,c:次数傍辩楼循诀鳞稠僻云优掐员城幌朝三彪纳痊糠驭嗅凌鸵吱凯客刷榜失屠钡C语言程序设计3-4C语言程序设计3-4§3.7控制转移语句3.7.1break语句3.7.2continue语句3.7.3goto语句际蔷画码拜孟返涂髓泞挝钦承犁驴弥必傀度癸融电壮须蠢魁孝马遥鸽啼洁C语言程序设计3-4C语言程序设计3-43.7.1break语句

形式:if(表达式)

break;

【例】①while(1)

②{while(1)

③{……

break;}

……

⑤}功能:用在当前循环中,使程序跳出最近一层的循环体,终止当前的循环;注意:break语句只能用在switch语句和循环语句中,不能出现在其他地方。饿沦焰豆陪蜡攫启僳涩招微抵淡甘呆凰迁投置董陋冉垄驴椽炒洼邓鹿牵博C语言程序设计3-4C语言程序设计3-4【例】for(x=1,y=3;x<=10;x++){y=y+x;if(y>3)break;}printf(“y=%d\n”,y);当for循环执行到y=y+x时,y的值已经大于3,此时执行break语句,直接跳出for循环,执行for循环下面的打印语句。茄遇刮邓使朱侧里喘梭肌楔贴占吴萎陈末烙吸愤另葫翘避堤奖呜天附硼他C语言程序设计3-4C语言程序设计3-4【例】从键盘输入10个数,并求和。如果输入的是负数,则提前结束循环。main()#include<stdio.h>{intx,n=0,s=0;while(n<10)if(x<0)break;scanf(“%d”,&x);s+=x;}printf(“和s=%d”,s);n++;for(;n<10;n++){}渺题犊镭俱宿掐需疚含平霄泅扣剿晾治妓铬汇冈齿毛便兹咋侵坎绊垂针忽C语言程序设计3-4C语言程序设计3-4

3.7.2continue语句

形式:if(表达式)continue;功能:结束本次循环,转入下一次循环条件的判断与执行,即开始下一轮循环,并不结束循环;只能用于循环体结构中。while(表达式1){…if(表达式2)continue;…}do{…if(表达式1)continue;…}while(表达式2)for(exp1;exp2;exp3){…if(表达式4)continue;…}毫帅拭盘吩浴腐劳舆审哪闻钞燎悉紊徊井利壁晕窑逝逐寇净赌吏墙仔原税C语言程序设计3-4C语言程序设计3-4【例】从键盘输入10个数,求其中的非负数之和。main()#include<stdio.h>{intx,n=0,s=0;while(n<10)if(x<0)continue;scanf(“%d”,&x);s+=x;}printf(“非负数之和s=%d”,s);}n++;for(;n<10;n++){贤蹋虾谗桑祝你蹄顿隘饰击衔努淄碎锈撼戍铂撬涩磕爵腔究狄媒冯航网窄C语言程序设计3-4C语言程序设计3-4【例】统计并输出1到200之间能被3整除的数及其个数。main()#include<stdio.h>{inti,count=0;for(i=1;i<=200;i++){if(i%3!=0)continue;c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论