c语言程序设计4第四讲(第三章上)_第1页
c语言程序设计4第四讲(第三章上)_第2页
c语言程序设计4第四讲(第三章上)_第3页
c语言程序设计4第四讲(第三章上)_第4页
c语言程序设计4第四讲(第三章上)_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、天道酬勤!11.constant 常量2. variable 变量3. identify 标识符4. keywords 关键字 5. sign 符号 6. operator 运算符 7. statement 语句8. syntax 语法 9. expression 表达式 10. initialization 初始化 11. number format 数据格式 12 declaration 说明 13. type conversion 类型转换 14.define 、 definition 定义 常见术语的中英文对照2高级语言程序设计主讲教师:贾彩燕计算机与信息技术学院计算机科学与技术系3上

2、机问题汇总printf(“%f”,1065/(24*13);C语言不做类型检查格式字符与输出项类型不一致,自动按指定格式输出第7题:计算5x2+2x+6的两个根。输出它的两个虚根注意C语言中确实会发生自动类型转换,但在写程序时,尽量使得一个表达式中的数据的类型保持一致。节省不必要的空间损失。防止不同类型转换时的信息丢失。4回顾字符输入、输出函数?格式输入、输出函数是?其一般形式为?这些输入输出函数的库函数的头文件是?算术运算符及表达式 - * / %整数除整数仍为整数%的操作对象只能为整数混合类型算术表达式的转换规则是?数学函数库的头文件名?如何调用?5前面:只能描述由基本数据出发的简单计算实

3、现简单的顺序结构程序场景1:程序中有许多相同的计算场景2:解决的问题大而且比较复杂场景3:解决复杂问题所需的其它基本控制结构如何实现 选择结构循环结构6第三章变量、函数和控制结构7语句、复合语句变量概念、定义、使用定义函数(初步,第五章深入)关系表达式、逻辑表达式、条件表达式语句与控制语句常用结构和问题主要内容:程序设计的基本知识83.1 语句和复合结构语句是程序的基本单位,语句的结束标志是;。printf(); a = b + c;语法:语句的形式必须符合语言要求。语义:形式合法的语句表达了某种含义(程序执行时的效果),称为语句的语义。C语言描述执行流程的一种最基本的结构是复合结构。9复合结

4、构(复合语句)语法:一对花括号.,后无分号,其中可有0个或多个语句。语义:顺序执行其中的各个语句。空复合结构中没有语句,执行时立即结束。 int main () printf(Good morning!n); printf(“PI=%fn”,3.1415); return 0;复合语句可以嵌套 这些语句顺序执行:顺序结构10 C语言的语句空语句 : ;复合语句: 之间的部分表达式语句: a=b+c; 声明语句: int a,b,c; 控制语句: if for while do-while switch11语句、复合语句变量概念、定义、使用定义函数(初步,第五章深入)关系表达式、逻辑表达式、条件

5、表达式语句与控制语句常用结构和问题主要内容:程序设计的基本知识123.2 变量的概念、定义和使用变量程序运行过程中可以发生变化的量存储数据的命名对象(变量名)变量名是标识符。使我们可能通过一个名字来使用存储单元变量的特点变量能保存值,不会丢失。变量名是标识符。变量的值可以变化变量赋一个值之后,每次使用它总得到这个值,直到下次赋值。对变量基本操作赋值(写)取值(读)注意:要遵循命名规范1.变量的基本概念13变量定义形式:类型名 变量名1, , 变量名n;int k, n, sum, count;long double y, z;int m; double x;2. 变量的定义 声明语句说明:变量

6、必须先定义后使用!变量有固定的类型,只能保存这个类型的值。整型变量(保存 int值的变量)双精度变量(保存 double 值)字符变量等,但字符变量是按整数形式存储的。14注意:变量的命名关键字不能用做变量名提倡采用有意义名字:area,number15变量命名的一般原则应当直观且可以拼读,可望文知意,不必进行“解码” 例如不要把CurrentValue写成NowValue 长度应当符合“min-length & max-information”原则如变量名maxVal比maxValueUntilOverflow好用。单字符的名字也是有用的,如i,j,k,m,n,x,y,z等,函数内的局部变量

7、。尽量与所采用的操作系统或开发工具的风格保持一致 如Windows应用程序的标识符通常采用“大小写”混排的方式,如AddChild。而Unix应用程序的标识符通常采用“小写加下划线”的方式,如add_child。程序中不要出现仅靠大小写区分的相似的标识符 int x, X; / 变量x 与 X 容易混淆 变量的名字应当使用“名词”或者“形容词名词” 例如:float value;float oldValue;float newValue;尽量避免名字中出现数字编号,如Value1,Value2等16变量命名普通规范变量名一般需要反映变量的用途如: int sum;如果变量名由多个单词构成,每个

8、单词的首字符要大写如:int CurrentValue17注意:复合结构中可以定义变量(局部变量)。只能在该符合语句内部使用变量定义应出现在所有语句之前变量定义序列语句序列一个复合结构里不能定义多个同名的变量。复合结构的执行: 先定义变量,而后顺序执行各语句顺序结构。18/复合语句内部定义变量#includeint main() int a, b, c; a = 1; b = 5; c = 8; c = a + b; int d; d = a + c; printf(d=%dn,d); printf(c=%dn d=%d, c, d); return 0;/重复定义变量的错误情况#includ

9、eint main() int a, b, c, c; a = 1; b = 5; c = 8; c = a + b; int d, d; d = a + c; printf(d=%dn, d); printf(c=%dn d=%d, c, d); return 0;复合结构示例193.变量的取值与赋值取值:计算中遇到变量,取其值参与计算x + sin(3.2 * y) - pow(x, 2); printf(“%dn”, n * 2);赋值:用赋值运算符(=,赋值号)表示x = 5.0; x = y; x = y + sin(a);左边是赋值目标,右边是提供值的表达式赋值运算的主要效果是把表

10、达式的值赋给左边变量赋值语句:赋值表达式后加分号(语法)20说明:赋值运算符优先级很低例:x = 2 + 3 * y赋值运算符的值与结合性赋值表达式本身也有值,就是赋给左边变量的那个值赋值表达式的值可以作为更大表达式的一部分,但不提倡 y = (x = 5) + 8; y = (z = (x = 1.0); 赋值运算符从右向左结合y = z = x = 1.0;赋值与类型被赋值变量有类型(由变量定义确定);赋值号右边表达式的值有类型。不一致将发生类型转换21规定:若表达式值与被赋值变量类型不同,该值先转换到变量类型的值,然后赋值。#includeint main() int n;double

11、s; n=6;s=n; printf(s=%fn,s); return 0;#includeint main() int n;double s; s=6.2;n=s; printf(n=%dn,n); return 0;比较运行结果?22例(第二章):三角形三边长为3、5、7厘米,求其面积。/程序功能:已知三角形三边长求面积#include #include int main () printf(%fn, sqrt(3+5+7)/2.0) * (3+5+7)/2.0 - 3) * (3+5+7)/2.0 - 5) * (3+5+7)/2.0 - 7); return 0;23/程序功能:已知三

12、角形三边长求面积#include #include int main () double s; s = (3. + 5. + 7.) / 2.; printf(Area: %fn, sqrt(s*(s-3.)*(s-5.)*(s-7.); return 0;*变量的最主要用途:保存计算的中间结果表达式例:重写由三边3、5、7求三角形面积的程序。24/程序功能:输入三角形三边长,求面积#include#includeint main( ) double a, b, c, s, area; printf(Please input a,b and c: n); scanf(%lf,%lf,%lf,

13、&a, &b, &c); s = (a + b + c) / 2.0; area=sqrt(s * (s - a) * (s - b) *( s - c); printf(a=%7.2f, b=%7.2f, c=%7.2f , s=%7.2f n,a,b,c,s); printf(area=%7.2fn,area);return 0;例:从键盘输入三角形三边边长,求三角形的面积并输出程序更具有通用性程序完备吗?25double s = (3 + 5 + 7)/2.0;long double x = 4.5L, y = 3.24L;4.几个问题变量初始化在定义变量时,用类似赋值的写法给被定义变量

14、指定初值,称为变量的初始化。可用数值或者数值表达式为类型合适的变量做初始化只能一个变量一个变量的做初始化,即使这些变量需要完全相同的初值26变量初始化#include #include int main() double s; s = (3.+ 5.+7.)/2.; printf(Area: %fn, sqrt(s*(s-3.)*(s-5.)*(s-7.); return 0;#include #include int main() double s=(3.+5.+7.)/2.; printf(Area: %fn, sqrt(s*(s-3.)*(s-5.)*(s-7.); return 0;比

15、较两个程序?27变量的名字:访问变量变量的类型:可参与的运算形式变量的值:参与计算变量的地址:计算机内的具体实现变量的属性(四个属性)例 double x1 = 35.70;28变量进阶(第七章深入)指针变量用于保存某种类型的存储空间的起始地址的变量。语法: 基类型 * 变量名;例int *pInt;double *pDouble;char *pChar;29#includeint main() int x = 5, y; y = (x = 8) + x; printf(x=%d,y=%dn, x, y); return 0;执行后y 的值是什么?赋值与 “等于”:在C中“ = ”不是“等于”

16、x = x+1; C中合法,数学里为矛盾;注意:C语言未规定加法对两个运算对象的求值顺序,尽量不写这样的表达式30注释:为帮助人阅读/理解程序而写在程序里,起注解作用的说明性文字。注释对程序意义(执行)没有影响。形式:/* 任何字符的序列 */ 或 /* */程序中加入必要注释是一种好的编程习惯。对于复杂的大程序,注释的意义更大。程序中的注释31简单计算程序 基本结构(顺序结构)#include /* 如用数学函数,要写#include */int main () /* 若干变量定义(及可能的初始化) */ /* 若干计算和赋值语句 */ /* 若干输出语句 */ return 0;这是 C

17、程序的基本形式,后面逐步扩充可能会用到函数,复合结构等32语句、复合语句变量概念、定义、使用定义函数(初步,第五章深入)关系表达式、逻辑表达式、条件表达式语句与控制语句常用结构和问题主要内容:程序设计的基本知识333.3 定义函数(初步)问题的提出-为什么定义函数?例:标准函数 sin:1.0/2.0*a*b*sin(alpha); sin函数原型:double sin(double);函数是特定计算过程的抽象,有通用性,可按规定方式(参数个数/类型)对具体数据使用。标准函数有限,需求无限C中函数分: 标准函数和用户自定义函数34例:求一些圆盘的面积,圆盘半径分别为:3.24、2.13、0.8

18、65、3.746、12.3364、8.421设圆周率用 3.1416。#includeint main() printf(radius:%f, area:%fn, 3.24, 3.24 * 3.24 * 3.1416); printf(radius:%f, area:%fn, 2.13, 2.13 * 2.12 * 3.1415); /* 实际程序里不能有省略号 */繁琐?有解决问题的办法?35办法:有以半径为参数计算圆盘面积的函数:double c_area(double) 函数的类型特征程序中就可简化: printf(radius: %f, area:%fn, 3.24, c_area(3

19、.24);办法:如有打印圆盘面积的函数: void pc_area(double)程序中就可简化: pc_area(3.24); pc_area(2.13); . .函数能使程序变短,变得易写/易理解/易修改36函数如何定义:把一段计算定义成函数并给以命名。定义函数 c_area 的程序片段:double c_area (double r) return r * r * 3.1416;定义后就可以通过名字调用,用在任何需要的地方。外半径5.3,内半径3.07,高4.2的空心圆柱: (c_area(5.3) - c_area(3.07)*4.2如何使用函数:有返回值的函数可作为表达式使用。半径3

20、.24高2.4的圆锥体积:2.4 * c_area(3.24) / 3.037/* 定义函数,重写程序 */#include double c_area (double r) return r * r * 3.1416; /* 很容易修改圆周率近似值*/int main () printf(Radius:%f, area:%fn, 3.24, c_area(3.24); printf (Radius:%f, area:%fn, 2.13, c_area(2.13); printf (Radius:%f, area:%fn, 0.865, c_area(0.865); printf (Radiu

21、s:%f, area:%fn, 3.746, c_area(3.746); printf (Radius:%f, area:%fn, 12.3364, c_area(12.3364); printf (Radius:%f, area:%fn, 8.421, c_area(8.421); return 0; 任意给出半径求出圆的面积,如何改写程序?38/* 定义函数,重写程序 */#include double c_area (double r) return r * r * 3.1416; void pc_area (double r) printf(Radius:%f, area:%fn,

22、r, c_area(r);int main () pc_area(3.24); pc_area(2.13); pc_area(0.865); pc_area(3.746); pc_area(12.3364); pc_area(8.421); return 0; void表示无返回值的函数无返回值的函数的调用相当于语句39函数返回值类型 函数名(类型1 参数名1,类型2 参数名2,)参数(形式参数)表 变量定义部分 语句部分 return (表达式 )函数头部函数体函数定义int add(int x,int y) int z; z = x + y; return (z);函数调用(使用)m =

23、add(78, 89);完整的程序?返回函数值2. 函数的定义40#includeint add(int,int);void main( ) int x, y, m; scanf(%d,%d, &x, &y); m = add(x, y); printf(%d+%d=%dn,x,y,m); int add(int x, int y) int z;z = x + y;return(z);完整的程序4,64+6=1041 形式参数表 声明各参数的名字和各参数的类型(一一对应)。 形式参数(形参) 命名是为了在函数里使用实际参数(实参)的值。函数体:复合结构,其中定义的变量是本函数的局部变量。 参数

24、也看作局部变量. 只在该函数内有效42函数体里的特殊语句:return/返回语句:return 表达式;return;使函数结束:先算表达式 ,以其值作为函数返回值。函数调用函数名(实际参数表) 多个参数用逗号分隔。函数的执行 函数体的复合语句在参数具有特定实参值的情况下开始执行。实在参数,类型个数与形参一一对应43例:定义已知三角形三边长度求面积的函数。t_area,3个double参数返回double。类型特征:double t_area (double, double, double)函数定义:double t_area(double a, double b, double c) dou

25、ble s = (a + b + c)/2.0; return(sqrt(s*(s-a)*(s-b)*(s-c); /*还可以怎么写?*/函数调用area=t_area (x, y, z) 注意形参和实参的对应!44定义无返回值的函数形式:返回值类型处写 void 。若函数不需要返回值,可定义无返回值的函数。无返回值的函数不能用在表达式中.例:根据半径计算并输出圆盘面积的函数:void pc_area (double r) printf (Radius:%f, area:%fn, r, 3.1416 * r * r);45#include void pc_area (double r) pri

26、ntf (Radius:%f, area:%fn, r, 3.1416 * r * r); int main () pc_area(3.24); pc_area(2.13); pc_area(0.865); pc_area(3.746); pc_area(12.3364); pc_area(8.421); return 0; 此处的return 0?463.函数和程序主函数main: 完整C程序必须有一个名为main的函数(主函数)int main () main在程序启动时被自动调用(由运行系统调用)程序从main的函数体开始执行,直到该复合结构结束其他函数不经调用就不会执行整个程序里不允许

27、调用main。474.函数与类型定义时的类型问题函数返回值类型与返回语句中表达式类型可能不一致返回语句中表达式的值转换成函数返回值类型返回例:int fun(int m) return 3.2 * m + 5; 调用时的类型问题实参个数应符合函数定义的要求,各实参应能转换到对应形参的类型当实参类型与形参类型不同时,将实参类型的值转换成形参类型的值后再传给形参48例int fun (int m) return 3.2 * m + 5;语句:x = fun(2.5 + 6);设x是双精度变量,语句执行时有几次转换?类型转换的各种情况:计算中可能出现类型转换赋值时可能出现类型转换参数传递时可能出现类

28、型转换产生函数返回值时可能出现类型转换495.函数调用50#include /*函数原型*/ /* 函数定义写在这里 */int main () /* 主程序体,包含函数调用 */ /* 函数定义也可写在这里,但在main之前给出函数原型 */包含一个/多个函数定义的程序模式:51说明函数中定义的形参,为局部变量,在未出现函数调用时,并不占用内存单元,只有调用该函数时才分配内存单元,调用结束后释放所占用的内存单元。C中实参和形参类型应相同或赋值相容。C中实参向形参传递数据是“值传递”,单向传递。C中实参可以是变量或表达式。函数返回值类型未加说明的,自动按整型处理。函数返回值类型应与函数中return中表达式类型一致,不一致时以函数类型为准。52值传递方式方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值特点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论