收藏 分享(赏)

第2章 简单程序设计之一.ppt

上传人:hwpkd79526 文档编号:7414454 上传时间:2019-05-16 格式:PPT 页数:58 大小:380KB
下载 相关 举报
第2章 简单程序设计之一.ppt_第1页
第1页 / 共58页
第2章 简单程序设计之一.ppt_第2页
第2页 / 共58页
第2章 简单程序设计之一.ppt_第3页
第3页 / 共58页
第2章 简单程序设计之一.ppt_第4页
第4页 / 共58页
第2章 简单程序设计之一.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

1、C 语言程序设计 基础篇,第 2 章 简单程序设计之一,2019年5月16日,常量和变量 顺序结构程序设计 C语句概述 选择结构程序设计 简单循环结构程序设计,内容概述,2019年5月16日,教学目标,掌握常量与变量的定义和使用方法;学会三种结构的简单程序设计;从整体上把握和了解C程序的基本结构,对C语言程序开发设计有初步的感性认识。,2019年5月16日,2.1 常量与变量,常量:程序运行过程中不能被改变的量。 在程序中,数据显式写法均表示常量如s=2*3.14*r中的2和3.14都是常量; 符号常量:#define PRICE 586 ;,1.常量,2019年5月16日,2.变量,变量:程

2、序执行过程中可以改变它的值。变量包括变量名和变量值。变量名:用标识符命名,对应一定数量的内存存贮单元,其单元数视变量类型而定。在【例1.1】中 :c = a+b; /*计算和*/ a、b、c是三个变量,而且是整型变量。,2019年5月16日,在C语言中,变量须先定义,后使用。 如: int total ; /*变量定义*/total =30 ;是合法的。 若没有定义变量直接写成:total =30; 则编译时会指出未定义错误。变量一旦被定义,其类型便确定即可在编译时为其分配相应数量的单元。,2019年5月16日,3 标识符,标识符:由字母、数字、下划线组成且由字母或下划线开头的字符串。如:_s

3、um, sum, stu_name, price等为合法的标识符。 7ax,x&y,printf,va?r等为非法的标识符。标识符的作用:可用来作为变量名、常量名、函数名、类型名、文件名等。,2019年5月16日,建议:采用具有一定意义的英文单词、拼音字母的缩写作为标识符 注意: C语言区分大小写 如:Price 和 price,系统会认为是两个不同的标识符。 标识符的长度一般不超过31个字符 具体情况视不同系统而定。,2019年5月16日,4 变量赋值,变量的赋值有三种方法: 在定义变量的同时为变量赋初值,格式为:=;例如,int a=10; 利用赋值语句为变量赋初值 ,格式为:=;例如,a

4、=10+3; 利用格式化输入函数为变量赋初值 ,格式为:scanf(“格式控制字符串”,变量地址表列);例如, scanf(“%d“, ,定义后的变量其值是随机的、不确定的,只有通过赋值操作,其值才是确定的,才能被使用。,2019年5月16日,2.2 顺序结构程序设计,程序设计犹如“搭积木”和“写作”,将零件或素材按一定的顺序和结构组织起来,就完成了“搭积木”和“写作”。顺序结构程序设计就是根据问题要求设计的程序,其执行过程是按程序书写的顺序,从上到下,逐条语句顺序地执行,没有跳转,一直到最后一条语句,程序才算执行完毕,退出程序。,2019年5月16日,问题分4个步骤来处理: (1)输入两个整

5、数给变量a和b; (2)输出a和b的值; (3)交换a和b的值; (4)输出a和b的值。,【例2.2】由键盘输入两个整数给变量a和b,然后输出a和b。在交换a和b的值后,再输出a和b,验证两个变量中的数值是否正确地进行了交换。,2019年5月16日,#include void main() int a,b,t;printf(“Enter a and b:n“); scanf(“%d %d“, /* 输出a和b的值 */ ,程序运行情况如下: Enter a and b: 123 456 a=123,b=456 a=456,b=123,2019年5月16日,数据输入输出的概念及在C语言中的实现,

6、所谓输入输出是以计算机为主体而言的。 数据输入是从标准输入设备输入,也就是键盘。 数据输出到标准输出设备,也就是显示器。DOS下整个屏幕是标准输出设备,Windows下当前窗口是标准输出设备。 在语言中,所有的数据输入输出都是由库函数完成的,因此都是函数语句。 在使用语言库函数时,需要用预编译命令include包含标准输入输出头文件stdio.h,即:#include ,2019年5月16日,格式输出函数printf()函数 函数功能:按用户指定的格式,把指定的数据显示到显示器屏幕上。 一般形式:printf(“格式控制字符串”, 输出表列);格式字符串是以%开头的字符串,在%后面跟有各种格式

7、字符,以说明输出数据的类型、形式、长度、小数位数等。如:“%d”表示按十进制整型输出。输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应,2019年5月16日,格式输入函数scanf ()函数 函数功能:按用户指定的格式从键盘上把数据输入到指定的变量之中。 一般形式scanf(“格式控制字符串”,地址表列);其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。 例如: &a, &b 分别表示(取)变量a和变量b 的地址。,2019年5月16日,2.3 C语句概述,程序的执行部

8、分是由执行语句组成的。程序的功能也是由执行语句实现的。 语句可分为以下五类: 表达式语句 函数调用语句 控制语句 复合语句 空语句,2.3.1 C语句分类,2019年5月16日,1.表达式语句,表达式语句由表达式加上分号 ;组成。其一般形式为:表达式; 执行表达式语句就是计算表达式的值。例如:x=y+z; 赋值语句;y+z; 加法运算语句,但计算结果不能保留,无实际意义;,2019年5月16日,2.函数调用语句,由函数名、实际参数加上分号 ;组成。其一般形式为:函数名(实际参数表); 执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值 (在后

9、面函数中再详细介绍) 。例如:printf(”C Programn”);调用库函数,输出字符串。,2019年5月16日,3.控制语句,控制语句用于控制程序的流程, 以实现程序的各种结构方式。它们由特定的语句定义符组成。语言有九种控制语句。可分成以下三类: 条件判断语句: if语句、switch语句; 循环执行语句: do while语句、while语句、for语句; 转向语句: break语句、continue语句、return语句。,2019年5月16日,4.复合语句,把多个语句用括号 括起来组成的一个语句称复合语句。 在程序中应把复合语句看成是单条语句,而不是多条语句。例如下面的一组语句是

10、一条复合语句。x=y+z;a=b+c;printf(”%d%dn”,x,a); 注意:复合语句内的各条语句都必须以分号“;”结尾,在括号“”外不能加分号。,2019年5月16日,5.空语句,只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。例如:while (getchar()!=n);本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。,2019年5月16日,2.3.2 赋值语句,赋值语句是由赋值表达式再加上分号构成的。 一般形式为: 变量=表达式; 变量1=变量2=表达式; 例如:int a=5; ()int b,c;

11、 ()b=c=3; () 但定义时连续赋值是错误的。int a=b=c=5; ( x ),2019年5月16日,2.4 选择结构程序设计,用if语句可以构成分支结构。它根据给定的条件进行判断,以决定执行某个分支程序段。if语句有三种基本形式: if if-else if-else-if,2019年5月16日,第一种形式为基本形式,形式为:,其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。其过程可表示为右图。,if (表达式) 语句,2019年5月16日,【例2.3】由键盘输入两个不同的整数给变量a和b,然后输出a和b中较大的数。,#include int main() int

12、 a,b,max;printf(“Input two numbers: “);scanf(“%d%d“, ,运行结果为: Input two numbers: 5 12 max=12,2019年5月16日,第二种形式为: if-else,if(表达式) 语句1; else 语句2;,其语义是: 如果表达式的值为真,则执行语句1,否则执行语句2 。 其执行过程可表示为下图。,2019年5月16日,【例】用if-else语句改写例2.3,#include int main() int a, b;printf(“Input two numbers: “);scanf(“%d%d“, ,运行结果为:

13、Input two numbers: 5 12 max=12,2019年5月16日,第三种形式为: if-else-if,前两种形式的if语句一般都用于两个分支的情况。当有多个分支选择时,可采用if-else-if语句。其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。,if(表达式1)语句1;else if(表达式2) 语句2;else if(表达式3) 语句3; else if(表达式m) 语句m;else 语句n;,一般形式为:,2019年5月16日,2019年5月16

14、日,【例2.4】个人年收入低于1万元,可免个人所得税;年收入在1万2万元之间,超过1万元的部分交5%的个人所得税;年收入在2万元以上则交总收入的7%的个人所得税。请编写一个程序,根据个人年收入计算个人所得税(精确到元)。,个人年收入和个人所得税分别用整型变量x、y保存。根据题意,个人所得税与个人年收入的关系可用一个分段函数表示:,2019年5月16日,#include“stdio.h“ void main() int x,y;printf(“请输入个人年收入:“);scanf(“%d“, ,程序运行情况如下: 请输入个人年收入:15 000 个人所得税=250元,2019年5月16日,#inc

15、lude“stdio.h“ void main() int score, grade;printf(“请输入成绩:“);scanf(“%d“, ,程序运行情况如下: 请输入成绩:76 成绩76的对应积点是3,【例2.5】计算学习成绩积点,2019年5月16日,在使用if语句中还应注意以下问题,在三种形式的if语句中,在if关键字之后均为表达式。该表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。,例如:if (a=5) 语句;if (b) 语句; 都是允许的。只要表达式的值为非0,即为“真”。,2019年5月16日,在if语句的三种形式中,所有的语

16、句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用括起来组成一个复合语句。但要注意的是在之后不能再加分号。,if (xy) x = x+5;y = y+10; else x = 10;y = 5; ,例如:,在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。,例如:if (b) 语句;,2019年5月16日,当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。其一般形式可表示如下:if(表达式) if语句; 或者为if(表达式) if语句; else if语句;在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个e

17、lse重叠的情况,这时要特别注意if和else的配对问题。,2019年5月16日,例如:if(表达式1)if(表达式2)语句1;else语句2;其中的else究竟是与哪一个if配对呢?,应该理解为:if(表达式1)if(表达式2)语句1;else语句2; 还是应理解为:if(表达式1)if(表达式2)语句1;else语句2;,为了避免这种二义性,语言规定,else 总是与它前面最近的if配对,因此对上述例子应按前一种情况理解。,2019年5月16日,2.5 简单循环结构程序设计,问题 计算1+2+100的值,即int i, sum;i = 1;sum = 0;sum = sum+i; i=i+

18、1;sum = sum+i; i=i+1;:sum = sum+i; i=i+1;,如何避免出现这种情况?,重复100次同样的语句,程序显得很笨拙。,2019年5月16日,前面的例子是一种循环执行的情况,也就是: 在给定条件(i100)成立时,反复执行某程序段(sum=sum+i; i=i+1),直到条件不成立为止。 给定的条件称为循环条件,反复执行的程序段称为循环体。这种结构被称为循环结构,它是程序中一种很重要的结构。,2019年5月16日,语言提供了多种循环语句,可以组成各种不同形式的循环结构。 用goto语句和if语句构成循环;(不介绍,不推荐使用) 用while语句; 用do-whil

19、e语句; 用for语句。,2019年5月16日,2.5.1 while语句,格式:while (表达式) 语句;其中表达式是循环条件,语句为循环体。 功能:当表达式的值为非0时,执行while语句中的循环体。结构流程图如图所示。用while语句来实现“当型”循环结构。,2019年5月16日,【例2.6】用while语句求,用N-S图表示算法,如右图所示:,2019年5月16日,#include int main() int i, sum;i=1;sum=0;while (i=100)sum = sum+i;i+;printf(“Sum=%dn“, sum);return(0); ,运行结果为:

20、 sum=5050,2019年5月16日,使用while语句应注意以下几点:,while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环。循环体如果包含一个以上语句,应该用花括弧括起来,以复合语句的形式出现,否则while语句范围只到while后面第一个分号处。,2019年5月16日,2.5.1 do-while语句,格式:do语句while(表达式);功能:先执行语句,后判断表达式的值。它的执行过程是:先执行一次指定的语句,然后判断表达式的值,当表达式的值为非零(”真“)时,返回重新执行该语句,如此反复,直到表达式的值等于0为此止,此时循环结束。,do-whi

21、le循环语句,用来实现“直到型”循环结构。,2019年5月16日,【例】用do-while语句改写例2.6的while循环部分,#include int main() int i, sum;i=1;sum=0;dosum = sum + i; i+;while (i = 100);printf(“Sum=%dn“, sum);return(0); ,2019年5月16日,【例2.7】while和do-while循环比较用while和do-while两种语句分别编程序求i+(i+1)+(i+2)+10,其中,i由键盘输入。,#include main() int sum=0,i; scanf(“

22、%d“, ,#include int main() int sum=0,i;scanf(“%d“, ,试分析:当分别输入5和15时,两个程序段分别输出什么?,2019年5月16日,2.5.3 for语句,在C语言中,for语句使用最为灵活,它完全可以取代 while 语句。它的一般形式为:for (表达式1;表达式2;表达式3) 语句它的执行过程如下: 先求解表达式1。 求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第步;若其值为假(0),则结束循环。 求解表达式3。 再次计算表达式2 的值,开始再次循环,直到计算表达式2的值为0,中止循环,执行for语句下面

23、的一个语句。,2019年5月16日,2019年5月16日,【例2.9】从键盘输入一个整数给变量n,求n以内的偶数和。,#include “stdio.h“ void main() int a,n,m=0;printf(“请输入一个大于1的整数:“);scanf(“%d“, ,请输入一个整数:10 10以内的偶数和=30,2019年5月16日,2.5.4 几种循环的比较,三种循环(while、do-while、for)可以互相替换。循环条件:while、do-while在whie后面指定; for循环在“表达式2”中指定。循环初始条件:while、do-while在循环前指定;for循环在“表达

24、式1”中指定。判断循环条件的时机:while、for循环先判循环条件,后执行;do-while循环先执行,后判断循环条件。,2019年5月16日,课堂练习1:编程求分段函数的值: x (x1) y= 2x-1 (1x10) 3x-11 (x10),2019年5月16日,#include main() int x, y ;printf(“输入 x : “) ;scanf(“%d“, ,if(x1) /* x1 */y=x; else if (x10) /* 1x10 */y=2*x-1; else /* x10 */y=3*x-11;,2019年5月16日,课堂练习2:,sn=135 99 要求

25、:(1)用scanf语句输入99.(2)输出sn=结果.(3)分别用 for, while, do-while语句编程.,2019年5月16日, for语句,#include main() double sn=1, i, n;printf(“n=“);scanf(“%d“, ,for(i=3;i=n;i=i+2)sn=sn*i;,2019年5月16日,while语句,#include main() double sn=1,i=3,n;printf(“n=“);scanf(“%d“, ,while(i=n) sn=sn*i;i=i+2; ,2019年5月16日, do-while语句,#incl

26、udemain()double sn=1,i=3,n;printf(“n=“);scanf(“%d”,do sn=sn*i;i=i+2; while(i=n);,2019年5月16日,课堂练习3:求s=1!+2!+10!,#includemain() long s=0,t=1;int n;for (n=1;n=10;n+)t=t*n; /* 求n! */s=s+t; /* 求各项累加*/ printf(“1!+2!+10! =%ldn“,s);,2019年5月16日,课堂练习4: 编程求数列sn=2/1+3/2+5/3+8/5+13/8+21/13前20项之和。,#includemain()int i,t;float a=2,b=1,sn=0;for(i=1;i=20;i+)/ /*求下一项分子的值*/ /*求下一项分母的值*/printf(“sn=%fn“,sn);,sn=sn+a/b;t=a;a=a+b; b=t;,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报