版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章第四章目绘制图形项二学习目标了解条件运算及表达式和函数在结构化程序设计中的重要意义理解在解决问题过程中抽象出规律的重要性掌握for语句及循环嵌套以及程序功能设计掌握三种循环语句的区别、联系以及使用情况具有使用switch语句实现简单的菜单选择功能的能力学习路径任务一使用无参函数,实现根据不同内容输出不同图形逻辑运算(1)逻辑运算符的分类
C语言中的逻辑运算符只有3个,即逻辑与(&&)、逻辑或(||)和逻辑非(!),其中逻辑与和逻辑或是双目运算符,逻辑非是单目运算符。类别运算符含义举例双目&&逻辑与:只有参与运算的两个量都为真时,结果才为真,否则为假。1>2&&2>1的值为03>2&&2>1的值为11>2&&2>3的值为02>1&&1>2的值为0
||逻辑或:参与运算的两个量只要有一个为真,结果就为真。两个量都为假时,结果为假。1>2||2>1的值为13>2||2>1的值为11>2||2>3的值为02>1||1>2的值为1单目!逻辑非:参与运算量为真时,结果为假;参与运算量为假时,结果为真。!1的值是0!0的值是1逻辑运算(2)逻辑运算符的优先级和结合性
三个逻辑运算符中,逻辑非“!”的优先级最高,具有右结合性,其次是逻辑与“&&”,最后是逻辑或“||”,逻辑与和逻辑或都具有左结合性。它们的优先级为:!>&&>||。当一个复杂的表达式中既有算术运算符、关系运算符,还有逻辑运算符时,它们之间的优先级如下:算术运算符>关系运算符>逻辑运算符。条件运算条件运算符是C语言中唯一的三目运算符,要求有三个运算对象。由条件运算符组成的表达式称为条件表达式。条件表达式的一般格式如下:①条件表达式的求值规则为:若表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。②条件运算符?和:是一对运算符,不能分开单独使用。③条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。④条件运算符的结合性是自右至左,例如条件表达式嵌套:a>b?a:c>d?c:d,应理解为a>b?a:(c>d?c:d)。表达式1?表达式2:表达式3for和do-while语句
(1)for语句简介
C语言中的for语句使用最为灵活,它完全可以代替while语句。其流程图和执行过程分析可以看出,它相当于while循环中如下形式for(表达式1;表达式2;表达式3){循环体}表达式1;while(表达式2){循环体表达式3;}for和do-while语句
该语句的执行过程为:第一步:执行表达式1;第二步:求表达式2的值,若其值为true(非0),则执行一次循环体,若其值为false,(0),则结束循环,转而执行循环体后面的语句;第三步:执行表达式3,然后转到第二步继续执行。
for循环含义for(sum=0,i=1;i<=10;sum+=i,i++);求1+2+3+4+5+6+7+8+9+10的和for(sum=0,i=1;i<=10;sum+=i,i+=2);求1+3+5+7+9的和for(i=0;;i++);从0开始,1,2,3……不停向上递增,永不停止for(;i<10;);当i大于等于10时停止循环,此语句为死循环for(;(ch=getchar())!='\n';printf("%c",ch));从键盘读入字符,并输出,直到输入字符为回车键时为止for和do-while语句
“表达式1”可以省略,但若使用循环控制变量,则应事先赋初值。“表达式2”可以省略,则循环判断条件永为逻辑真,循环体中没有其他退出语句,则循环将无终止地进行下去。“表达式3”可以省略,但一般应另外有使循环控制变量的值趋向循环结束值的语句,以保证循环能正常结束。三个表达式都可省略,但分号不能省略表达式1中可以同时初始化多个变量,一般用逗号运算。表达式2可以是任意表达式,只要其值为非零,就执行循环体。表达式3可以是任意表达式,例如:逗号表达式、函数调用等。for和do-while语句
(2)do-while语句一般格式
例如,编写程序进行帐号与密码检查,直到帐号和密码输入正确为止
do{循环体}while(表达式);for和do-while语句
(3)三种循环语句的比较三种循环一般情况下可以互相代替。while和do-while循环语句中,循环变量初始化的操作应在while和dowhile语句之前完成;在while后面指定循环条件;在循环体中包含使循环趋于结束的语句(如i++,或i=i+1等)。而for语句可以在表达式1中实现循环变量的初始化;表达式2中是循环条件;表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。for语句的功能更强,凡用while循环能完成的,用for循环都能实现。while和do-while的区别有两点:①无论循环条件是否成立do-while语句的循环体至少执行一次,而while语句的循环体可能一次都不执行;②while语句中,while()后面的分号可以有也可以没有,有和没有表示的含义不一样,多数情况下有分号会出现逻辑错误;do-while语句中,while()后面必须有分号,没有则出现语法错误。
for和do-while语句
(4)嵌套循环嵌套是指一个循环体内又包含另一个完整的循环结构,三种循环语句(while循环、do-while循环和for循环)可以互相嵌套,并且可以多层嵌套。函数概述(1)函数简介
C语言的结构有一个特点,它是由一个个被称为函数的程序块组成的。C源程序是由函数组成的。虽然在前面各章的程序中大都只有一个主函数main),但应用程序往往是由多个函数组成。函数是C源程序的基本结构,通过对函数的调用实现特定的功能。C语言不仅提供了极为丰富的库函数,还允许用户建立自己定义的函数。用户可把自己的算法编成一个个相对独立的函数结构,然后用调用的方法来使用函数。可以说C程序的全部工作都是由各式各样的函数完成的。比如我们先前使用的输入输出函数等。函数概述(2)函数的优势对于每一个函数单独编写和调试,可以简化程序设计。函数的逻辑简单、明确,可以增加程序的可读性,方便维护与调试。采用函数编程,C语言程序易于实现结构化程序设计,从而使程序的层次结构清晰。可以像搭积木一样,把不同函数进行相应组合,实现一个完整的应用程序。函数的重复使用,可以避免重复劳动,提高软件开发效率。函数具有模块化功能,一个程序由功能不同的函数组成,可以分别编写,利于团队开发,能加快程序开发速度。当程序需要扩充新功能时,也不会涉及整个程序的修改,从而使程序具有良好的可维护性和可用性。函数概述(3)函数的分类根据函数的概念我们可以对函数进行分类,在C语言中可从不同的角度对函数分类从函数定义的角度看,函数可分为库函数和用户定义函数两种。①库函数由C系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用。例如,在之前的示例中反复用到printf()、scanf()、getchar()等函数均属此类。C语言提供了多种库函数,不仅数量多,而且有的还需要硬件知识才会使用,因此要想全部掌握则需要一个较长的学习过程。应首先掌握一些最基本、最常用的库函数,再逐步深入。由于篇幅关系,本书只介绍了很少一部分库函数,其余部分可根据需要查阅有关手册。函数概述①库函数常用数学库函数常用其他库函数函数声明功能intabs(inti);求整数的绝对值doubleacos(doublex);反余弦函数doubleasin(doublex);反正弦函数doubleatan(doublex);反正切函数doubleceil(doublex);向上舍入doublecos(doublex);余弦函数doubleexp(doublex);指数函数doublelog(doublex);对数函数ln(x)doublelog10(doublex);对数函数logdoublepow(doublex,doubley);指数函数(x的y次方)doublepow10(intp);指数函数(10的p次方)doublesin(doublex);正弦函数doublesqrt(doublex);计算平方根函数声明功能void*calloc(size_tnelem,size_telsize);分配主存储器void*malloc(unsignedsize);内存分配函数intrandom(intnum);随机数发生器unsignedsleep(unsignedseconds);执行挂起一段时间voidsrand(unsignedseed);初始化随机数发生器logntime(long*tloc);取一天的时间函数概述②用户自定义函数由用户按实际需要编写的函数。对于用户自定义函数,不仅要在程序中定义函数本身,而且一般在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用。从主调函数和被调函数间数据传送的角度看又可分为无参函数和有参函数两种。①无参函数函数定义、函数说明及函数调用中均不带参数,主调函数和被调函数之间不进行参数传送。此类函数通常用来完成一组指定的功能,可以返回或不返回函数值。②有参函数也称为带参函数。在函数定义及函数说明时都有参数,称为形式参数(简称为形参)。在函数调用时也必须给出参数,称为实际参数(简称为实参)。进行函数调用时,主调函数将把实参的值传送给相应形参,供被调函数使用。C语言的函数兼有其它语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。①有返回值函数此类函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。比如数学函数即属于此类函数。由用户定义的这种有返回值的函数,必须在函数定义和函数说明中明确返回值的类型,有返回值的函数定义如下所示:②无返回值函数此类函数用于完成某项特定的处理任务,执行完成后不向调用者返回函数值,这类函数类似于其它语言的过程。由于函数无须返回值,用户在定义此类函数时可指定它的返回为“空类型”,空类型的说明符为“void”。函数声明
在一个函数中被调用的函数(即被调用函数)需要具备如下条件:(1)被调用的函数必须是已经存在的函数(是库函数或用户自定义函数)。(2)如果使用库函数,一般应在文件开头用#include命令包含头文件。如果使用用户自己定义的函数,尤其是主调函数在前,被调函数定义在后时,必须在主调函数中对被调用函数进行函数声明。函数声明,也称函数原型,其一般格式如下所示:数据类型函数名(形参类型1形参1,形参类型2形参2……)或者:函数类型函数名(形参类型1,形参类型2……)函数的定义函数的定义可以位于源程序中预处理命令(以#开始的命令)之后的任何位置。C语言函数定义ANSI格式如下:函数定义一般有两部分组成:函数首部和函数体。函数首部包括:数据类型,是指函数的类型,即函数返回值的类型。函数可以有返回值,也可以没有返回值。若没有返回值时,数据类型为void;若在函数首部没有“数据类型”项,则表示函数返回值类型为int。函数名,是指由用户定义的标识符,它应该符合标识符起名规则,并且最好能“见名思义”。参数列表,在每个函数名的后面紧跟一对括号,注意:即使是无参函数该括号也不能缺省。若是有参函数,则分别声明每一个形参,形参之间用逗号分隔。函数体,被一对花括号括起来,通过函数体中的语句来实现函数的功能。一般函数体又是由声明部分和执行部分组成的。声明部分往往用于声明属于该函数的局部变量和该函数要调用的其他用户自定义函数。执行部分就是由各个所需的执行语句组成。
[数据类型]函数名([形参类型1形参1,形参类型2形参2,……])/*函数首部*/{函数体;}无参函数的调用(1)函数调用过程
函数只有仅当被程序调用的时候,函数中的语句才会被执行。调用函数时,程序可以通过一个或多个参数给它传递信息。参数是程序传递给函数的数据,函数可以使用这些数据执行任务。然后执行函数中的语句,完成被设计的任务。函数中的语句执行完毕后,控制权将返回调用函数的地方。函数能够以返回值的形式将信息返回给程序。无参函数的调用(2)函数调用形式
函数调用的一般格式如下所示:在函数调用时应注意:①函数名后的“实参表列”可以省略,但()不能省略。②实参表列可以包含多个实参,各参数间用逗号分隔。③实参与形参一一对应,实参与形参的个数应相等,类型应一致或相兼容,在调用函数时实参把值传递给对应的形参。④实参表列中的参数可以是常量、变量、表达式或函数。在进行函数调用时,实参必须具有确定的值,以便把这些值传递给相应形参。因此应预先用赋值、输入等方法使实参获得确定值。函数名(实参表列);无参函数的调用(3)函数调用的方式
①函数作为一个单独的语句。把函数调用作为一个语句,不要求函数有返回值。一般格式如下所示②函数作为表达式中的一项出现在表达式中。函数出现在一个表达式中,要求函数带回一个确定的值。一般格式如下所示:③函数作为调用另一个函数时的实参一般格式如下所示:函数名(实参表列);变量名=函数表达式;result=fun4(fun4(number1,number2),number1);/*函数实参,先计算fun4(number1,number2),再把其返回作为实参*/任务二使用有参函数,分别显示不同图形有参函数的调用(1)函数调用过程所有程序都是从main()开始执行,遇到函数调用时,把当前断点地址压入堆栈,执行被调用函数,当被调用函数执行结束之后,由堆栈中弹出主调函数断点地址,继续执行主调函数后面的语句.intadd(int,int);/*函数声明*/main(){intsum;sum=add(10,20);
sum=add(30,40);}intadd(inta,intb){returna+b;}①⑤⑨②③⑥④⑤⑥⑦⑧⑨⑧⑦有参函数的调用(2)函数的调用形式
函数调用的一般格式如下所示:在函数调用时应注意:①函数名后的“实参表列”可以省略,但()不能省略。②实参表列可以包含多个实参,各参数间用逗号分隔。③实参与形参一一对应,实参与形参的个数应相等,类型应一致或相兼容,在调用函数时实参把值传递给对应的形参。④实参表列中的参数可以是常量、变量、表达式或函数。在进行函数调用时,实参必须具有确定的值,以便把这些值传递给相应形参。因此应预先用赋值、输入等方法使实参获得确定值。函数名(实参表列);有参函数的调用(3)函数调用的方式①函数作为一个单独的语句。把函数调用作为一个语句,不要求函数有返回值。一般格式如下所示:②函数作为表达式中的一项出现在表达式中。函数出现在一个表达式中,要求函数带回一个确定的值。一般格式如下所示:③函数作为调用另一个函数时的实参一般格式如下所示:函数名(实参表列);变量名=函数表达式;result=fun4(fun4(number1,number2),number1);/*函数实参,先计算fun4(number1,number2),再把其返回作为实参*/形参与实参函数的形参和实参具有以下特点:(1)形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。(2)函数调用是数据单向值传递,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值可以发生改变,而实参的值不会随之变化。任务三设计主菜单,由用户选择不同图形switch语句switch语句是开关语句,也称多分支选择语句,用来实现多分支选择结构。其一般格式如下所示:switch(表达式){case常量表达式1:语句1case常量表达式2:语句2…
case常量表达式n:语句ndefault:语句n+1}switch语句(1)switch后面括弧内的“表达式”只能是整型或字符型表达式。为什么?因为前面讲过,float和double类型的值进行“等于”或“不等”的判断往往是没有意义的。(2)每一个case的常量表达式的值必须互不相同。(3)case语句必须以冒号结尾。(4)各个case和default的出现次序可以是任意的。(5)执行完一个case后面的语句后,流程控制转移到下一个case继续执行。(6)break语句:终止switch语句的执行,使流程跳出switch结构。例如:当score的值为85时,s的值是8,则执行printf("B\n"),遇到break就不接着执行下面的语句,而是直接退出switch结构。(7)在case后面中虽然包含一个以上执行语句,但可以不必用花括弧括起来,会自动顺序执行本case后面所有的执行语句。当然加上花括弧也可以。(8)多个case可以共用一组执行语句。例如:当s的值为10和9时都执行同一组语句。(9)在一个switch语句中,最多只能有一个default子句。case10:case9:printf("A\n");break;函数的返回值函数的返回值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。例如:调用数学函数时都会取得相应的值。函数的值只能通过return语句返回主调函数。return语句的一般格式为:return语句中的“()”可有可无。该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个return语句,但
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 赣南医学院《摄影与摄像》2023-2024学年第一学期期末试卷
- 赣南师范大学《能源化工专业英语》2023-2024学年第一学期期末试卷
- 甘肃中医药大学《麻醉设备学基础》2023-2024学年第一学期期末试卷
- 2022年上半年卢姨笔试幼儿综合教资押题(含答案)
- 三年级数学上册第五单元倍的认识第1课时倍的认识教案新人教版
- 三年级科学下册四植物和我们1植物和我们的生活教案新人教版
- 员工培训课件服从
- 礼仪常识培训课件
- 面部手法培训课件
- 《水环境公共政策》课件
- 氨碱法纯碱生产工艺概述
- 基础化工行业深度:电解液新型锂盐材料之双氟磺酰亚胺锂(LiFSI)市场潜力可观新型锂盐LiFSI国产化进程加速
- 年产10000吨一次性自然降解环保纸浆模塑餐具自动化生产线技改项目环境影响报告表
- 实战销售培训讲座(共98页).ppt
- 测控电路第7章信号细分与辨向电路
- 哈尔滨工业大学信纸模版
- 氨的饱和蒸汽压表
- 指挥中心大厅及机房装修施工组织方案
- 餐饮店应聘人员面试测评表
- APQP全套表格最新版(共98页)
- 六年级上册数学试题-天津河西区2018-2019学年度期末考试人教新课标含答案
评论
0/150
提交评论