版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、复习:,1、合法的赋值语句是( )。 a=1,b=2 b.+j; c.a=a+1=5; d.y=int(I); 2.假设所有变量均为整型,则表达式(a=2,b=5,b+,a+b)的值是:( ) A. 7 B. 8 C. 6 D. 2 3.已知各变量的类型说明如下:则以下不符合C语言语法的 表达式是:( ) int k,a,b; unsigned long w= 5; double x=1.42; a. x%(-3) b. w+=-2 c. k=(a=2,b=3,a+b) d. a+= a-(b=4)*(a=3) 4以下不符合C语言语法的赋值表达式是( 多选) a. d=9+e+f=d+9 b.
2、(d=9+e)=f=d+9 c. d=9+e,e+,d+9 d. d=9+e+=d+7,b,b,a,a b d,5.若以下变量均是整型,且num=sum=7;则执行表达式sum=num+,sum+,+num后sum的值为 ( ) A. 7 B. 8 C. 9 D. 10 6.设x 、y均为f1oat型变量,则以下不合法的赋值语句是 A. +x; B. y=(x%2)/10; C. x*=y+8; D. x=y=0; 7x,y,z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后 x 、y 和Z的值是( ): A. x=10 B. x=10 C. x=10 D. x=10 y=15
3、 y=10 y=10 y=5 z=10 z=10 z=15 z=10 8.下列运算符中优先级最高的是: A. B. + C. 后x的值是,y的值是,z的值是。,8,b,a,b,28,4,5,实验中的问题: main( ) int c1,c2; c1=“a”; c2=“b”; printf(“%c,%cn”,c1,c1); printf(“%d,%dn”,c1,c2); 结果为:,1/4 170,172,c2=400,c1=300, 300,400,# include void main() int a,b; unsigned c,d; long e,f; a=100; b=-100; e=50
4、000; f=32767; c=a; d=b; printf(“%d,%dn”,a,b); printf(“%u,%un”,a,b); printf(“%u,%un”,c,d);,c=a=e; d=b=f; printf(“%d,%dn”,a,b); printf(“%u,%un”,c,d);,运行结果: 100,-100 100,65436 100,65436 -15536,32767 50000,32767,第三章,最简单的c程序设计,顺序程序设计,本章要点,算法的概念及表示方法 结构化程序设计方法 C语句 顺序结构的程序设计语句及方法,3.1 算法概述 3.2 程序的三种基本结构 3.3
5、 C语句综述 3.4 赋值表达式和赋值语句 3.5 数据输入输出的概念 3.6 字符数据的输入输出 3.7 简单的格式输入与输出 3.8 顺序结构程序设计举例,主要内容,一个程序应包括两个方面的内容:,对数据的描述:数据结构(data structure) 对操作的描述:算法(algorithm),著名计算机科学家沃思提出一个公式: 数据结构 + 算法 = 程序,3.1 算法概述,广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。,方法1:1+2,+3,+4,一直加到100 加99次 方法2:100+(1+99)+(2+98)+(49 +51)+50 = 100 + 49100 +5
6、0 加51次,对同一个问题,可有不同的解题方法和步骤,例: 求,3.1.1 算法的概念,3.1.1 算法的概念,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。希望方法简单,运算步骤少。,计算机算法可分为两大类别: 数值运算算法:求数值解,例如求方程的根、求函数的定积分等。 非数值运算:包括的面十分广泛,最常见的是用于事务管理领域,例如图书检索、人事管理、行车调度管理等。,3.1.2 怎样表示算法,算法的四种表示方法:,用自然语言表示算法 用流程图表示算法 用N-S流程图表示算法 用伪代码表示算法,(1)用自然语言表示算法,自然语言就是人们日常使用的语言,可以是汉
7、语或英语或其它语言。用自然语言表示通俗易懂,但文字冗长,容易出现“歧义性”。自然语言表示的含义往往不大严格,要根据上下文才能判断其正确含义,描述包含分支和循环的算法时也不很方便。因此,除了那些很简单的问题外,一般不用自然语言描述算法。,(2)用流程图表示算法,美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号:,例 将求5!的算法用流程图表示,如果需要将最后结果打印出来,可在菱形框的下面加一个输出框。,例:判断一个数是否偶数,其算法用流程图表示:,例:输出1到10的算法,用流程图表示,n=n+1,说明:,流程图是表示
8、算法的较好的工具。一个流程图包括以下几部分 : (1)表示相应操作的框; (2)带箭头的流程线; (3)框内外必要的文字说明。,(3) 用N-S流程图表示算法,1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其它的从属于它的框,或者说,由一些基本的框组成一个大的框。这种流程图又称N-S结构化流程图。,N-S流程图用以下的流程图符号:,(1)顺序结构,(2)选择结构,(3)循环结构,例:判断一个数是否偶数,其算法改用N-S流程图表示:,例:输出1到100的算法,改用N-S流
9、程图表示:,n=n+1,N-S图表示算法的优点,比文字描述直观、形象、 易于理解;比传统流程图紧凑易画。尤其是它废除了流程线,整个算法结构是由各个基本结构按顺序组成的,N-S流程图中的上下顺序就是执行时的顺序。用N-S图表示的算法都是结构化的算法,因为它不可能出现流程无规律的跳转,而只能自上而下地顺序执行。,(4) 用伪代码表示算法,概念:伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。 特点:它如同一篇文章一样 ,自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便 、格式紧凑,也比较好懂,也便于向计算机语言算法(即程序)过渡。 用处:适用于设计过程
10、中需要反复修改时的流程描述。,if x is positive then print x else print -x 也可以用汉字伪代码表示: 若 x为正 打印 x 否则 打印 -x 也可以中英文混用,如: if x 为正 print x else print -x,例: “打印x的绝对值”的算法可以用伪代码表示为:,3.2 程序的三种基本结构,传统流程图的弊端 传统流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此,使用者可以毫不受限制地使流程随意地转向,使流程图变得毫无规律,阅读者要花很大精力去追踪流程,使人难以理解算法的逻辑。如图:,传统流程图的流程可以是:,这种如同乱麻
11、一样的算法称为BS型算法,意为一碗面条(A Bowl of Spaghetti),乱无头绪。,缺点:难以阅读、修改,使算法的可靠性和可维护性难以保证。 解决办法:必须限制箭头的滥用,即不允许无规律地使流程随意转向,只能顺序地进行下去。,三种基本结构 Bohra和Jacopini提出了以下三种基本结构: 顺序结构、选择结构、循环结构 用这三种基本结构作为表示一个良好算法的基本单元。,三种基本结构的图示:,顺序结构,选择结构,循环结构的图示:,当型(While型)循环结构,直到型(Until型)循环,三种基本结构的共同特点: (1)只有一个入口; (2)只有一个出口;(请注意:一个菱形判断框有两个
12、出口,而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。) (3)结构内的每一部分都有机会被执行到; (4)结构内不存在“死循环”(无终止的循环)。,图中没有一条从入口到出口的路径通过A框。,不正确的流程表示:,流程内的死循环,小结:,由三种基本结构顺序组成的算法结构,可以解决任何复杂的问题。由基本结构所构成的算法属于“结构化”的算法,它不存在无规律的转向,只在本基本结构内才允许存在分支和向前或向后的跳转。,扩展:,只要具有上述四个特点的都可以作为基本结构。可以自己定义基本结构,并由这些基本结构组成结构化程序。,此图符合基本结构的特点,结构化程序设计方法,一个结构化程序 就是
13、用高级语言表示的结构化算法。用三种基本结构组成的程序必然是结构化的程序,这种程序便于编写、便于阅读、便于修改和维护。 结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。 结构化程序设计方法的基本思路是:把一个复杂问题的求解过程 分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。,3.3 C语句综述,C程序的结构:,一个c程序可以由若干个源程序文件组成 一个源文件可以有若干个函数和预处理命令以及全局变量声明部分组成 一个函数有函数首部和函数体组成 函数体由数据声明和执行语句组成 C语句分为,(1) 控制语句(种)。完成一定的控制功能。 if ( )else (条件
14、语句,用来实现选择结构) switch (多分支选择语句) for() (循环语句,用来实现循环结构) while() (循环语句,用来实现循环结构) do while()(循环语句,用来实现循环结构 continue (结束本次循环语句) break (中止执行switch或循环语句) return (从函数返回语句) goto (转向语句,基本不用),3.4 赋值表达式和赋值语句,3.4.1 赋值表达式,(2)复合的赋值运算符,x=x+n x+=n,赋值运算符两侧 出现相同的变量,赋值符号“”就是赋值运算符,它的作用是将一个数据赋给一个变量。 例如: a=100 表示将100赋给变量a,(
15、1)赋值运算符,x=x+n x=x-n x=x*n x=x/n x=x%n,x + = n x - = n x * = n x / = n x% = n,X与n均为整数,例:,(3)赋值表达式,由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。,变量 赋值运算符 表达式,例如: a=5 b=(a=5) c=10+(d=8) a=(b=10)/(c=2) (b等于10,c等于2, a等于5,表 达式值为5),3.4.2 赋值过程中的类型转换,() 实型数据赋给整型变量,先对实数取整后赋予整型变量。 例如:为整型变量,执行“i=3.56”后的值为 (2) 将一个double型数据
16、赋给float变量时,截取其前面7位有效数字存放到float变量中。注意数值范围不能溢出。 例如: double d=123.456789e100; f=d; f无法容纳如此大的数,出现溢出的错误!,(3) 将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量只将其低字节原封不动地送到该变量(即发生截断)。 例如:把一个4字节的long型数据赋给一个2字节的short型变量,或将一个2字节的int型数据赋给1字节的char型变量: i = 289; /* 已定义i为整型变量 */ c = a; /* 已定义c为字符变量 */ c = i; /* 将占2字节的int型数据赋给char型变
17、量 */,要避免进行这种发生失真的赋值!,3.4.3 赋值语句,若a的值等于100,则成绩为优秀,if(a=100) 赋值运算,if(a=100) 关系运算,条件中的 赋值符号要适当使用!,赋值语句由赋值表达式加分号组成: a=b 赋值表达式 a=b; 赋值语句,例,3.4.4 变量赋初值,int a = 3; * 指定为整型变量,初值为 * double f=3.56; * 指定为双精度型变量,初值为.56 * char c = a; * 指定为字符变量,初值为a * int a,b,c=5; *对一部分变量赋初值。 *,对几个变量赋予同一个初值,应写成: int a=3,b=3,c=3;
18、以下写法错误: int a=b=c=3;,3.5 数据输入输出的概念,输入输出是以计算机主机为主体而言的 输出:从计算机向外部输出设备输出数据 输入:从输入设备向计算机输入数据.,C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现的。例如: 字符输入函数: getchar 字符输出函数:putchar 格式输入函数: scanf 格式输出函数: printf 字符串输入函数:gets 字数穿输出函数:puts,在使用系统库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中. 例如:在调用标准输入输出库函数时,文件开头应该有: #include “
19、stdio.h” 或: #include ,头文件,3.6 字符数据的输入输出,3.6.1 字符输出函数 一般形式:putchar(c) 函数作用:向终端输出一个字符,字符型变量整型变量,例3.1: 输出单个字符。#includevoid main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n);,运行结果:BOY,putchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);,运行结果:B O Y,3.6.2 字符输入函数 一般形式:g
20、etchar() 函数作用:从终端(或系统隐含指定的输入设备)输入一个字符。 函数值: 从输入设备得到的字符。,例3.2 输入多个字符。#include void main ( ) char a,b,c; /* 定义字符变量a,b,c */ a=getchar(); /* 从键盘输入一个字符,送给字符变量a */ b=getchar(); /* 从键盘输入一个字符,送给字符变量b */ c=getchar(); /* 从键盘输入一个字符,送给字符变量c */ putchar(a); /* 将变量a的值输出 */ putchar(b); /* 将变量a的值输出 */ putchar(c); /*
21、 将变量a的值输出 */ putchar(n); /* 换行 */ ,运行结果:BOY (连续输入BOY后,确认后字符才送到内存)BOY (输出变量a,b,的值),3.7 简单的格式输入与输出,3.7.1 格式输出函数 printf 函数作用:向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。 一般格式:printf(格式控制,输出表列),%d:以带符号的十进制形式输出整数 %o:以八进制无符号形式输出整数 %x:以十六进制无符号形式输出整数 To be continued,4.5 格式输入与输出,%u:以无符号十进制形式输出整数 %c:以字符形式输出,只输出一个字符 %s:输出字符
22、串 %f:以小数形式输出单,双精度数,隐含输出六位小数 %e:以指数形式输出实数 %g:选用%f或%e格式中输出宽度较短的一种格式,不输 出无意义的0,几种常见的格式符的修饰符:,L: 用于长整型整数,可加在格式符d,o,x,u前面 M(代表一个正整数): 数据最小宽度 N(代表一个正整数): 对实数,表示输出n位小数;对字符串,表示截取的字符个数 : 输出的数字或字符在域内向左靠,格式符。用来输出十进制整数。 几种用法: :按十进制整型数据的实际长度输出。 :为指定的输出字段的宽度。如果数据的位数小于, 则左端补以空格,若大于,则按实际位数输出。 例: printf(,); 若,则输出结果为
23、 , :输出长整型数据。 例: long ;/* 定义a为长整型变量*/ printf(,);,(3)格式符,用来输出一个字符。 如:d; (,d); 输出字符. 一个整数,只要它的值在范围内,可以用“”使之按字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符;一个字符数据也可以用整数形式输出。,例3.3 用printf函数输出字符数据。#include void main()char c=a; int i =97; printf(c=%c,c=%dn,c,c); printf(i=%c, i=%dn,i,i);,运行结果:c=a,c=97i=a,i=97,(4)s格式符
24、输出字符串. 。例如: (,) 输出字符串“”(不包括双引号)。 %ms,输出的字符串占m列,若串长大于m,则全部输出,若串长 小于m,则左补空格。 %-ms,若串长小于m,字符串向左靠,右补空格。 %m. ns,输出占m列,只取字符串中左端n个字符,输出在m列的 右侧,左补空格。 %-m.ns,n个字符输出在m列的左侧,右补空格,若nm,m自 动取n值。,关于字符串的输出举例:#includevoid main()printf(“%3s,%7.2s,%-5.3sn”, “CHINA”, “CHINA”, “CHINA”, “CHINA”);,(5)格式符。用来以小数形式输出实数(包括单双精度
25、) 有以下几种用法: 。不指定字段宽度,由系统自动指定字段宽度,使整数部分全部输出,并输出位小数。要注意:有效数字的限度。 .。指定输出的数据共占列,其中有位小数。如果数值长度小于,则左端补空格。 .与.基本相同,只是使输出的数值向左端靠,右端补空格。,例3.4 输出实数时的有效位数。#include void main()float a,b; a=111111.111;b=222222.222; printf(%fn,a+b);运行结果为:.,例3.5 输出双精度数时的有效位数。#include void main()double a,b;a=11111111.11111111;b=2222
26、2222.22222222; printf(%fn, a+b); 输出结果: 33333333.333333,例: 输出实数时指定小数位数。#include void ()float f=123.456;printf(“%f%10f%10.2f%.2f%-10.2fn”,f,f,f,f,f);,运行结果:123.455994 123.455994 123.46 123.46 123.46,(8)格式符,以指数形式输出实数。 可用以下形式: 。不指定输出数据所占的宽度和数字部分的小数位数. 例: (,); 输出: 6列 5列 所输出的实数共占列宽度。(注:不同系统的规定略有不同), m.ne和-
27、m.ne。、和“”字符的含义与前相同。 此处指拟输出的数据的小数部分(又称尾数)的小数位数。 若,则: printf(%e %10e %10.2e %.2e %-10.2e,f,f,f,f,f); 输出如下: 1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 13列 13列 10列 9列 1.23e+002 10列,说明: 未指定,自动使. 超过给定的10 列,乃突破10列的限制,按实际长度输出。 第3个数据共占10列,小数部分占列。 只指定,未指定,自动使等于数据应占的长度。 第5个数据应占10列,数值只有列,由于是“10.2”, 数值向左靠,右补一个空格。 (注:有的C系统的输出格式与此略有不同),说明: 除了X,E,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026西南医科大学附属自贡医院自贡市精神卫生中心第一批编外人员招聘11人备考题库(四川)含答案详解(综合卷)
- 2026安徽合肥急救中心招聘备考题库附答案详解(研优卷)
- 2026春季安徽蚌埠市教育局直属学校专项“校园招聘”(武汉站)97人考试参考题库及答案解析
- 2026广西百色市德保县惠保投资发展有限公司招聘11人备考题库附答案详解ab卷
- 2026青海果洛州玛沁县紧密型医共体上半年编外专业技术人员招聘32人备考题库含答案详解(新)
- 2026浙江绍兴滨海新区潮涌人力资源有限公司招聘非编制合同制职工(非劳务派遣)3人备考题库附答案详解(研优卷)
- 2026年中赣投设计本部(第一批次)招聘6人笔试备考题库及答案解析
- 2026内蒙古复兴控股集团有限公司见习岗位招募12人笔试模拟试题及答案解析
- 银行网点业务培训标准化手册
- 2025-2026学年八下u2阅读教学设计
- GB/T 3836.11-2022爆炸性环境第11部分:气体和蒸气物质特性分类试验方法和数据
- WS/T 461-2015糖化血红蛋白检测
- 部编四年级语文下册 全册教案 (表格式)
- 警械使用课件
- 小学语文人教三年级下册 古诗中的节日-群文阅读课例
- 崔允漷建构新教学心得体会(共13篇)
- 输血相容性检测室内质控-课件
- 市政工程三级安全教育培训完整
- M30注浆砂浆配合比计算资料
- 《现代汉语语法词类》PPT课件(完整版)
- 电工仪表与电气测量第六章电功率的测量
评论
0/150
提交评论