作用域和选择结构程序设计.ppt

上传人:牧羊曲112 文档编号:6241587 上传时间:2023-10-09 格式:PPT 页数:27 大小:346.99KB
返回 下载 相关 举报
作用域和选择结构程序设计.ppt_第1页
第1页 / 共27页
作用域和选择结构程序设计.ppt_第2页
第2页 / 共27页
作用域和选择结构程序设计.ppt_第3页
第3页 / 共27页
作用域和选择结构程序设计.ppt_第4页
第4页 / 共27页
作用域和选择结构程序设计.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《作用域和选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《作用域和选择结构程序设计.ppt(27页珍藏版)》请在三一办公上搜索。

1、解析C程序设计第2章 简单程序设计,1,#include#define PI 3.14float l(float);/*函数声明*/float s(float);/*函数声明*/float l(float r)/*函数定义:求周长*/return PI*r*2;float s(float r)/*函数定义:求面积*/return PI*r*r;void main()float r,cir,area;printf(please input r:);scanf(%f,作业及问题,习惯用符号常量,并注意语法格式,函数声明后有分号一般都写在前面,return只能返回一个值暂时还不能用一个函数求两个值。

2、,printf(circumference=%7.2fn,area=%7.2fn,l(r),s(r);/*第二种调用方式:l(r),s(r)作为printf()的参数*/,第4讲,多函数程序设计变量的作用域选择结构程序设计,解析C程序设计第2章 简单程序设计,3,#include#define PI 3.14float l(float);/*函数声明*/float s(float);/*函数声明*/float l(float r)/*函数定义:求周长*/return PI*r*2;float s(float r)/*函数定义:求面积*/return PI*r*r;void main()floa

3、t r,l,s;printf(please input r:);scanf(%f,问题,若这样起名会怎样?,会有错误提示,因为相同的名字造成了冲突。,解析C程序设计第2章 简单程序设计,4,#include#define PI 3.14float l(float);/*函数声明*/float s(float);/*函数声明*/float l(float r)/*函数定义:求周长*/return PI*r*2;float s(float r)/*函数定义:求面积*/return PI*r*r;void main()float r,cir,area;printf(please input r:);

4、scanf(%f,问题,若这样起名又会怎样?会冲突吗?,不会,它们虽然是不同的r,但因为它们的作用域不同,所以不会产生冲突。,解析C程序设计第2章 简单程序设计,5,涉及的语法-作用域,作用域:即作用范围可分为:局部变量全局变量,解析C程序设计第2章 简单程序设计,6,局部变量,局部变量在语句块内(即 内)定义的变量形式参数也是局部变量特点定义时不会自动初始化,除非程序员指定初值进入语句块时获得内存,仅能由语句块内语句访问,退出语句块时释放内存,不再有效 并列语句块各自定义的同名变量互不干扰,解析C程序设计第2章 简单程序设计,7,main()int i=1,j=2;printf(i=%d,j

5、=%dn,i,j);int i=3,a=4;printf(i=%d,a=%dn,i,a);j+;int i=5;printf(i=%dn,i);j+;printf(i=%d,j=%dn,i,j);,运行结果为:i=1,j=2i=3,a=4i=5i=1,j=4,例,运行结果?,+是一个运算符,j+表示将j变量的值加1,解析C程序设计第2章 简单程序设计,8,例3-7,运行结果?,#include void swap(int x,int y);/*函数声明*/void main()int a=3,b=5;printf(11a=%d,b=%dn,a,b);/*调用交换函数之前*/swap(a,b);

6、/*调用交换函数swap*/printf(12a=%d,b=%dn,a,b);/*调用交换函数之后*/*函数定义:交换两个变量的值的函数*/void swap(int a,int b)int temp;printf(21 a=%d,b=%dn,a,b);/*交换变量值之前*/temp=a;a=b;b=temp;/*交换器:交换变量x,y的值*/printf(22 a=%d,b=%dn,a,b);/*交换变量值之后*/,3,5,3,实参a,b的值没发生变化!单向值传递!即由实参向形参的方向传递数值!而不会朝相反的方向!,解析C程序设计第2章 简单程序设计,9,全局变量,全局变量在所有函数之外定义

7、的变量特点默认作用范围:在源程序.c中,从定义它的位置以后都有效在定义点之前或在其他.c文件中引用,应该进行如下声明:extern 类型名 变量名;从程序运行起即占据内存,程序运行过程中可随时访问,程序退出时释放内存 使函数之间的数据交换更容易,也更高效但是尽量少用,因为谁都可以改写全局变量,所以很难确定是谁改写了它破坏了函数的独立性(封装性),解析C程序设计第2章 简单程序设计,10,#include int global;/*定义全局变量*/void GlobalPlusPlus(void);main()global=1;printf(Before GlobalPlusPlus(),it

8、is%dn,global);GlobalPlusPlus();printf(After GlobalPlusPlus(),it is%dn,global);/*函数功能:对全局变量global加1,并打印加1之前与之后的值 函数入口参数:无 函数返回值:无*/void GlobalPlusPlus(void)printf(Before+,it is%dn,global);global+;printf(After+,it is%dn,global);,例,Before GlobalPlusPlus(),it is 1Before+,it is 1After+,it is 2After Globa

9、lPlusPlus(),it is 2,注意:全局变量具有“记忆性”。,解析C程序设计第2章 简单程序设计,11,#include void GlobalPlusPlus(void);main()int global=1;printf(Before GlobalPlusPlus(),it is%dn,global);GlobalPlusPlus();printf(After GlobalPlusPlus(),it is%dn,global);/*函数功能:对局部变量global加1,并打印加1之前与之后的值 函数入口参数:无 函数返回值:无*/void GlobalPlusPlus(void)

10、int global=1;printf(Before+,it is%dn,global);global+;printf(After+,it is%dn,global);,例,Before GlobalPlusPlus(),it is 1Before+,it is 1After+,it is 2After GlobalPlusPlus(),it is 1,解析C程序设计第2章 简单程序设计,12,如何用全局变量解决例3-7,#include int a=3,b=5;void swap(void);/*函数声明*/void main()printf(11 a=%d,b=%dn,a,b);/*调用交

11、换函数之前*/swap();/*调用交换函数swap*/printf(12 a=%d,b=%dn,a,b);/*调用交换函数之后*/void swap(void)/*函数定义,没有参数*/int temp;printf(21 a=%d,b=%dn,a,b);/*交换变量值之前*/temp=a;a=b;b=temp;/*交换变量a,b的值*/printf(22 a=%d,b=%dn,a,b);/*交换变量值之后*/,虽然得以解决,但并不是一个好办法!为什么?因为它破坏了函数的封闭性!学指针的时候我们会学另外一种方法!即便要用全局变量,一般也是在只读不写的时候才用!,解析C程序设计第2章 简单程序

12、设计,13,例:使用全局变量解决,#include#define PI 3.14float r;float l(void);/*函数声明*/float s(void);/*函数声明*/float l(void)/*函数定义:求周长*/return PI*r*2;float s(void)/*函数定义:求面积*/return PI*r*r;void main()float cir,area;printf(please input r:);scanf(%f,r一旦被赋值,其值不再发生变化,只是拿来用。,解析C程序设计第2章 简单程序设计,14,小结:,分清楚同名变量的作用域。一般情况下用局部变量,

13、极少情况下考虑到数据的一致性时可以用全局变量。变量的存储类型待第5章以后再讲。,解析C程序设计第2章 简单程序设计,15,编写函数,求两个整数的最小值、最大值分析结果(算法)主函数:输入a,b计算最小值和最大值(通过函数调用实现)输出最小值和最大值求最大值函数求最小值函数,新的问题:例3-2:,#includeint min(int,int);/*函数声明*/int max(int,int);int min(int a,int b)/*函数功能:求a,b的最小值*/int temp;if(ab)temp=b;else temp=a;return temp;int max(int a,int b

14、)/*函数功能:求a,b的最大值*/int temp;if(ab)temp=b;else temp=a;return temp;,void main()int a,b;printf(please input two integers:);scanf(%d%d,运行过程?,解析C程序设计第2章 简单程序设计,16,例3-2:编写函数,求两个整数的最小值、最大值,另一种写法:#includeint min(int,int);/*函数声明*/int max(int,int);int min(int a,int b)/*函数功能:求a,b的最小值*/return(ab)?b:a;int max(int

15、 a,int b)/*函数功能:求a,b的最大值*/return(ab)?a:b;void main()int a,b;printf(please input two integers:);scanf(%d%d,条件运算符?:C语言中唯一的三目运算符含义:若?前边的表达式成立,则结果为:前边的表达式或数据,若不成立,结果为:后边的表达式或数据。简单的if-else语句可以用条件运算符来替代。结合性:自右向左计算:y=x0?1:(x0?-1:0),函数定义的另一种写法请参考书中48页的解法一,解析C程序设计第2章 简单程序设计,17,例49,从键盘上输入一个年份,然后判断这个年份是否为闰年。分析

16、结果(算法)输入year判断year是否为闰年输出yes或no,如果year能被4整除且不能被100整除,或者year能被400整除,year是闰年,否则 year不是闰年。,解析C程序设计第2章 简单程序设计,18,分析,year能被4整除且不能被100整除,或者year能被400整除(?)或者(?)(?且?)或者(?)(?&?)|(?)(year%4=0&year%100!=0)|(year%400=0),如果year能被4整除且不能被100整除,或者year能被400整除,year是闰年,否则 year不是闰年。,%求模(余)运算符,优先级与结合性同/(除法运算符)结果的符号与被除数的符

17、号相同例:printf(10%3=%d,-10%3=%d,10%-3=%d,-10%-3=%dn,10%3,-10%3,10%-3,-10%-3);结果为:10%3=1,-10%3=-1,10%-3=1,-10%-3=-1,if(year%4=0,解析C程序设计第2章 简单程序设计,19,结果,#include void main()int year;printf(“please input year:”);scanf(“%d”,/*缩进与上边一致*/,解析C程序设计第2章 简单程序设计,20,写成多函数程序,#include void leap(int year);/*函数声明*/void

18、leap(int year)/*判断year是否为闰年并输出*/if(year%4=0/*调用leap函数判断year是否为闰年并输出*/,解析C程序设计第2章 简单程序设计,21,涉及的语法,选择结构语句格式if(条件表达式)else,else分支可以省略,此时为单分支结构,解析C程序设计第2章 简单程序设计,22,涉及的语法关系运算符,=!=大于,小于,大于等于,小于等于,等于,不等于运算结果只有两个值:0和非0,0表示假,即该关系不成立;非0,表示真,即该关系成立例如:2006%4=0的结果是?0,表示假(关系不成立),优先级:在算术运算符和赋值运算符之间。结合性:自左向右,解析C程序设

19、计第2章 简单程序设计,23,涉及的语法逻辑运算符,逻辑运算也被称为布尔(Boolean)运算,即参与运算的数据和运算结果都只有两个值:0和非0,0表示假(条件不成立);非0表示真(条件成立)与运算&(相当于而且)a&b当且仅当两者都为真,则结果为真(a b&b c);a大于b,并且b大于c或运算|(相当于或者)a|b只要两者中有一个为真,结果就为真(a b|b c);a大于b,或者b大于c求反!单目运算符(!a);如果a是0,结果非0;如果a是非0,结果是0并不改变a的值,解析C程序设计第2章 简单程序设计,24,练习:从键盘上输入一个字母,判断它是不是英文字母,#include void

20、main()char c;printf(“please input a character:”);c=getchar();/*从键盘上输入一个字符并存储到变量C中*/if(c=a,(letter=97&letter=65&letter=90),解析C程序设计第2章 简单程序设计,25,另外两个库函数:字符输入/输出函数,#include void main()char lower,upper;printf(“please input an lowercase:”);lower=getchar();/*从键盘上输入一个字符,并赋值给lower*/upper=lower-32;putchar(up

21、per);/*将upper输出*/,一般用法:字符型变量=getchar();含义是从键盘上敲入一个字符,然后把它赋给字符型变量。另一种用法:getchar();功能相当于“按任意健继续”,一般用于程序最后,以便查看前边的结果。,格式:putchar(字符);功能:向终端输出一个字符。参数可以是字符型常(变)量或整型常(变)量。例如:putchar(c);putchar(a);putchar(n);putchar(97);,解析C程序设计第2章 简单程序设计,26,本讲小结,要求理解函数的单向值传递理解变量的作用域的概念能够根据需要设置局部变量或全局变量选择结构的程序设计关系运算符和逻辑运算符的相关语法字符输入输出函数的使用,解析C程序设计第2章 简单程序设计,27,作业,请大家回去复习大学计算机基础关于程序、算法、结构化程序设计思想的内容。P125写出习题4.1中程序的功能。编程实现:从键盘上输入一个整数,判断它的奇偶性和正负性。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号