程序控制结构教材.pptx
- 文档编号:30796354
- 上传时间:2023-10-09
- 格式:PPTX
- 页数:55
- 大小:282.64KB
程序控制结构教材.pptx
《程序控制结构教材.pptx》由会员分享,可在线阅读,更多相关《程序控制结构教材.pptx(55页珍藏版)》请在冰豆网上搜索。
C语言程序设计,程序控制结构,C语言的语句,C语言中语句以分号“;”结束,语句分为:
1.声明语句:
在程序编译时处理,在程序运行时不产生相应的操作。
2.执行语句:
在程序运行时向计算机系统发出操作命令,使计算机执行特定的操作。
voidmain()inti;/*声明语句*/printf(%dn,(i=1,+i);/*执行语句*/,C语言的执行语句,表达式语句:
表达式加分号“;”空语句:
仅一个分号“;”构成的语句复合语句:
用一对花括号括起来的多条语句控制语句:
C语言提供9种控制语句,见P62,#includevoidmain()inti;i=abs(-2);/*表达式语句(赋值语句)空语句*/printf(%dn,i);/*表达式语句(函数调用语句)*/,C语言的执行语句,#includevoidmain()inta,b;printf(Pleaseinputa,b:
n);scanf(%d,%d,程序控制结构,程序的三种基本结构顺序结构:
程序执行按照代码书写顺序执行选择结构:
循环结构:
if语句switch语句,当型循环结构(for语句、while语句)直到型循环结构(do-while语句),顺序结构,所谓顺序结构程序就是按代码书写顺序,自上而下执行的语句构成的程序段。
一般顺序结构的流程图为:
动作1,动作2,动作3,例:
计算两个键盘输入的整数的平均值并输出。
开始,输入两个整数,计算平均值,定义三个变量,输出平均值,结束,#includemain()inta,b;floataverage;printf(Pleaseinputa,b:
n);scanf(%d,%d,选择结构,C语言的选择控制语句有两条:
条件选择语句:
if语句开关分支语句:
switch语句,一、if语句的三种形式1、if(表达式)语句,例:
输入一个字母,以小写形式输出该字母。
#includemain()charc;printf(Inputaletter:
);c=getchar();if(c=A,开始,输入一个字母,定义一个字符变量,输出字母,结束,大写字母?
转换为小写字母,真(非0),假(0),选择结构,一、if语句的三种形式2、if(表达式)语句1else语句2,例:
输出实数x,y中的较大者。
#includemain()floatx,y;printf(Inputx,y:
);scanf(%f,%f,开始,输入两个实数,定义两个实型变量,输出x,结束,xy?
输出y,真(非0),假(0),选择结构,一、if语句的三种形式3、if(表达式1)语句1elseif(表达式2)语句2.elseif(表达式n)语句nelse语句n+1,例:
输入百分制成绩,要求输出相应的五级制成绩。
百分制成绩与五级制成绩之间的转换标准为:
90分以上为“A”;8089分为“B”;7079分为“C”;6069分为“D”;60分以下为“E”。
#includemain()intscore;printf(Pleaseinputthescore(0100):
);scanf(%d,elseif(score=80)printf(Bn);elseif(score=70)printf(Cn);elseif(score=60)printf(Dn);elseprintf(En);getch();,例:
在一对/*/之间补充程序,使对其输入的一个月工资数额,求应交税款。
设应交税款的计算公式如下:
如:
输入:
4500输出:
f(4500.00)=30.00输入:
6500输出:
f(6500.00)=195.00输入:
9500输出:
f(9500.00)=645.00,#includevoidmain()floatx;doubley;printf(Pleaseinputanumber:
n);scanf(%f,if(x=3500)y=0;elseif(x=5000)y=(x-3500)*0.03;elseif(x=8000)y=(x-3500)*0.1-105;elseif(x=12500)y=(x-3500)*0.2-555;,if语句的嵌套,if语句的嵌套:
一个if语句的if分支、elseif分支或else分支中又完整地包含了另一个if语句。
if(表达式1)if(表达式2)语句1else语句2elseif(表达式3)语句3else语句4,书写代码时,写出层次关系,例:
有如下一函数,请判断以下哪个程序是正确的?
程序1:
main()intx,y;scanf(%d,例:
有如下一函数,请判断以下哪个程序是正确的?
程序2:
main()intx,y;scanf(%d,例:
有如下一函数,请判断以下哪个程序是正确的?
程序3:
main()intx,y;scanf(%d,y=-1;if(x!
=0)if(x0)y=1;elsey=0;,例:
有如下一函数,请判断以下哪个程序是正确的?
程序4:
main()intx,y;scanf(%d,y=0;if(x=0)if(x0)y=1;elsey=-1;,例:
以下程序的输出结果是?
#includemain()inta,b,c,x;a=b=c=0;x=35;if(!
a)x-;elseif(b);if(c)x=3;elsex+=4;printf(x=%dn,x);,x=38,inta=1;switch(a)case1:
a+=1;break;case2:
a+=2;break;default:
a+=0;printf(%dn,a);,选择结构,二、switch语句,switch语句的一般形式:
switch(表达式)case常量表达式1:
语句组1;break;case常量表达式2:
语句组2;break;case常量表达式n:
语句组n;break;default:
语句组n+1;,多分支选择结构:
根据一个表达式的不同取值来实现对分支的选择。
#includemain()chargrade;grade=getchar();grade=(grade=a,每个分支的常量的值必须互不相同,各个分支允许内嵌多个语句,而且可以不用括起来,最后一个分支可以不加break语句,#includemain()chargrade;grade=getchar();switch(grade)default:
printf(Errorn);break;caseA:
casea:
printf(90100n);break;caseB:
caseb:
printf(8089n);break;caseC:
casec:
printf(7079n);break;caseD:
cased:
printf(6069n);break;caseE:
casee:
printf(60n);break;,无论default分支是否最后出现,它都是作为最后一个分支来考虑,允许多个case共用一组执行语句,例:
以下程序的输出结果是?
main()intx=1,y=0,a=0,b=0;switch(x)case1:
switch(y)case0:
a+;break;case1:
b+;break;case2:
a+;b+;break;case3:
a+;b+;printf(a=%d,b=%dn,a,b);,a=2,b=1,break;,a=1,b=0,例:
运行以下程序段,结果为:
()intt=3;switch(t)case1:
printf
(1);break;case2:
printf
(2);break;case3:
printf(3);break;default:
printf(Error!
);A)1B)2C)3D)Error!
D,intt=49;,A,循环结构,循环结构的特点是在给定的条件成立时,反复执行某程序段,直到条件不成立。
循环条件:
给定的条件循环体:
反复执行的程序段,C语言的循环控制语句有三种:
while语句do-while语句for语句,循环结构(while),while(循环条件表达式)循环体,main()intn=1,sum=0;while(n=100)sum+=n;+n;printf(n=%d,sum=%dn,n,sum);,去掉花括号?
while(n=100);?
循环结构(do-while),do循环体while(循环条件表达式);,main()intn=1,sum=0;dosum+=n+;while(n=100);printf(n=%d,sum=%dn,n,sum);,勿忘分号“;”,While与do-while的比较,main()intsum=0,n;scanf(%d,main()intsum=0,n;scanf(%d,输入1时,结果相同,都是输出55,输入11时,结果就不相同了,分别输出0和11,循环结构(for),for(表达式1;表达式2;表达式3)循环体,main()intn,sum=0;for(n=1;n=100;n+)sum+=n;printf(n=%d,sum=%dn,n,sum);,表达式1只执行一次,常用于对循环变量赋初值,表达式2:
循环条件表达式,表达式3常用于循环变量的更新,每次执行完循环体后执行一次,循环结构(for结构的变形),main()intn,sum;for(n=1,sum=0;n=100;sum+=n,n+);printf(n=%d,sum=%dn,n,sum);,for(,;表达式2;,)循环体/*表达式1、3用逗号表达式*/,for(;表达式2;表达式3)循环体/*表达式1缺省*/,main()intn=1,sum=0;for(;n=100;n+)sum+=n;printf(n=%d,sum=%dn,n,sum);,for(;表达式2;)循环体/*表达式1、3缺省*/,main()intn=1,sum=0;for(;n=100;)sum+=n+;printf(n=%d,sum=%dn,n,sum);,for(;)循环体/*表达式1、2、3都缺省*/,main()intn=1,sum=0;for(;)sum+=n+;if(n100)break;printf(n=%d,sum=%dn,n,sum);,其它程序流程控制(break),break语句:
在switch中退出switch结构;在循环中退出循环。
例:
将数字512表示成两个数的和,这两个数分别为15和13的倍数。
main()inti;for(i=1;i+)if(!
(512-i*15)%13)break;printf(%d+%d=512n,i*15,512-i*15);,inti;for(i=1;(512-i*15)%13;i+);printf(%d+%d=512n,i*15,512-i*15);,其它程序流程控制(continue),continue语句:
结束本次循环,跳过循环体后面的语句,开始下一轮循环(循环的短路)。
例:
输出100200之间所有能被7或9整除的整数。
main()inti,n=0;for(i=100;i=200;i+)if(i%7!
=0),for(i=100;i=200;i+)if(i%7=0)|(i%9=0)printf(%5d,i);n+;if(n%5=0)printf(n);,break语句与continue语句的比较,voidmain()intsum=0,item=0;while(item=6)break;printf(%dn,sum);,输出6break结束整个循环,voidmain()intsum=0,item=0;while(item5)item+;if(item=2)continue;sum+=item;printf(%dn,sum);,输出13continue结束本次循环,例:
程序的输出结果是?
voidmain()inti,a=0,b=0,c=0,d=0;for(i=1;i=4;i+)switch(i)case1:
a=1;continue;case2:
b=2;case3:
c=3;break;case4:
d=4;printf(%d%d%d%dn,a,b,c,d);,123012301234,循环的嵌套,循环嵌套:
一个循环体中又包含循环结构。
最常见的循环嵌套为for结构嵌套,main()inti,j;for(i=0;i2;i+)/*外循环*/for(j=0;j2;j+)/*内循环*/printf(i=%d,j=%dn,i,j);,输出结果:
i=0,j=0i=0,j=1i=1,j=0i=1,j=1,例:
打印算术口诀表,main()inti,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-3d,i,j,i*j);printf(n);,1*1=12*1=22*2=43*1=33*2=63*3=94*1=44*2=84*3=124*4=165*1=55*2=105*3=155*4=205*5=25,例:
以下程序是利用穷举法打印出所有的“水仙花数”。
所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。
例如153是一个水仙花数,因为153=13+53+33.,main()inti,j,k,m1,m2;for(i=1;i=9;i+)for(j=0;j=9;j+)for(k=0;k=9;k+)m1=i*100+j*10+k;m2=i*i*i+j*j*j+k*k*k;if(m1=m2)printf(%4d,m1);,例:
求解百马百担问题:
有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马数可分别为多少?
有多少种解决方案?
voidmain()intx,y,z,n=0;for(x=0;x=100;x+)for(y=0;y=100;y+)for(z=0;z=100;z+)if(x+y+z=100,例:
程序的功能是求一堆零件的总数(100到200之间)。
如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。
#includevoidmain()inti;for(i=100;i=200;i+)if(i%4=2,例:
程序的功能是求满足等式xyz+yzz=520的x,y,z值(其中xyz和yzz分别表示一个三位数)。
在一对/*/之间改错。
voidmain()intx,y,z,i,result=520;for(x=1;x10;x+)for(y=1;y10;y+)/*/for(z=1;z10;z+)/*/i=100*x+10*y+z+100*y+10*z+z;/*/if(i=result)/*/printf(x=%d,y=%d,x=%dn,x,y,z);getch();,for(z=0;z10;z+),i=result,例:
程序的功能是输出用1元、2元和5元的纸币组成10元钱的所有组合。
在一对/*/之间补充程序。
voidmain()inti,j,k;intnum=0;printf(No.1yuan2yuan5yuann);for(k=0;k=2;k+)for(j=0;j=5;j+)for(i=0;/*/*/;i+)if(/*/*/)num+;printf(%9d%9d%9d%9dn,num,i,j,k);,i=10,k*5+j*2+i=10,例:
在一对/*/之间补充程序,使其完成圆周率的计算。
#includevoidmain()inti=1,n;doublepi=0.0;printf(Inputaninteger:
);scanf(%d,1.0/(i*i),例:
在一对/*/之间补充程序,使其完成圆周率的计算。
#includevoidmain()longints=1,n=1;doublet=1.0,pi=0;dopi+=t;s=-s;n+=2;t=/*/*/;while(fabs(t)1e-6);pi*=4;printf(pi=%10.6fn,pi);,1.0*s/n,例:
在一对/*/之间补充程序,使其完成以下多项式的计算。
main()floatsum,term,x;intn,k,sign;printf(Inputx,n:
n);scanf(%f,%d,x*x/(2*k-2)/(2*k-1),例:
在一对/*/之间补充程序,使其完成n!
的计算。
main()inti,n;longs=1;printf(Inputn:
);scanf(%d,s*=i,例:
编程求n!
=1!
+2!
+3!
+n!
的值。
main()inti,n;longs,t;printf(Inputn:
);scanf(%d,t*=i,例:
程序的功能是求1+12+123+1234+12345的值。
在一对/*/之间补充程序。
voidmain()inti;intt=0,s=0;for(i=1;i=5;i+)t=/*/*/;s+=t;printf(1+12+123+1234+12345=%dn,s);,t*10+i,例:
编程输出Fibonacci(斐波拉契)数列的前20项。
main()inti,x1=1,x2=1;for(i=1;i=10;i+)printf(%10d%10d,x1,x2);if(i%2=0)printf(n);x1=x1+x2;x2=/*/*/;,x2+x1,例:
输入一个大于或等于3的整数,判断这个数是否为素数。
素数定义:
只能被1和本身整除的数,#includemain()inti,m;printf(Inputaninteger:
);scanf(%d,例:
打印3234间所有的素数,每10个换一行。
main()inti,j,k=0;for(i=3;i=234;i+)for(j=2;j=i-1;j+)if(i%j=0)break;if(i=j)printf(%6d%c,i,+k%10=0?
n:
);printf(n);,外循环:
控制待判断数的区间变化for(i=3;i=234;i+)内循环:
作为外循环的一个核心语句,判断当前i是否素数,例:
在屏幕上输出如下图形。
main()inti,j,k;for(i=1;i=8;i+)for(j=1;j=8-i;j+)printf();for(k=1;k=2*i-1;k+)printf(*);printf(n);,*,例:
在屏幕上输出如下图形。
main()inti,j,k;for(i=8;i=1;i-)for(j=1;j=8-i;j+)printf();for(k=1;k=2*i-1;k+)printf(*);printf(n);,*,例:
在屏幕上输出如下图形。
main()inti,j,k;for(i=1;i=8;i+)for(j=1;j=8-i;j+)printf();for(k=1;k=2*i-1;k+)printf(*);printf(n);,*,for(i=7;i=1;i-)for(j=1;j=8-i;j+)printf();for(k=1;k=2*i-1;k+)printf(*);printf(n);,作业,P1214.12、4.19,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序控制 结构 教材