《《程序控制语句》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《程序控制语句》PPT课件.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章 程序控制语句程序控制语句20082008东北大学计算机基础教研室东北大学计算机基础教研室 2 2 目录3.1 c语句概述3.2 格式输入输出3.3 字符数据的输入输出3.4 顺序结构程序设计举例3.5 选择结构程序设计3.6 循环控制结构程序设计20082008东北大学计算机基础教研室东北大学计算机基础教研室 3 3 3.1 C语句概述 1.控制语句控制语句(9种种):完成一定的控制功能完成一定的控制功能 if ()else 条件语句条件语句(双分支选择语句双分支选择语句)switch 多分支选择语句多分支选择语句 for()while()循环语句循环语句 do while()c
2、ontinue 结束本次循环语句结束本次循环语句 break 中止语句中止语句 goto 转向语句转向语句 return 从函数返回语句从函数返回语句 2.函数调用语句函数调用语句:由一个函数调用加一个分号构成由一个函数调用加一个分号构成 如如:printf(“very good!”);3.表达式语句表达式语句:由表达式加分号构成由表达式加分号构成 如如:x=12;(赋值表达式语句赋值表达式语句)3.空语句空语句:由一个分号构成由一个分号构成,它什么也不做它什么也不做 ;复合语句复合语句:用用 括起来的语句序列括起来的语句序列 如如 int temp;temp=x;x=y;y=temp;注意注
3、意:1.复合语句是一个整体复合语句是一个整体,相当于一条语句相当于一条语句2.一个复合语句中可以包含其他的复合语句一个复合语句中可以包含其他的复合语句3.在复合语句的花括号后不要再加分号在复合语句的花括号后不要再加分号3.复合语句中可定义变量复合语句中可定义变量,但此变量只在但此变量只在 该复合语句内有效该复合语句内有效20082008东北大学计算机基础教研室东北大学计算机基础教研室 5 5 3.2 格式输入输出函数一、一、printf函数函数 格式格式:printf(格式控制格式控制,输出表列输出表列);如如:printf(“a=%dn”,a);1.格式控制格式控制:用用“”括起来的字符串括
4、起来的字符串,包括如下两个部包括如下两个部分分(1)普通字符普通字符(包括转义字符包括转义字符):需要原样输出的字符需要原样输出的字符 (2)格式说明格式说明:由由%和格式字符组成和格式字符组成 其作用是将输出数据按指定的格式输出其作用是将输出数据按指定的格式输出C语言没有提供专门的输入语言没有提供专门的输入/输出语句,其输入输出操作是输出语句,其输入输出操作是由函数实现的。由函数实现的。C语言提供的函数以库的形式存在,这些库语言提供的函数以库的形式存在,这些库函数定义在头文件函数定义在头文件stdio.h中。因此在程序中如果用到输入输中。因此在程序中如果用到输入输出函数,需在程序的头部包含该
5、头文件。出函数,需在程序的头部包含该头文件。#include#include“stdio.h”%格式字符格式字符 l m.n 0 -格式字符格式字符:指定输出项的数据类型和输出格式指定输出项的数据类型和输出格式 c d f s 长度修正符长度修正符:l 对长整型和对长整型和double型型 域宽及精度描述符域宽及精度描述符 m.n (m控制域宽控制域宽,n 控制小数位数控制小数位数)数数0用以在指定数字前的空位是否用用以在指定数字前的空位是否用0填补填补(对整型对整型,实型可用实型可用)负号用以指定输出项是否为左对齐方式负号用以指定输出项是否为左对齐方式 2.输出列表输出列表:输出项可以是常量
6、输出项可以是常量,变量变量,表达式表达式例例:int x=8,y=-2;float a=3.14;printf(“%dn”,25);printf(“%03dn”,x);printf(“%3.6fn”,a);printf(“%2.3sn”,“C Language”);printf(“x*y=%dn”,x*y);printf(“|y|=%dn”,fabs(y);250083.140000C Lx*y=-16|y|=2 二、二、scanf函数函数 格式格式:scanf(格式控制格式控制,变量地址表列变量地址表列);1.地址参数地址参数:变量的地址可通过地址运算符变量的地址可通过地址运算符“&”得到得
7、到 例例 int x;&x 将给出变量将给出变量x 所占内存空间的首地址所占内存空间的首地址 2.格式控制格式控制 (1)格式说明格式说明%*m l 格式字符格式字符 m 用以指定宽度读入数据用以指定宽度读入数据 *:表示跳过相应位置的输入数据,不赋给对应变量表示跳过相应位置的输入数据,不赋给对应变量如如 scanf(“%d%*c%d%*c%d”,&d,&m,&y);3/14/2006 3.注意问题注意问题 (1)格式控制中出现的除格式说明以外的其他字符格式控制中出现的除格式说明以外的其他字符,在输入数据时要输入与其相同的字符在输入数据时要输入与其相同的字符 如如 scanf(“a=%d,b=
8、%d”,&a,&b);输入输入:a=12,b=45 (3)输入数值数据时,遇到以下情况时输入结束输入数值数据时,遇到以下情况时输入结束 遇到空格遇到空格,或按或按“回车回车”键键,“跳格跳格”键键 按指定的宽度结束按指定的宽度结束 如如 scanf(“%d%3d%2d”,&x,&y,&z);输入输入:25 1867490 遇到非法输入遇到非法输入 如如scanf(“%d%d”,&x,&y);输入输入:25,3(2)用用%c输入字符时输入字符时,空格和转义字符都会作为有效字符输入空格和转义字符都会作为有效字符输入 如如 scanf(“%c%c”,&ch1,&ch2);输入输入:A B 则则ch1
9、为字符为字符A ,ch2为空格为空格x 为为 25,y 为为 186,z 为为 74x 为为 25,y 无正确数据无正确数据(因遇到逗号而出错因遇到逗号而出错)20082008东北大学计算机基础教研室东北大学计算机基础教研室 9 9 3.3 字符数据的输入和输出 一、一、字符输出函数字符输出函数(putchar函数函数)格式格式:putchar(参数参数)功能功能:将参数对应的字符输出到显示器上将参数对应的字符输出到显示器上,参数可以是字符型或整型的常量和变量参数可以是字符型或整型的常量和变量例例:#include void main()char a=B,b,c;b=O;putchar(a);
10、putchar(b);putchar(Y);输出输出:BOY注意注意:putchar函数只有一个参数函数只有一个参数二、二、字符输入函数(字符输入函数(getchar函数)函数)格式格式:getchar()(注意它是无参函数注意它是无参函数)功能功能:从键盘输入一个字符从键盘输入一个字符例例:#include void main()char ch;ch=getchar();getchar();putchar(ch);putchar(n);putchar(getchar();假设输入假设输入:ABCD 输出输出:A C注意注意:一般连续输入可显示字符一般连续输入可显示字符,若中间有空格若中间有空
11、格,回车等字符回车等字符,在输出时是不可见的在输出时是不可见的若输入若输入:A BC 若输入若输入:AB 输出输出:A B输出输出:A 20082008东北大学计算机基础教研室东北大学计算机基础教研室 1111 3.4 顺序结构程序设计举例例例:输入三角形输入三角形3边长边长,求其面积求其面积公式公式 area=s(s-a)(s-b)(s-c)s=(a+b+c)/2#include void main()float a,b,c,s,area;scanf(“%f%f%f”,&a,&b,&c);s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“
12、area=%fn”,area);输入输入a,b,c 3边长边长按公式计算按公式计算s的值的值按公式计算按公式计算area的值的值输出输出area的值的值20082008东北大学计算机基础教研室东北大学计算机基础教研室 1212 3.5 选择结构程序设计1.关系运算符和关系表达式2.逻辑运算符和逻辑表达式3.if语句3.switch语句5.程序举例20082008东北大学计算机基础教研室东北大学计算机基础教研室 1313 1.关系运算符和关系表达式 注意注意:(1)字符数据按其字符数据按其ASCII码值进行比较码值进行比较 (2)应避免应避免2个实数作个实数作=或或!=的比较的比较 一、关系运算
13、符一、关系运算符 =278 是允许的是允许的,它相当于它相当于(52)7)8 (4)可以将关系表达式看成是一种整型表达式可以将关系表达式看成是一种整型表达式20082008东北大学计算机基础教研室东北大学计算机基础教研室 1414 2.逻辑运算符和逻辑表达式 一、一、逻辑运算符逻辑运算符 !&|1.3个运算符的优先级由高到低为个运算符的优先级由高到低为!&|2.!的优先级高于关系运算的优先级高于关系运算,&和和|的优先级的优先级 低于关系运算低于关系运算 3.!是右结合性是右结合性,&和和|是左结合性是左结合性,85&!2二、逻辑表达式二、逻辑表达式1.逻辑表达式的值应该是逻辑表达式的值应该是
14、“逻辑真逻辑真”或或“逻辑假逻辑假”,逻辑运算的结果以数值逻辑运算的结果以数值1代表代表“真真”,以数值以数值0代表代表“假假”;进行判断时进行判断时,非零值代表非零值代表“真真”,零值代表零值代表“假假”例例:表示表示 x-1,1区间区间 应写为应写为:x=-1&x=12.逻辑运算中的规律逻辑运算中的规律(1)在在&表达式中表达式中,若左端为若左端为0,则不必再计算右端则不必再计算右端,表达式值为表达式值为0 即即:0&a 0(2)类似有类似有 1|a 1 规律规律:0|a a 0&a01|a1 1&aaa|aa a&aaa|!a1 a&!a0!(a|b)!a&!b !(a&b)!a|!b
15、例例#include void main()int x,y,z;x=y=z=0;+x|+y&+z;printf(“%d,%d,%dn”,x,y,z);x=y=z=-1;+x&+y|+z;printf(“%d,%d,%dn”,x,y,z);(+x)|(+y)&(+z)输出结果输出结果:1,0,00,-1,0(+x)&(+y)|(+z)20082008东北大学计算机基础教研室东北大学计算机基础教研室 1717 3.if语句 一、一、if 语句的两种形式语句的两种形式 1.单分支形式单分支形式:if (表达式表达式)语句语句 2.双分支形式双分支形式:if (表达式表达式)语句语句1 else 语句
16、语句2 执行过程执行过程:先计算表达式的值先计算表达式的值,如果值为如果值为1,就执行其后的就执行其后的 语句语句,如果值为如果值为0,就继续向下执行就继续向下执行.执行过程执行过程:先计算表达式的值先计算表达式的值,如果值为如果值为1,就执行其后的就执行其后的 语句语句1,如果值为如果值为0,就执行就执行else后的语句后的语句2说明说明:1.语句可以是简单语句或复合语句语句可以是简单语句或复合语句 2.表达式一般为逻辑或关系表达式表达式一般为逻辑或关系表达式,且应用且应用()括起来括起来 语句语句1 语句语句2成立成立不成立不成立P语句语句成立成立P20082008东北大学计算机基础教研室
17、东北大学计算机基础教研室 1818 例例:输入输入3个数个数,按由小到大的顺序输出按由小到大的顺序输出输入输入a,b,cab?abac?bc?acbc输出输出a,b,c是是是是是是否否否否否否#include void main()int a,b,c,t;scanf(“%d%d%d”,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(“%d,%d,%dn”,a,b,c);20082008东北大学计算机基础教研室东北大学计算机基础教研室 1919#include#include void main()in
18、t x,y;scanf(“%d”,&x);if(x0)y=pow(x,3)+x+1;printf(“y=%dn”,y);例例:编程求解函数编程求解函数 0 X0#include#include void main()int x,y;scanf(“%d”,&x);if(x=0)y=0;else y=pow(x,3)+x+1;printf(“y=%dn”,y);Y=二、二、if 语句的嵌套语句的嵌套:在在if 语句中又包括一个或多个语句中又包括一个或多个if 语句语句规定规定:在在if 嵌套结构中嵌套结构中,else是与其前面最近的尚未配对的是与其前面最近的尚未配对的if 配对配对1.if (表达
19、式表达式1)if (表达式表达式2)语句语句4.if(表达式表达式1)if(表达式表达式2)语句语句1 else 语句语句22.if (表达式表达式1)语句语句1 else if (表达式表达式2)语句语句23.if (表达式件表达式件1)语句语句1 else if (表达式表达式2)语句语句2 else 语句语句3对第对第4种形式可以有两种理解方式种形式可以有两种理解方式:(1)if(表达式表达式1)if(表达式表达式2)语句语句1 else 语句语句2 (2)if(表达式表达式1)if(表达式表达式2)语句语句1 else 语句语句2 20082008东北大学计算机基础教研室东北大学计算机
20、基础教研室 2121 例例:编程求解函数编程求解函数 y=-1 x0方法方法1if(x=0)if(x0)y=1;else y=0;else y=-1;y=-1y=0y=1x=0 x0真真假假真真假假方法方法3y=-1;if(x!=0)if(x0)y=1;else y=0;y=-1 x=00 x0y=-1x!=0 x0y=1y=0真真真真假假假假修改方法修改方法3y=-1;if(x!=0)if(x0)y=1;else y=0;y=-1x!=0 x0y=1y=0真真真真假假假假 三、三、条件运算条件运算 例例 max=ab?a:b+1 ab?a:cd?c:d 注意注意:(1)表达式表达式1,表达式
21、表达式2和表达式和表达式3 的数据类型可以互不相同的数据类型可以互不相同 (2)条件表达式的值的数据类型与表达式条件表达式的值的数据类型与表达式2,表达式表达式 3中数中数 据类型较高的那个保持一致据类型较高的那个保持一致 如如 75?10:1.4 条件表达式的值为条件表达式的值为10.0 ab?a:(cd?c:d)1.条件运算符条件运算符?:优先级仅高于赋值类优先级仅高于赋值类,是右结合性是右结合性 执行过程:先计算表达式1,若其值为非零值(真),则计算表达式2 的值,该条件表达式的值即为表达式2 的值;若表达式1的值为零(假),则计算表达式3 的值,该条件表达式的值即为表达式3 的值2.条
22、件表达式的一般形式条件表达式的一般形式:表达式表达式1?表达式表达式2:表达式表达式3 max=(ab?a:b+1)用条件表达式实现用条件表达式实现#include void main()int max;max=xy?x:y;max=zmax?z:max;printf(“max=%d”,max);当当if中的语句为简单赋值语句时中的语句为简单赋值语句时,我们可以用条件表达式我们可以用条件表达式来取代来取代if 语句语句例例 求求3个数中的最大数个数中的最大数#includevoid main()int max;if(xy)max=x;else max=y;if(zmax)max=z;print
23、f(“max=%d”,max);20082008东北大学计算机基础教研室东北大学计算机基础教研室 2525 3.switch语句 一、一、switch语句的格式语句的格式 switch(表达式表达式)case 常量表达式常量表达式1:语句语句1 case 常量表达式常量表达式2:语句语句2 :case 常量表达式常量表达式n:语句语句n default :语句语句n+1 注意注意:1.表达式一般多为整型或字符型表达式表达式一般多为整型或字符型表达式 2.case后常量表达式的值必须互不相同后常量表达式的值必须互不相同 3.case和和default的出现次序不影响结果的出现次序不影响结果 3.
24、语句语句1至语句至语句n+1为复合语句时可省略为复合语句时可省略 多个多个case可以共用一组执行语句可以共用一组执行语句 Switch语句可以嵌套语句可以嵌套 switch语句的执行过程语句的执行过程:计算计算switch后表达式的值后表达式的值 如果表达式的值与某个如果表达式的值与某个case常量表达式的值相等时常量表达式的值相等时,就执行此就执行此case后的语句后的语句,执行完后将继续执行下一个执行完后将继续执行下一个case后的语句后的语句,如果表达式的值与所有如果表达式的值与所有case常量表达式的值都不同常量表达式的值都不同,就执行就执行default后的语句后的语句 例例 vo
25、id main()int x,y;printf(“input a number:n”);scanf(“%d”,&x);switch (x)case 1:y=10;printf(“%dn”,y);case 2:y=20;printf(“%dn”,y);case 3:y=30;printf(“%dn”,y);default:y=0;printf(“%dn”,y);如果输入如果输入x为为 2则输出则输出:20 30 0如果输入如果输入x为为 6则输出则输出:020082008东北大学计算机基础教研室东北大学计算机基础教研室 2727 注意注意:在执行一个在执行一个case 分支后分支后,应用应用br
26、eak语句结束语句结束switch语句语句 void main()int x,y;printf(“input a number:n”);scanf(“%d”,&x);switch (x)case 1:y=10;printf(“%dn”,y);break;case 2:y=20;printf(“%dn”,y);break;case 3:y=30;printf(“%dn”,y);break;default:y=0;printf(“%dn”,y);如果输入如果输入x为为 2则输出则输出:20 20082008东北大学计算机基础教研室东北大学计算机基础教研室 2828 3.6 循环控制1.概述2.wh
27、ile语句3.do-while语句3.for语句5.循环的嵌套6.break语句和continue语句20082008东北大学计算机基础教研室东北大学计算机基础教研室 2929 1.概述在实际问题中在实际问题中,我们常常遇到需要重复处理的工作我们常常遇到需要重复处理的工作例如例如:求求1100的和的和,或求一个班英语成绩的平均分或求一个班英语成绩的平均分一般来说循环控制方法分两种一般来说循环控制方法分两种:(1)条件循环条件循环(while循环循环 和和 do while 循环循环)条件满足时执行循环条件满足时执行循环,条件不满足时结束循环条件不满足时结束循环(2)计数循环计数循环(for 循
28、环循环)先确定循环次数先确定循环次数,然后执行循环然后执行循环,完成循环次数后结束完成循环次数后结束注注:C语言中的语言中的for循环非常灵活循环非常灵活,功能强大功能强大,也可以实现也可以实现 循环次数不确定的情况循环次数不确定的情况,完全可以代替完全可以代替while循环循环20082008东北大学计算机基础教研室东北大学计算机基础教研室 3030 2.while语句2.执行过程执行过程:先计算表达式的值先计算表达式的值,值为真值为真(非零非零)时执行循环体时执行循环体,值为假时结束循环值为假时结束循环 1.格式格式:while (表达式表达式)循环体语循环体语句句3.注意注意:(1)表达
29、式必须用表达式必须用()括起来括起来(2)循环体语句为复合语句时循环体语句为复合语句时,必须用必须用 把它们括起把它们括起来来(3)循环体语句中必须有使循环趋向结束的语句循环体语句中必须有使循环趋向结束的语句 A当当P成立成立AP成立成立不成立不成立例例:求求1100 的和的和#include void main()int i,sum;sum=0;i=1;while (i=100)sum=sum+i;i+;printf(“sum=%dn”,sum);分析:输入,输出分别是什么?需要几个变量?程序大体可分为几个步骤?sum=0i=1i=100?sum=sum+ii=i+1输出输出sum的值的值例
30、例:求求1n 的和的和,n为任意正整为任意正整数数sum=0i=1i=n?sum=sum+ii=i+1输出输出sum的值的值输入输入n#include void main()int i,sum,n;sum=0;i=1;printf(“Input value n:n”);scanf(“%d”,&n);while (i=n)sum=sum+i;i+;printf(“sum=%dn”,sum);例例:求某个班英语成绩的平均分求某个班英语成绩的平均分,该班学生人数和每个该班学生人数和每个 学生的成绩由键盘输入学生的成绩由键盘输入sum=0i=1i=n?sum=sum+si=i+1输出输出ave的值的值
31、输入输入n(n表示学生人数表示学生人数)输入输入s(s表示成绩表示成绩)ave=sum/n#include void main()int i,n;float s,sum,ave;sum=0;i=1;printf(“Input the student number:”);scanf(“%d”,&n);while (i=n)scanf(“%f”,&s);sum=sum+s;i+;ave=sum/n;printf(“ave=%2fn”,ave);例例:编程求编程求 的近似值的近似值,公式公式/4 1-1/3+1/5-1/7+1/9-分析:题目仍可以看成是累加求和不同的是,相加的每一项正负相间,公式是
32、无穷的,所以我们规定当相加项的绝对值小于0.000001(即106)时停止计算#include#include void main()int s;float n,t,pi;s=1;n=1;t=1;pi=0;while(fabs(t)1e-6)pi=pi+t;n=n+2;s=-s;t=s/n;pi=4*pi ;printf(“pi=%10.6fn”,pi);tpins11-13-1/310 10.671/55120082008东北大学计算机基础教研室东北大学计算机基础教研室 3535 3.do-while语句不成立不成立AP成立成立 当当P成立成立 A 1.格式格式:do 循环体语句循环体语句
33、while (表达式表达式);2.执行过程执行过程:先执行循环体先执行循环体,然后计算表达式的值然后计算表达式的值,若值为真则重复执行循环体若值为真则重复执行循环体,若值为假则结束循环若值为假则结束循环3.注意注意:(1)表达式必须用表达式必须用()括起来括起来(2)循环体语句为多条语句时循环体语句为多条语句时,必须用必须用 把它们括起把它们括起来来(3)循环体语句中必须有使循环趋向结束的语句循环体语句中必须有使循环趋向结束的语句 20082008东北大学计算机基础教研室东北大学计算机基础教研室 3636 例例:求求1100 的和的和#include void main()int i,sum;
34、sum=0;i=1;do sum=sum+i;i+;while (i=100);printf(“sum=%dn”,sum);sum=0i=1i=100?sum=sum+ii=i+1输出输出sum的值的值3.while循环和循环和do-while循环的比较循环的比较 while do-while(1)先判断条件再执行循环体先判断条件再执行循环体 先执行循环体再判断条件先执行循环体再判断条件(2)循环体可能一次也不执行循环体可能一次也不执行 至少执行一次循环体至少执行一次循环体#include void mian()int sum=0,i;scanf(“%d”,&i);while(i=10)sum
35、=sum+i;i+;printf(”%dn”,sum);#include void mian()int sum=0,i;scanf(“%d”,&i);do sum=sum+i;i+;while(i=10);printf(”%dn”,sum);20082008东北大学计算机基础教研室东北大学计算机基础教研室 3838 3.for语句1.格式格式:for(表达式表达式1;表达式表达式2;表达式表达式3)循环体语句循环体语句2.执行过程执行过程:(1)计算表达式计算表达式1 (2)计算表达式计算表达式2,若值为真则执行循环体若值为真则执行循环体,再执行第再执行第(3)步步;若值为假则结束循环若值为假
36、则结束循环 (3)计算表达式计算表达式3,再重复执行第再重复执行第(2)步步sum=0;i=1;while (i=100)sum=sum+i;i+;sum=0;for(i=1;i=100;i+)sum=sum+i;例例:将将1100求和的求和的while循环转换为用循环转换为用for循环实现循环实现3.说明说明(1)可以省略表达式可以省略表达式1 sum=0;for(i=1;i=100;i+)sum=sum+i;i=1;(2)可以省略表达式可以省略表达式3 sum=0;for(i=1;i=100;i+)sum=sum+i;i+;(3)同时省略表达式同时省略表达式1和表达式和表达式3 sum=0
37、;i=1;for (;i=100 ;)sum=sum+i;i+;(4)表达式表达式1,表达式表达式3还可以是逗号表达式还可以是逗号表达式 for(sum=0,i=1;i=100;sum=sum+i,i+);(5)表达式表达式1,表达式表达式3 可以是与循环控制无关的其他表达式可以是与循环控制无关的其他表达式 i=1;for(sum=0;i=100;sum=sum+i )i+;空语句空语句(6)表达式表达式2一般不会省略一般不会省略,若省略表达式若省略表达式2循环将不能停循环将不能停止止sum=0;for(i=1;i+)sum=sum+i;sum=0;i=1;for(;)sum=sum+i;i+
38、;i=1;while(1)sum=sum+i;i+;20082008东北大学计算机基础教研室东北大学计算机基础教研室 4141 例例:求某个班英语成绩的平均分求某个班英语成绩的平均分#include void main()int i,n;float s,sum,ave;sum=0;i=1;scanf(“%d”,&n);while (i=n)scanf(“%d”,&s);sum=sum+s;i+;ave=sum/n;printf(“%2fn”,ave);#include void main()int i,n;float s,sum,ave;sum=0;scanf(“%d”,&n);for(i=1
39、;i=n;i+)scanf(“%d”,&s);sum=sum+s;ave=sum/n;printf(“%2fn”,ave);例例:求求Fibonacci数列的前数列的前20 个数个数 Fibonacci数列数列:1,1,2,3,5,8,13#include void main()int i,f1,f2,f3;f1=1;f2=1;printf(“%8d%8d”,f1,f2);for(i=3;i=20;i+)f3=f1+f2;f1=f2;f2=f3;printf(“%8d”,f3);if(i%4=0)putchar(n);分析数列的规律分析数列的规律:从第从第3个数开始个数开始,每个数是每个数是其
40、前两个数之和其前两个数之和f1f2f3112231 235+20082008东北大学计算机基础教研室东北大学计算机基础教研室 4343 5.循环的嵌套1.循环的嵌套循环的嵌套:一个循环体内包含另一个完整的循环结构一个循环体内包含另一个完整的循环结构2.按循环嵌套的层数分别称为二重循环按循环嵌套的层数分别称为二重循环,三重循环三重循环3.C语言中语言中while,dowhile,for循环可以互相嵌套循环可以互相嵌套例例:输出由输出由*组成的如图所示的矩形组成的如图所示的矩形 *#include void main()printf(“*n”);printf(“*n”);printf(“*n”);
41、printf(“*n”);#include void main()int i=1;while(i=4)printf(“*n”);i+;#include void main()int i,j;i=1;while(i=4)j=1;while(j=3)putchar(*);j+;putchar(n);i+;#include void main()int i,j;i=1;while(i=4)for(j=1;j=3;j+)putchar(*);putchar(n);i+;注意注意:内外层循环的控制变量不能重名内外层循环的控制变量不能重名,但并列循环的控制变量无此限制但并列循环的控制变量无此限制#incl
42、ude void main()int i,j;for(i=1;i=4;i+)for(j=1;j=3;j+)putchar(*);putchar(n);例例:输出如图所示的直角三角形输出如图所示的直角三角形 *特点特点:第第n行有行有n个星号个星号#include void main()int i,j;for(i=1;i=4;i+)for(j=1;j=i;j+)putchar(*);putchar(n);例例:输出如图所示的菱形输出如图所示的菱形 *分析分析:将图形分为上下将图形分为上下两个部分分别输出两个部分分别输出上半部分上半部分(前前4行行)每行的星号个数是每行的星号个数是1,3,5,7,
43、每行的空格个数是每行的空格个数是3,2,1,0#include void main()int i,j,k;for(i=1;i=4;i+)for(j=1;j=4-i;j+)putchar();for(k=1;k=1;i-)for(j=1;j=4-i;j+)putchar();for(k=1;k=2*i-1;k+)putchar(*);putchar(n);6.break语句和continue语句1.break语句语句:中止循环或中止循环或switch结构结构2.continue语句语句:结束本次循环结束本次循环,然后再根据是否满足然后再根据是否满足 条件来决定是否执行下次循环条件来决定是否执行下次循环 P1真真假假语句语句1语句语句2P2真真break;假假P1真真假假语句语句1语句语句2P2真真continue;假假for(r=1;r 100&s200)break;printf(“s=%2fn”,s);for(r=1;r 100&s200)continue;printf(“s=%2fn”,s);s=3.14s=12.56s=28.26s=50.24s=78.50输出输出:s=3.14s=12.56s=28.26s=50.24s=78.50s=200.96s=253.34s=313.00输出输出:
限制150内