欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    C语言快速入门-4(周).ppt

    • 资源ID:6503856       资源大小:1.10MB        全文页数:72页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言快速入门-4(周).ppt

    ,2.5 程序控制结构,C语句概述,C语句分为,5类,控制语句函数调用语句表达式语句空语句复合语句,C语言的语句(statement)以“;”作分隔符,编译后产生机器指令。,C语句概述,(一)控制语句,完成一定的控制功能1 if()else 条件语句 6 break 间断语句 2 for()循环语句 7 switch()开关语句3 while()循环语句 8 goto 转向语句 4 do while();循环语句 9 return 返回语句5 continue 继续语句,(二)函数调用语句 有一个函数调用加一个分号构成一个语句 printf(“This is a C statement.”);,例:,C语句概述,(三)表达式语句 有一个表达式加一个分号构成一个语句,C语句概述,(四)空语句,只有一个分号的语句(什么也不做)用来做流程的转向点用来作为循环语句中的循环体,;,C语句概述,(五)复合语句 用一对 括起来的语句 z=x+y;t=z/100;printf(“%f”,t);,例:,C语句概述,B,A,2.6 顺序结构,#include#include void main()float a,b,c,s,area;scanf(%f%f%f,输入:3 4 6 输出:a=3.00,b=4.00,c=6.00 s=6.50 area=5.33,【例】输入三角形的三边长,求三角形面积。其中s=(a+b+c)/2,顺序结构程序中语句自上而下顺序执行,无分支、无转移、无循环。,【例】交换a,b的值。,设一个中间变量t暂存数据,其操作步骤为:(1)将a存入t,语句为t=a;(2)将b赋给a,语句为a=b;(3)将t赋给b(原来a 的值),语句为 b=t;正确的交换方法:t=a;a=b;b=t;不能只写下面两个赋值语句a=b;b=a;,a,b,t,b,a,a,b,t,a,b,t,a,b,t,a,b,t,a,b,t,a,b,t,2.7 选择结构,如果没有条件判断语句,世界上最先进的计算机也只是一个计算器。选择结构使得计算机表现出具有智能。,1.基本选择结构(ifelse结构),表2-11:选择结构的基本编程模式,B,N,A,Y,条 件P,分支结构(选择结构),#include void main()int a,b,t;scanf(%d%d,【例】将二数(a,b)中的大数存放到a中。,5 10a=10,b=5,分析:假设有三个数a,b,c,用变量max3表示三个数中的最大的数。将三个数分成两组,a,b为一组,c为一组;先求a,b中的最大数,如果 ab,则max3=a,否则max3=b;将a,b的最大数max3与c比较,如果max3c,则max3就是三个数中的最大数,否则c是三个数中的最大数,max3=c;,【例2-9】从键盘任意输入三个数,输出三个数中最大的数,#include void main()float a,b,c,max3;printf(输入三个数a,b,c:);scanf(%f%f%f,【例2-9】从键盘任意输入三个数,输出三个数中最大的数,输入三个数a,b,c:3 4 5max3=5.000000,2.条件表达式,含义:如果表达式1的值非0(为真),则该条件表达式的结果就是表达式2的值否则,是表达式3的值,表达式3,N,表达式2,Y,表达式1,【例】输入一个英文字母,判断是否为英文大写字母,若是大写字母直接输出,否则转换成大写字母输出。,#include void main()char ch;scanf(%c,aA,AA,3.多分支选择结构,多路选择switch(表达式)case 常量表达式1:语句序列1;case 常量表达式2:语句序列2;default:语句序列n;default可以没有,但最好不省略不要忘记break,多分支选择结构(switchcase),switch(expr)case M1:S_1;break;case M2:S_1;break;case Mn:S_n;break;default:S_d;,switch语句的执行过程是:计算expr的值(整型)计算出每个常量表达 式M1,M2,Mn的值(整型)让expr依次同M1,M2,进行比较,多分支选择,switch(expression)case value1:statement1;break;case value2:statement2;break;default:statementX;break;,Example:switch(month)case 1:printf(“Januaryn”);break;case 2:printf(“Februaryn”);break;case 3:printf(“Marchn”);break;default:printf(“Othersn”);break;printf(“End”);,January_,JanuaryEnd _,多分支选择,Example:switch(month)case 1:printf(“Januaryn”);break;case 2:printf(“Februaryn”);break;case 3:printf(“Marchn”);break;default:printf(“Othersn”);break;printf(“End”);,多分支选择,Example:switch(month)case 1:printf(“Januaryn”);break;case 2:printf(“Februaryn”);case 3:printf(“Marchn”);break;default:printf(“Othersn”);break;printf(“End”);,February_,March _,End _,多分支选择,Example:switch(month)case 1:printf(“Januaryn”);case 2:printf(“Februaryn”);case 3:printf(“Marchn”);default:printf(“Othersn”);break;printf(“End”);,若month=34?,多分支选择,(1)switch后的表达式可以为任何具有整型值的表达式。(2)关键字case后的整型常量表达式的值是整型。注意各case后的整型常量表达式之值必须互不相同。(3)“语句组”可以是一条或多条合法的语句,但必将它们放在一个复合语句中。(4)break是C 语言的一种语句,其功能是中断正在执行的语句。在switch 语句中的作用是:执行完某个语句组后,将退出该switch语句。(如果省略了break语句,则执行完某个语句组后,将继续执行其后边的语句组。),3.多分支选择结构,【例】将百分制成绩分段。,#include void main()int s;scanf(%d,switch(s/10)case 1:case 2:case 3:case 4:,case 5:printf(E.n);break;case 6:printf(D.n);break;case 7:printf(C.n);break;case 8:printf(B.n);break;case 9:default:printf(A.n);,95A.,void main()float score;char grade;printf(请输入成绩:);scanf(%f,请输入成绩:95.5成绩是95.5,相应等级是A。,【例2-13】分析下面程序段中的错误,float x=2;int a=3,b=1;switch(2*x)case 2.5:printf(“%f”,2*x);break;case a+b:printf(“%d”,a+b);case 2,3,4:printf(“%d%d%d”,2,3,4);,/错误:2*x是浮点型表达式,/错误:2.5是浮点常量表达式,/错误:a+b是不是整型常量表达式,因为a,b是变量,/错误:case子句只能有一个常量表达式,2.8 循环结构,我们之所以感到计算机无所不能,是因为计算机能不厌其烦地重复大量枯燥的工作。,计数控制,标记控制,循环结构术语,循环条件结构中的测试表达式 循环体每个循环周期均要执行的语句序列 循环控制变量控制条件真/假值的变量。,对循环控制变量应做如下处理:赋初值;将其代入正确的循环条件;更新/调整,【累加型】计算1+2+3+n,通项公式,【累乘型】计算n!=1 2 3 n,通项公式,s=0;for(i=1;i=n;i+)s=s+i;,p=1;for(i=1;i=n;i+)p=p*i;,注意:,整型定义为long 或 unsigned long 型,智人之法:归纳法(递推法),s=1*1+2*2+3*3,循环结构的应用场合,1*1+2*2+3*3=?,s=1*1+2*2+100*100,1*1+2*2+99*99+100*100=?,for(i=1,s=0;i=100;i+)s+=i*i;,1.for循环结构,for(表达式1;表达式2;表达式3)语句;首先执行表达式1。如果表达式2的值为非0,就重复执行语句和表达式3,直到表达式2的值为0时止,循环起始条件,循环结束条件,循环增量,for循环的一般格式:,for(表达式1;表达式2;表达式3)S;,#include void main()int i,sum=0;for(i=1;i=100;i+)sum+=i;printf(sum=%d,i=%dn,sum,i);,sum=5050,i=101,【例】用for循环求s=1+2+3100,#include main()int i,n,s;printf(输入自然数n=);scanf(%d,for循环结构,输入自然数n=99前99个自然数的和=4950,A,条 件P,A,当型循环,直到型循环,真,假,假,条 件P,假,真,2.while,dowhile 循环结构,void main()int i=1,sum=0;while(i=100)sum=sum+i;i+;printf(sum=%dt,sum);printf(i=%d,i);,注意:1、如果语句超过一个,则必须用 构成复合语句 2、注意修改循环变量的语句,sum=5050 i=101,【例】用while循环求s=1+2+3100,counter 1,sum 0,counter6,sum sum+n,false,true,counter+,output sum,input n,1,counter,sum,0,1 6true,2,n,0+2,2,2,2 6true,3,2+3,5,3,3 6true,4,5+4,9,4,4 6true,5,9+5,14,5,5 6true,6,14+6,20,6,6 6false,This loop iscounter-controlled,The counter increases by 1,Uses only 3 variables,Assume input example:2 3 4 5 6,计数控制的循环,void main()int counter=1,sum=0,n;while(counter6)scanf(%d,注意:counter 不参加运算,counter 控制重复运算的次数counter 可以修改,保证执行5次,【例】求从键盘上任意输入5个数的和,2 3 4 5 6sum=20,i 0,sum 0,i 5,sumsum+x,false,true,i+,output sum,input x,int x,sum,i;sum=0;for(i=0;i 5;i+)scanf(“%d”,printf(“%d”,sum);,void main(),int sum,x;sum=0;scanf(“%d”,0,1,_,1,1 0,0+1,1,13,3,3 0,1+3,4,1323,23,23 0,4+23,27,1323-9,-9,-9 0,The sum:27,标记控制的循环,void main(),循环嵌套与多重循环,在一个循环的循环体内又包含另一个循环,称为循环嵌套。两层循环嵌套结构称为双层循环;两层以上的嵌套结构,则称为多重循环。,循环的嵌套(多重循环),for(h=0;h=23;h+)for(m=0;m=59;m+)for(s=0;s=59;s+),3.循环辅助语句,break statement,printf(“Input a value between 1 7:”);scanf(“%d”,value,?,i,i=7,i=value,Input a value between 1-7:_,Input a value between 1-7:4,1,1=7 true,1=4 false,4,Input a value between 1-7:41,2,2=7 true,2=4 false,Input a value between 1-7:412,3,3=7 true,3=4 false,Input a value between 1-7:4123,4,4=7 true,4=4 true,Input a value between 1-7:5123 Im out of the loop!,Now what can you conclude about break?,break?退出一层循环或switch,continue statement,Example:for(i=0;i=5;i+)if(i%2)continue;elseprintf(“%d is an even number.”,i);printf(“Print iff even!n”);ii=5i%2,_,0,0=5 true,0,1=5 true,1,2=5 true,3=5 true,4=5 true,5=5 true,1,6=5 false,2,3,4,1,0,1,0,0 is an even number._,0 is an even number.Print iff even!_,0 is an even number.Print iff even!2 is an even number._,0 is an even number.Print iff even!2 is an even number.Print iff even!_,0 is an even number.Print iff even!2 is an even number.Print iff even!4 is an even number._,0 is an even number.Print iff even!2 is an even number.Print iff even!4 is an even number.Print iff even!_,Now what can you conclude about continue?,continue?中断此次循环体的执行,开始下一次,5,6,#include main()int i,n;for(i=1;i=5;i+)printf(Please enter n:);scanf(%d,Please enter n:10n=10Please enter n:-10Program is over!,break语句的用法,#include main()int i,n;for(i=1;i=5;i+)printf(Please enter n:);scanf(%d,Please enter n:10n=10Please enter n:-10Please enter n:20n=20Please enter n:-20Please enter n:30n=30Program is over!,continue语句的用法,说明:1、break语句可用于switch语句结构中 也可用于循环中。2、continue语句只可用于循环中。3、在循环嵌套中break与continue都只 影响包含它的那层循环4、少用为妙,习题2_28:选择下面程序的运行结果,#include void main(void)int i;for(i=1;i=5;i+)if(i%2)printf(*);else continue;printf(#);printf($n);,A)*#*#*#$B)#*#*#*$C)*#*#$D)#*#*$,一般形式:goto 语句标号;语句标号:或 语句标号:goto 语句标号;,4.goto语句,void main()int i,s;i=1;s=0;loop:/*标号作用*/if(i=100)s+=i;+i;goto loop;printf(%dn,s);,5050,通常goto语句与if条件语句连用,【例】用goto语句求s=1+2+3100,是goto的过错?还是程序员的过错?,破坏了结构化设计风格容易带来错误隐患 goto next;int sum=0;/*被goto跳过*/next:,Evil gotos?Maybe Not凌波微步,未必摔跤,现代观点认为:混乱根源不在goto,而在标号任何程序都可以不用goto就实现其功能但在某些情况下,使用goto可以让程序更清晰两种适合使用goto的情况跳向共同的出口位置,进行退出前的处理工作跳出多重循环的一条捷径 goto error;,使用goto的原则,主张少用、慎用,而不是禁用保证使用之后,程序仍然是单入口,单出口不要使用一个以上的标号不要让goto制造出永远不会被执行的代码,【例2-22】从键盘输入一个整数n,按下式计算y的值,并输出y和n的值y=1!+2!+3!+n!,分析:使用自顶向下,逐步求精的原则设计这个算法第一步:根据题意,得到算法的顶层框架描述如下:(1)input(n);(2)y=+(3)output(n,y),方法一:用子函数实现,第二步:对上面第(2)步的求和进行细化y=0;for(i=1;i=n;i+)y=y+factorial(i);,累加,用factorial(i)表示整数i的阶乘。,第三步:求阶乘函数的细化factorial(int i)s_i=1;for(j=1;j=i;j+)s_i=s_i*j;,累乘,方法一:用子函数实现,第四步:将算法变成C语言程序 将算法转换成C语言程序的过程,实际上是将算法中的相关语句、表达式等用符合C语言规范的语句和表达式表达出来。,方法一:用子函数实现,完整程序见教材46页,外循环为累加型内循环为阶乘型,从变化规律分析,sn=0;for(i=1;i=n;i+)tn=1;for(j=1;j=i;j+)tn=tn*j;sn=sn+tn;,方法二,在同一个循环中 先阶乘,后累加,sn=0,tn=1;for(i=1;i=n;i+)tn=tn*i;sn=sn+tn;,从变化规律分析,方法三,/*函数功能:计算i的阶乘 函数入口参数:整型i 函数返回值:阶乘运算结果*/int Factorial(int i)int j,s_i;for(j=1;j=i;j+)s_i*=j;return s_i;,存在三处错误!你能发现吗?,程序调试实例,/*函数功能:计算i的阶乘 函数入口参数:整型i 函数返回值:阶乘运算结果*/long Factorial(int i)int j;long s_i=1;for(j=1;j=i;j+)s_i*=i;return s_i;,程序调试实例,计算复用Factorial函数的代码long Factorial(int number);void main()int m,k;long p;printf(Please input m,k:);scanf(%d,%d,

    注意事项

    本文(C语言快速入门-4(周).ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开