已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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=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,选择结构,二、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(;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);,i1e-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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职船舶与海洋工程装备(船舶导航)试题及答案
- 2025年大学化学(分析化学)试题及答案
- 2025年高职(美容美体艺术)美体塑形阶段测试题及答案
- 禁毒宣传知识课件
- 当前医患关系矛盾焦点
- 神秘杀手信息技术
- 祛斑方法培训课件
- 天津市第九中学2025-2026学年高三上学期12月月考语文试题(含答案)
- 2022-2023学年广东深圳罗湖区九年级上学期11月考英语试题含答案
- 2026广东清远市连南瑶族自治县聚汇劳务派遣有限公司第二次招聘门卫岗位1人备考题库及答案详解(夺冠系列)
- 昼夜明暗图课件
- 临床成人吞咽障碍患者口服给药护理
- 儿童呼吸道合胞病毒感染诊断治疗和预防专家共识 4
- 雨课堂在线学堂《大数据技术与应用》作业单元考核答案
- 全国计算机等级考试一级WPS Office真题题库及答案
- 养牛场消防知识培训
- 义警法律知识培训总结课件
- 实施指南(2025)《DZT 0462.5-2023 矿产资源“三率”指标要求 第 5 部分:金、银、铌、钽、锂、锆、锶、稀土、锗》解读
- 棉尘安全培训课件
- 梯子作业安全培训效果课件
- 管控人力成本课件
评论
0/150
提交评论