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

上传人:本田雅阁 文档编号:2120669 上传时间:2019-02-18 格式:PPT 页数:58 大小:380.01KB
返回 下载 相关 举报
第2章简单程序设计之一.ppt_第1页
第1页 / 共58页
第2章简单程序设计之一.ppt_第2页
第2页 / 共58页
第2章简单程序设计之一.ppt_第3页
第3页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第2章简单程序设计之一.ppt》由会员分享,可在线阅读,更多相关《第2章简单程序设计之一.ppt(58页珍藏版)》请在三一文库上搜索。

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

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

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

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

5、问题分4个步骤来处理: (1)输入两个整数给变量a和b; (2)输出a和b的值; (3)交换a和b的值; (4)输出a和b的值。,【例2.2】由键盘输入两个整数给变量a和b,然后输出a和b。在交换a和b的值后,再输出a和b,验证两个变量中的数值是否正确地进行了交换。,2019年2月18日,#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年2月18

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

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

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

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

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

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

12、入两个不同的整数给变量a和b,然后输出a和b中较大的数。,#include int main() int a,b,max; printf(“Input two numbers: “); scanf(“%d%d“, ,运行结果为: Input two numbers: 5 12 max=12,2019年2月18日,第二种形式为: if-else,if(表达式) 语句1; else 语句2;,其语义是: 如果表达式的值为真,则执行语句1,否则执行语句2 。 其执行过程可表示为下图。,2019年2月18日,【例】用if-else语句改写例2.3,#include int main() int a,

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

14、语句3; else if(表达式m) 语句m; else 语句n;,一般形式为:,2019年2月18日,2019年2月18日,【例2.4】个人年收入低于1万元,可免个人所得税;年收入在1万2万元之间,超过1万元的部分交5%的个人所得税;年收入在2万元以上则交总收入的7%的个人所得税。请编写一个程序,根据个人年收入计算个人所得税(精确到元)。,个人年收入和个人所得税分别用整型变量x、y保存。根据题意,个人所得税与个人年收入的关系可用一个分段函数表示:,2019年2月18日,#include“stdio.h“ void main() int x,y; printf(“请输入个人年收入:“); sc

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

16、 语句; if (b) 语句; 都是允许的。只要表达式的值为非0,即为“真”。,2019年2月18日,在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用括起来组成一个复合语句。但要注意的是在之后不能再加分号。,if (xy) x = x+5; y = y+10; else x = 10; y = 5; ,例如:,在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。,例如:if (b) 语句;,2019年2月18日,当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。 其一般形式可表示如下: if(表达式

17、) if语句; 或者为 if(表达式) if语句; else if语句; 在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。,2019年2月18日,例如: 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配对,因此对上述例子应按前一种情

18、况理解。,2019年2月18日,2.5 简单循环结构程序设计,问题 计算1+2+100的值,即 int i, sum; i = 1; sum = 0; sum = sum+i; i=i+1; sum = sum+i; i=i+1; : sum = sum+i; i=i+1;,如何避免出现这种情况?,重复100次同样的语句,程序显得很笨拙。,2019年2月18日,前面的例子是一种循环执行的情况,也就是: 在给定条件(i100)成立时,反复执行某程序段(sum=sum+i; i=i+1),直到条件不成立为止。 给定的条件称为循环条件,反复执行的程序段称为循环体。 这种结构被称为循环结构,它是程序中

19、一种很重要的结构。,2019年2月18日,语言提供了多种循环语句,可以组成各种不同形式的循环结构。 用goto语句和if语句构成循环;(不介绍,不推荐使用) 用while语句; 用do-while语句; 用for语句。,2019年2月18日,2.5.1 while语句,格式: while (表达式) 语句; 其中表达式是循环条件,语句为循环体。 功能: 当表达式的值为非0时,执行while语句中的循环体。结构流程图如图所示。 用while语句来实现“当型”循环结构。,2019年2月18日,【例2.6】用while语句求,用N-S图表示算法,如右图所示:,2019年2月18日,#include

20、int main() int i, sum; i=1; sum=0; while (i=100) sum = sum+i; i+; printf(“Sum=%dn“, sum); return(0); ,运行结果为: sum=5050,2019年2月18日,使用while语句应注意以下几点:,while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环。 循环体如果包含一个以上语句,应该用花括弧括起来,以复合语句的形式出现,否则while语句范围只到while后面第一个分号处。,2019年2月18日,2.5.1 do-while语句,格式: do 语句 while

21、(表达式); 功能:先执行语句,后判断表达式的值。它的执行过程是:先执行一次指定的语句,然后判断表达式的值,当表达式的值为非零(”真“)时,返回重新执行该语句,如此反复,直到表达式的值等于0为此止,此时循环结束。,do-while循环语句,用来实现“直到型”循环结构。,2019年2月18日,【例】用do-while语句改写例2.6的while循环部分,#include int main() int i, sum; i=1; sum=0; do sum = sum + i; i+; while (i = 100); printf(“Sum=%dn“, sum); return(0); ,2019

22、年2月18日,【例2.7】while和do-while循环比较用while和do-while两种语句分别编程序求i+(i+1)+(i+2)+10,其中,i由键盘输入。,#include main() int sum=0,i; scanf(“%d“, ,#include int main() int sum=0,i; scanf(“%d“, ,试分析:当分别输入5和15时,两个程序段分别输出什么?,2019年2月18日,2.5.3 for语句,在C语言中,for语句使用最为灵活,它完全可以取代 while 语句。它的一般形式为: for (表达式1;表达式2;表达式3) 语句 它的执行过程如下:

23、 先求解表达式1。 求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第步;若其值为假(0),则结束循环。 求解表达式3。 再次计算表达式2 的值,开始再次循环,直到计算表达式2的值为0,中止循环,执行for语句下面的一个语句。,2019年2月18日,2019年2月18日,【例2.9】从键盘输入一个整数给变量n,求n以内的偶数和。,#include “stdio.h“ void main() int a,n,m=0; printf(“请输入一个大于1的整数:“); scanf(“%d“, ,请输入一个整数:10 10以内的偶数和=30,2019年2月18日,2.5

24、.4 几种循环的比较,三种循环(while、do-while、for)可以互相替换。 循环条件:while、do-while在whie后面指定; for循环在“表达式2”中指定。 循环初始条件:while、do-while在循环前指定;for循环在“表达式1”中指定。 判断循环条件的时机:while、for循环先判循环条件,后执行;do-while循环先执行,后判断循环条件。,2019年2月18日,课堂练习1:编程求分段函数的值: x (x1) y= 2x-1 (1x10) 3x-11 (x10),2019年2月18日,#include main() int x, y ; printf(“输入

25、 x : “) ; scanf(“%d“, ,if(x1) /* x1 */ y=x; else if (x10) /* 1x10 */ y=2*x-1; else /* x10 */ y=3*x-11;,2019年2月18日,课堂练习2:,sn=135 99 要求:(1)用scanf语句输入99. (2)输出sn=结果. (3)分别用 for, while, do-while语句编程.,2019年2月18日, for语句,#include main() double sn=1, i, n; printf(“n=“); scanf(“%d“, ,for(i=3;i=n;i=i+2) sn=sn

26、*i;,2019年2月18日,while语句,#include main() double sn=1,i=3,n; printf(“n=“); scanf(“%d“, ,while(i=n) sn=sn*i; i=i+2; ,2019年2月18日, do-while语句,#include main() double sn=1,i=3,n; printf(“n=“); scanf(“%d”, ,do sn=sn*i; i=i+2; while(i=n);,2019年2月18日,课堂练习3:求s=1!+2!+10!,#include main() 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年2月18日,课堂练习4: 编程求数列sn=2/1+3/2+5/3+8/5+13/8+21/13前20项之和。,#include main() 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;,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1