1、 程序的三种基本结构程序的三种基本结构结构化程序设计结构化程序设计v基本思想:任何程序都可以用三种基本结基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(构表示,限制使用无条件转移语句(goto)v结构化程序:由三种基本结构反复嵌套构结构化程序:由三种基本结构反复嵌套构成的程序叫成的程序叫v优点:结构清晰,易读,提高程序设计质优点:结构清晰,易读,提高程序设计质量和效率量和效率三种基本结构三种基本结构v顺序结构顺序结构第第4章章 结构化结构化程序设计程序设计4.1 算法与结构化程序设计算法与结构化程序设计 语句块语句块1语句块语句块2语句块语句块1语句块语句块2流程图流程图N
2、-S图图v选择结构选择结构l二分支选择结构二分支选择结构l多分支选择结构多分支选择结构条件条件语句块语句块1语句块语句块2真真假假P 语句块语句块2语句块语句块1真真假假条件条件k语句块语句块1语句块语句块2语句块语句块i语句块语句块nk=k2k=k1k=knk=ki.语句块语句块1条件条件1语句块语句块2条件条件2语句块语句块n条件条件n语句块语句块其它其它v循环结构循环结构l当型循环结构当型循环结构l直到型循环结构直到型循环结构循环条件循环条件循环体循环体假假真真当循环条件当循环条件为真为真循环体循环体循环体循环体循环条件循环条件真真假假循环体循环体直到循环条件直到循环条件为真为真注:循环
3、体注:循环体可以是一个简单语句,也可以是一个基本结构可以是一个简单语句,也可以是一个基本结构4.2.1 C4.2.1 C语句概述语句概述C语句分类语句分类:1.表达式语句表达式语句 a=3;2.声明语句声明语句 3.程序控制语句程序控制语句(9种):种):if()elseswitchfor()while()dowhile()continuebreakgotoreturn分支分支循环循环辅助控制辅助控制如如 total=total+limit;a=3;func();printf(“Hello,world!n”);4.2 顺序结构程序设计顺序结构程序设计 4.4.函数调用语句函数调用语句5.空语句
4、空语句;6.复合语句:用复合语句:用 括起来的一组语句括起来的一组语句l一般形式:一般形式:数据说明部分;数据说明部分;执行语句部分;执行语句部分;l说明:说明:u“”后不加分号后不加分号u语法上和单一语句相同语法上和单一语句相同u复合语句可嵌套复合语句可嵌套4.2.2 4.2.2 赋值语句赋值语句一般形式:一般形式:变量名变量名=表达式表达式;例如:例如:b=c=5;b=c=5;if(a=b)t=a;if(a=b)t=a;if(a=b)t=a;if(a=b)t=a;if(a=b)0)t=a;if(a=b)0)t=a;if(a=b;)0)if(a=b;)0)t=a;t=a;错了,因为错了,因为
5、C C编译编译器将把它看成是器将把它看成是如下两条语句:如下两条语句:if(a=b;if(a=b;)0)t=a;)0)t=a;4.2.3 4.2.3 字符数据的输入和输出字符数据的输入和输出 常用的标准输入输出函数有两种:常用的标准输入输出函数有两种:1.1.用于字符输入输出的函数(用于字符输入输出的函数(getchar/putchar););2.2.用于格式输入输出的函数(用于格式输入输出的函数(scanf/printf)。)。1.1.字符输出函数字符输出函数 putchar(c);putchar(c);2.2.字符输入函数字符输入函数 getchar();getchar();例例4.7 输
6、入两个字符并回显这两个字输入两个字符并回显这两个字符。符。#include void main()char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);运行情况如下:运行情况如下:xy xy4.2.4 4.2.4 格式输入和输出格式输入和输出 1.1.格式输出函数格式输出函数printfprintfprintfprintf函数的一般调用格式为:函数的一般调用格式为:printf(printf(格式控制格式控制,输出参数表列输出参数表列););格式控制是用双引号定界符括起来的字符串,它包括两种信息:格式控制是用双引号定界符括起来
7、的字符串,它包括两种信息:格式说明,由格式说明,由“%”%”和格式字符组成,如和格式字符组成,如%d%d,%f%f等。它的作用是将等。它的作用是将输出的对象采用指定的格式输出。格式说明总是由输出的对象采用指定的格式输出。格式说明总是由“%”%”字符开始的。字符开始的。普通字符,即需要原样输出的字符,它可以是一般字符,也可以是普通字符,即需要原样输出的字符,它可以是一般字符,也可以是转义字符。转义字符。输出参数表列是需要输出的一些对象,可以是常量、变量或表达式。输出参数表列是需要输出的一些对象,可以是常量、变量或表达式。例如:如果例如:如果a a、b b的值分别为的值分别为5 5、2020,则输
8、出,则输出 printf(a=%d,b=%d,a+b=%dnCONST:%dn,a,b,a+b,8);printf(a=%d,b=%d,a+b=%dnCONST:%dn,a,b,a+b,8);结果为:结果为:a=5,b=20,a+b=25 CONST:8如果要以普通字符的形式输出字符如果要以普通字符的形式输出字符“%”%”,则只需要,则只需要连续使用两个连续使用两个“%”%”字符字符即可,此时即可,此时“%”%”并不构成格式控制。例如:并不构成格式控制。例如:printf(%d%dn,printf(%d%dn,8);8);输出结果为:输出结果为:%d d%8 8例例2.7 整型数据的格式输出。
9、整型数据的格式输出。#include void main()int a=-2,b=25;unsigned u=65534,v=28;short c=45;char d=A;printf(a:%d,%u,%o,%xn,a,a,a,a);printf(u:%d,%u,%o,%xn,u,u,u,u);printf(b:%d,%u v:%d,%un,b,b,v,v);printf(c=%d,d=%dn,c,d);运行结果如下:运行结果如下:a:-2,65534,177776,fffe u:-2,65534,177776,fffe b:25,25 v:28,28 c=45,d=65例例2.9 指定格式输
10、出的宽度。指定格式输出的宽度。#include void main()int a=-4,b=45,c=456,d=4567;unsigned u=456;long l=456;printf(a=%3d,b=%3d,c=%3d,d=%3dn,a,b,c,d);printf(a=%-3d,b=%-3d,c=%-3d,d=%-3dn,a,b,c,d);printf(u=%-5u,u=%5u,l=%-5ld,l=%5ldn,u,u,l,l);运行结果如下:运行结果如下:a=-4,b=45,c=456,d=4567 a=-4,b=45,c=456,d=4567 u=456 ,u=456,l=456 ,l
11、=456例例2.10 指定输出宽度的字符型数据的格式输出。指定输出宽度的字符型数据的格式输出。#include void main()char c1=A;int c2=98;printf(c1=%-3c,c1=%3c%c,c1,c2,n);printf(%sn%sn,Shanghai,China);printf(str1=%-8s,str2=%8sn,ABCDEF,ABCDEF);printf(str3=%-8.2s,str4=%8.4sn,ABCDEF,ABCDEF);printf(str5=%-.4s,str6=%.4sn,Information,Information);例例2.11 实
12、型数据的格式输出。实型数据的格式输出。#include void main()float a=34.5678;double b=12345678.87654321;printf(a=%f,a=%-6.2f,a=%6.2f,a=%4.2f,a=%.2fn,a,a,a,a,a);printf(a=%e,a=%-10.3e,a=%10.3e,a=%6.3e,a=%.3en,a,a,a,a,a);printf(a=%g,a=%10f,a=%10en,a,a,a);printf(b=%f,b=%e,b=%gn,b,b,b);运行结果如下:运行结果如下:a=34.567799,a=34.57,a=34.5
13、7,a=34.57,a=34.57 a=3.456780e+01,a=3.46e+01,a=3.46e+01,a=3.46e+01,a=3.46e+01 a=34.5678,a=34.567799,a=3.456780e+01 b=12345678.876543,b=1.234568e+07,b=1.23457e+072.格式输入函数格式输入函数scanfScanf 函数调用的一般形式为:函数调用的一般形式为:scanf(格式控制格式控制,地址表列地址表列);例例2.12 整型数据的格式输入。整型数据的格式输入。#include void main()int a,b,c;scanf(%d%d%
14、d,&a,&b,&c);printf(a=%d,b=%d,c=%dn,a,b,c);运行情况如下:运行情况如下:3 4 5 a=3,b=4,c=5格式控制中也可以包含普通字符,如:格式控制中也可以包含普通字符,如:scanf(a=%d,b=%d,&a,&b);此时它的输入就只能按格式控制中给定的形式进行,如:此时它的输入就只能按格式控制中给定的形式进行,如:a=5,b=36例例2.13 整型数据与字符数据的格式输入。整型数据与字符数据的格式输入。#include void main()int a,b,c,d;char c1,c2,c3;scanf(%d%d,&a,&b);printf(a=%d
15、,b=%dn,a,b);scanf(%d%d,&c,&d);printf(c=%d,d=%dn,c,d);scanf(%c%c%c,&c1,&c2,&c3);putchar(c1);putchar(c2);putchar(c3);运行情况如下:运行情况如下:5 20 25 a=5,b=20 40 c=25,d=40 xyz x 例例2.14 带分隔符的整型数据的格式输入。带分隔符的整型数据的格式输入。#include void main()int a,b;float c,d;printf(Please input 2 int numbers:n);scanf(a=%d,b=%d,&a,&b);
16、getchar();/*用来读取给变量用来读取给变量a,b输入数据后的回车换行符输入数据后的回车换行符*/printf(Please input 2 real nembers:n);scanf(c=%f,d=%f,&c,&d);printf(a=%d,b=%dn,a,b);printf(c=%.2f,d=%.2fn,c,d);运行情况如下:运行情况如下:Please input 2 int number:a=12,b=24 Please input 2 real number:c=3.14,d=2.5 a=12,b=24 c=3.14,d=2.50exprstatementTFexprstat
17、ement1statement2非非0=0l形式二形式二:u格式格式:if(expression)statement1 else statement2u执行过程:执行过程:if语句语句(条件选择语句)(条件选择语句)vif语句的三种形式语句的三种形式l形式一:形式一:u格式:格式:if(expression)statementu执行过程:执行过程:4.3 分支结构程序设计分支结构程序设计l形式三:形式三:u格式:格式:if(expr1)statement1else if(expr2)statement2else if(expr3)statement3.else statement n expr
18、1statemnt 1非非0=0expr2expr3statemnt nstatemnt 3statemnt 2非非0非非0=0=0u执行过程:执行过程:如:如:if(a=b&x=y)printf(“a=b,x=y”);if(3)printf(“OK”);if(a)printf(“%d”,a);l说明:说明:uifif后面的表达式类型任意后面的表达式类型任意u语句可以是复合语句语句可以是复合语句if(x10)a=1;b=2,c=3u if(x)if(x!=0)if(!x)if(x=0)/#include main()int x,y;printf(Enter an integer:);scanf
19、(%d,&x);y=x;if(xabsolute value:%dn,x,y);例例 求一个数的绝对值求一个数的绝对值运行:运行:Enter an integer:-12 integer:-12-absolute value:12#include#include void main()float a,b,c;float s,l;printf(Please input three numeric value:n);scanf(%f%f%f,&a,&b,&c);if(a=0|b=0|cc&a+cb&b+ca)l=(a+b+c)/2.0;s=sqrt(l*(l-a)*(l-b)*(l-c);prin
20、tf(area of triangle:%f,s);else printf(Illegal input!n);例例4.16 输入三角形的输入三角形的3个边长个边长a、b、c,求出三角形的面积。提示:用海伦求出三角形的面积。提示:用海伦公式公式S=sqrt(l*(l-a)*(l-b)*(l-c),其中其中l是半周长,是半周长,sqrt是求平方根的函数,在是求平方根的函数,在math.h中定义。中定义。运行结果如下:运行结果如下:Please input three numeric value:3 4 5 area of triangle:6.000000#include void main()i
21、nt c;float pay,discount;printf(Input customer rank:n);scanf(%d,&c);printf(Input amount of payment:n);scanf(%f,&pay);if(c=1)discount=0.9;else if(c=2)discount=0.85;else if(c=3)discount=0.8;else discount=1.0;pay=pay*discount;printf(You should pay:%.2fn,pay);例例4.17 某商店实行会员制,某商店实行会员制,为不同的会员设定了不同为不同的会员设定了
22、不同的折扣,普通会员打九折,的折扣,普通会员打九折,银卡会员打八五折,金卡银卡会员打八五折,金卡会员打八折。编写程序,会员打八折。编写程序,根据用户输入的会员等级根据用户输入的会员等级和所购商品总金额,输出和所购商品总金额,输出应付金额。应付金额。运行情况如下:运行情况如下:Input customer rank:1 Input amount of payment:50 You should pay:45.00条件运算符与表达式条件运算符与表达式v一般形式:一般形式:expr1?expr2 :expr3v执行过程执行过程v功能:相当于条件语句,但不能取代一般功能:相当于条件语句,但不能取代一般
23、if语句语句例例if(ab)printf(“%d”,a);elseprintf(“%d”,b);printf(“%d”,ab?a:b);v条件运算符可嵌套条件运算符可嵌套 如如 x0?1:(xb?a:cd?c:d ab?a:(cd?c:d)vexpr1、expr2、expr3类型可不同,表达式值取较高的类型可不同,表达式值取较高的类型类型例例x?a:b/x=0,表达式值为表达式值为b;x0,表达式值为表达式值为axy?1:1.5/xy,值为值为1.0;x0?a+b:a-b);例例(a=b)?Y:N(x%2=1)?1:0(x=0)?x:-x(c=a&c=z)?c-a+A:cvif语句嵌套语句嵌套
24、:l一般形式:一般形式:if(expr1)if(expr2)statement1 else statement2else if(expr3)statement3 else statement4内嵌内嵌if内嵌内嵌ifif(expr1)if(expr2)statement1 else if(expr3)statement 2 else statement3内嵌内嵌ifif(expr1)if(expr2)statement1else if(expr3)statement 2 else statement3 if(expr1)statement1else if(expr3)statement3 el
25、se statement4内嵌内嵌ifif()if()if()else.else.else.lif else 配对原则:配对原则:缺省缺省 时,时,else总是和总是和它上面离它最近的未配对的它上面离它最近的未配对的if配对配对if else 配对原则配对原则:例例4.18 求解一元二次方程求解一元二次方程ax2+bx+c=0的根。的根。#include#include void main()float a,b,c,delta,x1,x2,realpart,imagpart;scanf(%f,%f,%f,&a,&b,&c);printf(The equation);if(fabs(a)=1e-
26、6)printf(is not quadratic.n);else delta=b*b-4*a*c;if(fabs(delta)0)/else if(delta0)x1=(-b+sqrt(delta)/(2*a);x2=(-b-sqrt(delta)/(2*a);printf(has distinct real roots:%.4f and%.4fn,x1,x2);else realpart=-b/(2*a);imagpart=sqrt(-delta)/(2*a);printf(has complex roots:n);printf(t%.4f+%.4fi and,realpart,imagp
27、art);printf(%.4f-%.4fin,realpart,imagpart);switch语句语句(开关分支语句开关分支语句)v一般形式:一般形式:switch(表达式表达式)case E1:语句组语句组 1;break;case E2:语句组语句组 2;break;.case En:语句组语句组 n;break;default:语句组语句组n+1;break;v执行过程执行过程:switch表达式表达式语句组语句组1语句组语句组2语句组语句组n语句组语句组.E 1E 2Endefaultcase v说明:说明:lE1,E2,EnE1,E2,En是是常量表达式常量表达式,且值必须互不相
28、同且值必须互不相同l语句标号作用,必须用语句标号作用,必须用break跳出跳出lcase后可包含多个可执行语句,且不必加后可包含多个可执行语句,且不必加 lswitchswitch可嵌套可嵌套l多个多个case可共用一组执行语句可共用一组执行语句如:如:case A:case B:case C:printf(“score60n”);break;.例例 switch(score)case 5:printf(“Very good!”);case 4:printf(“Good!”);case 3:printf(“Pass!”);case 2:printf(“Fail!”);default :prin
29、tf(“data error!”);运行结果:运行结果:score为为5时,输出:时,输出:Very good!Good!Pass!Fail!data error!#include main()int c;float pay,discount;printf(Input customer rank:n);scanf(%d,&c);printf(Input amount of payment:n);scanf(%f,&pay);switch(c)case 1:discount=0.9;break;case 2:discount=0.85;break;case 3:discount=0.8;brea
30、k;default:discount=1.0;pay=pay*discount;printf(You should pay:%.2fn,pay);例例4.19 用用switch语句写语句写出例出例4.17的源程序。的源程序。运行情况如下:运行情况如下:Input customer rank:1 Input amount of payment:50 You should pay:45.00补充例子补充例子:输入两个整数,按升序输出输入两个整数,按升序输出。#includemain()int x,y,t;scanf(“%d,%d”,&x,&y);if(xy)t=x;x=y;y=t;Printf(“
31、x、y升序输出为升序输出为:%d,%dn”,x,y)100 x20yt思考题:输入三个数,要思考题:输入三个数,要录按升序输出。录按升序输出。4.4 循环型程序设计循环型程序设计概述概述C语言可实现循环的语句:语言可实现循环的语句:(1)while 语句语句(2)do while 语句语句(3)for 语句语句(4)用用goto 和和 if 构成循环构成循环v一般形式一般形式:while(表达式表达式)循环体语句;循环体语句;v执行流程执行流程:expr循环体循环体假假(0)真真(非非0)while 4.1.1 while语句语句v特点:先判断表达式,后执行循环特点:先判断表达式,后执行循环体
32、体v说明:说明:l循环体有可能一次也不执行循环体有可能一次也不执行l循环体可为任意类型语句循环体可为任意类型语句l下列情况,退出下列情况,退出whilewhile循环循环u条件表达式不成立(为零)条件表达式不成立(为零)u循环体内遇循环体内遇break,return,gotobreak,return,gotol无限循环无限循环:while(1):while(1)循环体循环体;例例4.20 用用whilewhile循环求自然数循环求自然数1 1100100的和的和/#include main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%d,
33、sum);循环初值循环初值循环终值循环终值循环变量增值循环变量增值循环条件循环条件循环体循环体sum=1+2+3+100sumsum=0+1sum=1+2=3sum=3+3=6sum=6+4sum=4950+100=5050补充例补充例 子:子:显示显示110的平方的平方#include main()int i=1;while(i=10)printf(%d*%d=%dn,i,i,i*i);i+;运行结果:运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100dowhile语句语句v一般形式:一般形式:do 循环体语句;
34、循环体语句;while(表达式表达式);v执行流程执行流程:do循环体循环体expr假假(0)真真(非非0)while4.1.2dowhile语句语句v特点:先执行循环体,后判断表达式特点:先执行循环体,后判断表达式v说明:说明:l至少执行一次循环体至少执行一次循环体ldowhile可转化成可转化成while结构结构expr循环体循环体假假(0)真真(非非0)循环体循环体While循环循环例例4.21 4.21 用用dodowhilewhile循环求自然数循环求自然数1 1100100的和的和/#include main()int i,sum=0;i=1;do sum+=i;i+;while(
35、i=100);printf(%dn,sum);例例 while和和dowhile比较比较#include main()int i,sum=0;scanf(%d,&i);do sum+=i;i+;while(i=10);printf(%dn,sum);main()int i,sum=0;scanf(%d,&i);while(i=10)sum+=i;i+;printf(%dn,sum);v一般形式:一般形式:for(expr1;expr2;expr3)循环体语句;循环体语句;v执行流程执行流程:expr2循环体循环体假假(0)真真(非非0)forexpr1expr34.4.3 for语句语句vfo
36、r语句一般应用形式语句一般应用形式:for(循环变量赋初值;循环条件;循环变量增值循环变量赋初值;循环条件;循环变量增值)循环体语句;循环体语句;v说明:说明:lfor语句中语句中expr1,expr2,expr3 类型任意,都可省略,但类型任意,都可省略,但分号;不可省分号;不可省l无限循环无限循环:for(;)lfor语句可以转换成语句可以转换成while结构结构expr1;while(expr2)循环体语句;循环体语句;expr3;例例 用用for循环求循环求#include main()int i,sum=0;for(i=1;i=100;i+)sum+=i;printf(%d,sum)
37、;例:例:#include main()int i=0;for(i=0;i10;i+)putchar(a+i);运行结果:运行结果:abcdefghij例:例:#include main()int i=0;for(;i10;i+)putchar(a+i);例:例:#include main()int i=0;for(;i10;)putchar(a+(i+);例:例:#include main()int i=0;for(;i10;putchar(a+i),i+);main()int i,j,k;for(i=0,j=100;i=j;i+,j-)k=i+j;printf(%d+%d=%dn,i,j,
38、k);#includemain()char c;for(;(c=getchar()!=n;)printf(%c,c);#include main()int i,c;for(i=0;(c=getchar()!=n;i+=3)printf(%c,i+c);循环的嵌套循环的嵌套v三种循环可互相嵌套三种循环可互相嵌套,层数不限层数不限v外层循环可包含两个以上内循环外层循环可包含两个以上内循环,但不能相互交叉但不能相互交叉v嵌套循环的执行流程嵌套循环的执行流程(1)while()while().(2)do do while();.while();(3)while()do while();.(4)for(
39、;)do while();while().内循环内循环外循环外循环内循环内循环v嵌套循环的跳转嵌套循环的跳转禁止:禁止:l从外层跳入内层从外层跳入内层l跳入同层的另一循环跳入同层的另一循环l向上跳转向上跳转4.4.54.4.5循环的嵌套循环的嵌套4.4.6break语句和语句和continue语句语句辅助控制语句辅助控制语句break语句语句v功能:在循环语句和功能:在循环语句和switch语句中语句中,终止终止并跳出循环体或开关体并跳出循环体或开关体v说明:说明:lbreak只能只能终止并跳出终止并跳出它所在的最内它所在的最内层层的结构的结构lbreak不能用于循环语句和不能用于循环语句和s
40、witch语语句之外的任何其它语句之中句之外的任何其它语句之中exprbreak;假假(0)真真(非非0)whiledobreak;.expr假假(0)真真(非非0)whileexpr2break;.假假(0)真真(非非0)forexpr1expr3switchexpr语句组语句组1break;语句组语句组2break;语句组语句组nbreak;语句组语句组break;.const 1const 2const ndefaultcase 例例4.24 :输出圆面积,:输出圆面积,半径从半径从110,面积大于面积大于100时为止时为止。#define PI 3.14159main()int r;f
41、loat area;for(r=1;r100)break;printf(r=%d,area=%.2fn,r,area);运行结果如下:运行结果如下:r=1,area=3.14 r=2,area=12.57 r=3,area=28.27 r=4,area=50.27 r=5,area=78.54例例:break举例:小写字母转换成大写字母举例:小写字母转换成大写字母,直至输入非字母字符直至输入非字母字符#include main()int i,j;char c;while(1)c=getchar();if(c=a&c=z)putchar(c-a+A);else break;continue语句语
42、句v功能:结束本次循环,跳过尚未执行的语句,进功能:结束本次循环,跳过尚未执行的语句,进行下一次是否执行循环体的判断行下一次是否执行循环体的判断v仅用于循环语句中仅用于循环语句中exprcontinue;假假(0)真真(非非0)while真真(非非0)docontinue;.expr假假(0)whileexpr2continue;.假假(0)真真(非非0)forexpr1expr3#include void main()int n,i=0;for(n=101;n150;n+)if(n%3=0)continue;printf(%d,n);i+;if(i%10=0)printf(n);printf
43、(n);运行结果如下:运行结果如下:101,103,104,106,107,109,110,112,113,115,116,118,119,121,122,124,125,127,128,130,131,133,134,136,137,139,140,142,143,145,146,148,149,例例4.25 把大于把大于100且小于且小于150的不能被的不能被3整除的整数输出整除的整数输出。例例:求输入的十个整数中正数的个数及其平均值求输入的十个整数中正数的个数及其平均值/#include main()int i,num=0,a;float sum=0;for(i=0;i10;i+)sca
44、nf(%d,&a);if(a=0)continue;num+;sum+=a;printf(%d plus integers sum:%6.0fn,num,sum);printf(Mean value:%6.2fn,sum/num);v功能:无条件转移语句功能:无条件转移语句v说明:说明:l不能用整数作标号不能用整数作标号l只能出现在只能出现在gotogoto所在函数内所在函数内,且唯一且唯一l只能加在可执行语句前面只能加在可执行语句前面l限制使用限制使用gotogoto语句语句goto语句及用语句及用goto构成循环构成循环vgoto语句一般格式:语句一般格式:goto 语句标号语句标号;.标
45、号:语句标号:语句;例例 用用if 和和goto语句构成循环,求语句构成循环,求/#include main()int i,sum=0;i=1;loop:if(i=100)sum+=i;i+;goto loop;printf(%d,sum);循环初值循环初值循环终值循环终值循环变量增值循环变量增值循环条件循环条件循环体循环体例例:从键盘输入一组数据,以从键盘输入一组数据,以0结束输入,求数据和结束输入,求数据和/#include main()int number,sum=0;while(1)scanf(%d,&number);if(!number)break;sum+=number;print
46、f(The total sum is%dn,sum);程序举例程序举例t=1,pi=0,n=1.0,s=1当当|t|1e-6pi=pi+tn=n+2s=-st=s/npi=pi*4输出输出pi分子:分子:1,-1,1,-1分母:分母:1,3,5,7,.例例 求求Fibonacci数列:数列:1,1,2,3,5,8,的前的前40个数个数f1=1,f2=1for i=1 to 20输出输出f1,f2f1=f1+f2f2=f2+f11534233159710946750255142293524578241578171855377258417711121393832040570288739088169
47、213896104181286571964181346269922746563245986321144987676546368317811217830914930352102334155for(i=1;i10;i+)for(j=1;j10;j+)循环体循环体外循环外循环内循环内循环i10循环体循环体假假(0)真真(非非0)i=1j+j=1j10真真(非非0)假假(0)i+双重循环双重循环i1*1=13457891*2=2 46810121416181*3=3691215182127918273645546372811*1=12*1=2 2*2=43*1=3 3*2=6 3*3=94*1=4 4
48、*2=8 4*3=12 4*4=165*1=5 5*2=10 5*3=15 5*4=20 5*5=256*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=367*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=498*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=649*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81/#include main()int i,j;for(i=1;i10;i+)printf(“
49、”);/输出几个空格,使九九表居屏幕中输出几个空格,使九九表居屏幕中间间 for(j=1;j=i;j+)/输出第输出第I行的九九表行的九九表 printf(“%d*%d=%2d ,i,j,i*j);printf(“n”);j例例:输出九九表输出九九表例例 判断判断m是否素数是否素数读入读入mk=mi=2当当i km被被i整除整除真真假假用用break结束循环结束循环i=i+1i k+1真真假假输出输出:m”是素数是素数”输出输出:m”不不是素数是素数”例例 译密码译密码例如例如 Hello,world!译成密码:译成密码:Lipps,asvph!#include void main()char
50、 c;int i,j;float s=0;for(c=A;c=Z;c+)for(i=1;i80;i+)/*从屏幕的左边逐步走向屏幕的右边从屏幕的左边逐步走向屏幕的右边*/printf(%c,c);for(j=1;j10000;j+)s=s+i*3/4;/*起延时作用起延时作用*/printf(b);/*注意:注意:b后面有一个空格后面有一个空格 */printf(r);例例4.28 将将26个英文字母分别从屏幕的左边出现逐步走向屏幕的右边。个英文字母分别从屏幕的左边出现逐步走向屏幕的右边。#include void main()int c,digit=0,space=0,other=0;pri