第5章 顺序结构程序设计
c语言程序设计课程教学大纲(计算机科学与技术)
甘肃民族师范学院计算机专业课程教学大纲C语言程序设计一、说明(一)课程性质必修课(二)教学目的本课程是为计算机类等本、专科学生开设的,以培养学生程序设计能力为目的的专业基础课,是学习其他专业课的基础,同时也是第一门高级语言程序设计课。
本课程的任务是结合一般数值计算向学生介绍计算机程序设计的基本知识,使学生掌握C语言的基本语法,掌握程序设计的基本思想、基本概念和基本方法和技巧,并能运用所学的知识和技能对一般问题进行分析和程序设计,编制出高效的C 语言应用程序;同时了解进行科学计算的一般思路,培养应用计算机解决和处理实际问题的思维方法与基本能力,为进一步学习和应用计算机打下基础。
(三)教学内容计算机程序语言发展史,结构化程序设计的三种基本结构,函数,数组,指针,文件。
(四)教学时数90学时,60理论,30上机(五)教学方式多媒体授课二、本文第一章C语言程序设计基础教学要点:C程序的基本结构。
上机环境,进行简单C程序的编写。
教学时数:4学时(理论3学时,上机1学时)教学内容:第一节概述程序设计语言的发展。
C程序的基本结构。
第二节开发环境上机环境,进行简单C程序的编写。
考核要求:1.掌握编写C语言程序的基本步骤。
2. 掌握上机调试过程。
第二章数据类型、运算符与表达式教学要点:数据类型。
表达式。
输入输出函数。
教学时数:12学时(理论8学时,上机4学时)教学内容:第一节数据类型整型、实型、字符型、枚举型、构造类型、指针。
第二节常量与变量第三节运算符与表达式算术运算符及表达式、关系运算符及表达式、逻辑运算符及表达式、逗号运算符及表达式、条件运算符及表达式、赋值运算符及表达式。
第四节标准输入/输出scanf()函数、printf()函数。
第五节数学函数数学库头文件<math.h>。
第六节随机数发生器函数rand()和srand()函数,对应的头文件“stdlib.h”。
考核要求:1.理解数据结构、常量、变量的概念;2.掌握各种运算符的优先级及结合方向;3.熟练掌握数据的输入、输出方法;4.了解其他数学函数及随机函数的使用方法。
c语言程序设计第五版习题答案
习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。
【解答】(1)语言简洁、紧凑,使用方便、灵活。
(2)数据类型丰富,表达能力强。
(3)运算符多样。
C语言中的运算符包含的范围非常广泛。
(4)具有结构化的控制语句。
如if…else语句、while语句、do while语句、switch 语句、for语句。
(5)允许直接访问物理地址。
C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。
(6)所生成的目标代码质量高,可移植性好。
2.构成C语言程序的基本单位是什么?它由哪几部分组成?【解答】函数是构成C语言程序的基本单位。
一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。
3.C语言程序的运行一般要经过哪几个步骤?【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。
二.运行程序写结果1.输入下面程序并运行。
main(){int a1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。
main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=200三.编程题1.参照本章例题,编写一个C程序,用于显示如下信息:*************************I love C programs!*************************【分析与提示】①要有文件包含语句#include <stdio.h>。
C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。
这些函数的说明都包括在stdio.h文件中。
②main是主函数的名称。
《c语言程序设计》教学大纲
《C语言程序设计》教学大纲课程名称:中文名称:C语言程序设计;英文名称:C Language Programming课程编码:161002学分:4.5分总学时:72学时,其中,理论学时:52学时;上机学时:20学时。
适用专业:全校理工科各专业先修课程:计算机基础执笔人:审订人:一、课程的性质与任务《C语言程序设计》是为全校所有的理工科专业的学生开设的公共基础课,也是一门重要的必修课。
其目的是使学生掌握程序设计的基本方法,培养学生掌握利用计算机处理问题的思维方法与应用能力。
要求学生掌握程序的三种基本结构及结构化的程序设计方法,了解并掌握几种典型的算法,并且能够熟练地运用C语言编写各种应用程序,为进一步学习其它相关课程奠定基础。
二、教学内容与学时分配第一章程序设计基本概念(3学时)本章重点:一、算法及特性;二、结构化程序设计方法。
难点:算法设计及其表示。
第一节程序和程序设计一、程序;二、程序设计。
第二节算法第三节结构化程序设计方法第四节C语言程序的基本结构第二章数据类型、运算符和表达式(5学时)本章重点:一、标识符的正确使用;二、各种基本数据类型的使用;三、算术运算符的优先级和结合性;四、表达式计算中的类型转换。
难点:一、各种类型数据在计算机内存中的存储形式;二、自增自减运算。
第一节C语言的数据类型第二节常量与变量第三节整型数据第四节实型数据第五节字符型数据第六节算术运算符与算术表达式第七节赋值运算符与赋值表达式一、赋值运算符和赋值表达式;二、复合的赋值表达式;三、自加、自减运算符;四、赋值运算中的类型转换。
第八节逗号运算符与逗号表达式第三章顺序结构程序设计(4学时)本章重点:一、printf函数;二、scanf函数。
难点:输入与输出时的格式控制。
第一节C语句概述第二节赋值语句第三节数据的输入与输出一、printf函数;二、putchar函数;三、scanf函数;四、getchar函数第四节顺序结构程序举例第四章选择结构程序设计(4学时)本章重点:一、逻辑值的表示、使用及其运算;二、关系运算符的运算规则及关系表达式;三、逻辑运算符的运算规则及逻辑表达式;四、if语句;五、switch语句的形式与执行过程。
c++-顺序结构程序设计
c++-顺序结构程序设计
C++是一种功能强大的编程语言,它支持顺序结构程序设计,这
意味着程序按照代码的顺序逐行执行。
在C++中,顺序结构程序设
计是基本的编程范例之一,它允许程序员按照自己的意愿编写代码,从而实现所需的功能。
顺序结构程序设计的关键在于控制程序的执行顺序。
当编写
C++程序时,我们可以按照自己的需求定义变量、执行算术运算、调
用函数等。
这些操作将按照代码的书写顺序依次执行,每一步的结
果都会影响到下一步的执行。
在实际的C++编程中,我们可以利用顺序结构来解决各种问题。
例如,我们可以编写一个简单的程序来计算两个数的和,首先定义
两个变量存储这两个数,然后进行加法运算,最后输出结果。
这个
过程就是一个典型的顺序结构程序设计的例子。
另外,顺序结构程序设计也可以与其他控制结构相结合,比如
条件语句和循环语句,从而实现更加复杂的功能。
这些结构可以帮
助我们根据不同的情况选择不同的执行路径或者重复执行某段代码,从而增强程序的灵活性和功能性。
总之,顺序结构程序设计是C++编程中的基础,它允许程序员按照自己的意愿编写代码,自由地控制程序的执行顺序,从而实现各种不同的功能。
掌握好顺序结构程序设计对于学习和应用C++编程语言都是非常重要的。
软件工程 第4版 第5章 详细设计
数据流程图
01
数据流程图表示 求解某一问题的 数据通路,同时 规定了处理的主 要阶段和所用的 各种数据媒体
程序流程图
02
程序流程图表示 程序中的操作顺 序
系统流程图
03
系统流程图表示 系统的操作控制 和数据流
程序网络图
04
程序网络图表示 程序激活路径和 程序与相关数据 流的相互作用
系统资源图
05
系统资源图表示 适用于一个问题 或一组问题求解 的数据单元和处 理单元的配置
5.1.3 PAD
01 PAD 的基本符号
OPTION
➢ 顺序结构 ➢ 条件结构 ➢ CASE 型多分支结构 ➢ 先检测循环条件的WHILE 型循环结构 ➢ 后检测循环条件的UNTIL 型循环结构 ➢ 语句标号 的特点
OPTION
用PAD 表示的程序从最左边的竖线的上端开始,自上而 下、自左向右执行 用PAD 设计的软件结构必然是结构化的程序结构
图1
图2
5.1.1 流程图
04 流程图的3 种基本结构
OPTION
流程图的3 种基本结构为顺序结构、条件 结构和循环结构,如图1所示,图中的C 是判 定条件。顺序结构如图(a)所示。条件结构 可分为两种,一种是IF...THEN...ELSE 型条件 结构,如图(b)所示;另一种是CASE 型多 分支结构,如图(c)所示。
应的应做的工作。
2 判定表中的符号
右上部用T 表示条件成立,用F表示条件不 成立,空白表示条件成立与否不影响。
右下部画× 表示在该列上面规定的条件下做 该行左边列出的那项工作,空白表示不做该 项工作。
5.1.5 判定树
判定树和判定表一样,也能表明复杂的条件组 合与对应处理之间的关系。判定树是一种图形表示 方式,更易被用户理解。
第5章 汇编语言程序
Y
条件满足?
N
处理段
例5-5 设内部RAM30H,31H单元存放两个无符号数, 将大数存在31H,小数存于30H。 ORG 1000H START:CLR C MOV A,30H SUBB A,31H JC NEXT ;次序符合,返回 MOV A,30H ;交换 XCH A,31H MOV 30H,A NEXT: NOP SJMP $ END
$
5-3 分支程序
由条件转移指令构成程序判断框,形成程序分支结构。 5-3-1 单重分支程序 一个判断决策框,程序有两条出路。 两种分支结构: 例1 求R2中补码绝对值,正数不变, 影响条件 负数变补。
MOV A,R2 JNB ACC.7,NEXT;为正数? CPL A ;负数变补 INC A MOV R2,A NEXT:SJMP NEXT ;结束
五、对源程序进行交叉汇编得到机器代码; 反汇编 —— 分析现成产品的程序,要将二进制 的机器代码语言程序翻译成汇编语言源程序。
六、程序调试。
通过微计算机的串行口(或并行口)把机器代 码传送到用户样机(或在线仿真器)进行程序 的调试和运行。
5.1.3评价程序质量的标准
(1)程序的执行时间。 (2)程序所占用的内存字节数。 (3)程序的逻辑性、可读性。 (4)程序的兼容性、可扩展性。 (5)程序的可靠性。
方法二:采用除10H取余数将BCD拆开 ORG 1000H MOV A,20H; 2B 1T MOV B,#10H ; 3B 2T DIV AB ; 1B 4T ORL B,#30H ; 3B 2T MOV 22H,B ; 3B 2T ORL A,#30H; 2B 1T MOV 21H,A ; 2B 1T SJMP $ END;7条指令、16个内存字节、13个机器周期。
C语言完整 ppt课件
用一个标识符来表示一个字符串,称为“宏”,标识符称为“宏名”。在 程序中 用宏名替代字符串称为“宏调用”。在编译预处理时,将对程序中所有出现的 “宏 名”,都用宏定义中的字符串代换,这个过程称为“宏展开”。
1.4.1.1 不带参数的宏定义
格式为:#define 标识符 字符串
1.4.1.2 带参数的宏定义
1-4
1.3 C程序上机步骤
C源程序编好后,要经过编辑、编译、连接, 生成可执行文件后,才可运行。
运行集成开发软件
编辑源程序
编译
有 有错? 无 连接
不正确
运行
结果正确? 正确
结束
1-5
1.4 编译预处理
编译预处理是指,在C编译程序对C源程序进行编译之前,由编译预处理程 序对源程序中的预处理命令进行处理的过程。
1.2.1 C语言程序举例
1.2.2 C语言程序的结构
1.2.2.1 函数是C语言程序的基本单位。
1.2.2.2 函数的一般结构
任何函数(包括main()函数)都是由函数首部和函数体两部分组成。
1. 函数首部: 函数首部即函数第一行,由函数类型、函数名和函数参数表三部分组成。
2. 函数体: 函数体为函数首部下面的花括号{……}内的部分。 函数体一般由声明部分和执行部分构成:声明部分定义所用到的变量,声明所调用的函数等; 执行部分有若干语句组成。
2.6.1 运算符及表达式简介 2.6.1.1 运算符
C语言中的运算符具有2个特点: ⑴ 运算符的优先级 C语言中,运算符的优先级共分为15级,1级最高,15级最低。 ⑵ 运算符的结合性 C语言中各运算符的结合性分为左结合性(从左到右)和右结合性(从右到左)。 2.6.1.2 表达式 表达式是由常量、变量、函数和运算符组成的式子。 表达式求值是按运算符的优先级和结合性规定的顺序进行的。
C语言程序设计教程(第2版)课后习题答案杨路明
第一章C语言程序设计概述-习题答案1算法的描述有哪些基本方法?答1、自然语言2、专用工具2 C语言程序的基本结构是怎样的?举一个例子说明。
答1、C语言程序由函数构成;2、“/*”与“*/”之间的内容构成C语言程序的注释部分;3、用预处理命令#include、#define可以包含有关文件或预定义信息;4、大小写字母在C语言中是有区别的;5、除main()函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。
3 C语言有什么特点?答1、具有结构语言的特点,程序之间很容易实现段的共享;2、主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译代码,以实现程序的模块化;3、运算符丰富,包含的范围很广;4、数据类型丰富;5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。
4★指出合法与不合法的标识符命名。
答AB12--√leed_3-- a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--× XYZ43K2 --√ AVE#XY--× _762--√ #_DT5--× C.D--×5说明下列Turbo C热键的功能。
答F2:源文件存盘 F10:调用主菜单 F4:程序运行到光标所在行(用于调试程序) Ctrl+F9:编译并链接成可执行文件 Alt+F5:将窗口切换到 DOS 下,查看程序运行结果。
6说明下列Turbo C方式下输入并运行下列程序,记录下运行结果。
①main(){printf("********************\n");printf(" welcome you \n");printf(" very good \n);printf("********************\n");}②main(){ int a,b,c,t;printf("please input three numbers;");scanf("%d,%d,%d",&a,&b,&c); /*教材S是错误的*/t=max(max(a,b),c);printf("max number is:%d\n",t);}int max(int x, int y){ int z;if(x>y)z=x;else z=y;return(z);}答运行结果:********************welcome youvery good********************运行结果:please input three numbers;3,1,4 /*左侧下划线内容为键盘输入*/max number is:47一个C程序是由若干个函数构成的,其中有且只能有一个___函数。
C语言程序设计课程总结
本课程总结姚琳主编(第二版)第一章C语言程序设计概述目的:初步了解C语言程序,学会使用C语言环境编辑运行C程序。
要求:掌握程序设计语言、程序、算法的概念,了解算法的特点,熟悉算法的设计步骤,掌握用流程图表达算法的方法。
了解C语言程序的结构特点,掌握在Turbo C集成环境下编辑、运行简单C语言程序的方法。
教学重点:C语言程序的结构特点;在VC集成环境下运行C程序教学难点:算法设计和算法描述。
一.算法:算法:就是解决问题的方法。
计算机算法可分为两类别:数值运算算法—求数值解,用在科学计算。
非数值运算算法—求非数值解,用在事物处理。
数值运算算法例如:已知三角形的底a等8,高h等14,求三角形的面积s。
则数值运算算法为:1、a=8 a的值等于82、h=14 h的值等于143、s=a*h/2 计算面积S非数值运算算法例如从湛江乘火车去北京开会,其算法为:1、买火车票2、按时到车站3、登上火车4、到北京站后乘电车到会场5、参加会议二.C语言的特点:1·C语言简洁、紧凑,使用方便、灵活。
5·语法限制不太严格,程序设计自由度大。
6·C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
3·数据结构类型丰富。
4·具有结构化的控制语句。
7·生成目标代码质量高,程序执行效率高。
8·与汇编语言相比,用C语言写的程序可移植性好。
2·运算符丰富。
共有34种。
C把括号、赋值、逗号等都作为运算符处理。
三.C语言的基本结构(1)函数是组成C程序的基本单位,一个C的源程序有且只有一个main函数,但可以有若干个其它的函数。
(2)一个函数由两个部分组成:函数的首部:函数的第一行,包括函数名、函数类型、函数参数(形参)名、参数类型等。
函数体:由声明和执行两部分组成。
(3)一个C程序总是从main函数开始执行的,不管main函数在整个程序中的位置如何。
高中信息技术《程序的顺序结构》优质课教学设计、教案
2.3.1程序的顺序结构教学设计教师活动:一、复习导入1、复习流程图的相关内容:(1)、流程图是算法的一种图形化表示,与自然语言相比,用流程图描述算法能更加直观、形象、更容易理解。
(2)、常用的流程图符号复习完成转入问题1,要求学生写出问题1 的流程图。
学生活动:学生小组合作学习,每两人一组,把问题1 的流程图写在学案上,写好后相互交换讨论。
师生活动:抽取部分同学的学案通过实物展台展示,师生共同学习评价。
问题1:输入长方形的长和宽,输出长方形的周长和面积,写出算法流程图和vb 程序。
(1)请写出问题1 的流程图(2)请写出问题1 的vb 程序教师活动:2、复习常用语句和函数ϖ变量的的定义:Dim 变量名As 数据类型ϖ输入函数:InputBox()ϖ赋值语句:用“=”实现,左边是变量名右边可以是常量、变量、表达式ϖ输出语句:print””,Print 变量名学生活动:学生根据已写出的流程图,在复习vb 常用语句和函数的基础上,尝试写出问题1 的vb 程序,对学生来说可能稍微有点难度,属于拔高练习,主要为了激发学生的求知欲。
师生活动:学生尝试书写程序,教师评价点拨,最后师生共同书写程序。
教师分析讲解已书写完成的程序的执行过程,讲解程序的顺序结构。
顺序结构是一种最基本的程序结构。
ϖ按书写顺序由上到下一条一条执行ϖ没有分支ϖ没有重复ϖ没有跳转最后抛出问题,让学生思考,做到举一反三。
思考?你能不能写出输入正方形的边长,输出正方形的周长和面积的算法?(学生思考回答)问题2:读下面的流程图,编写出相应的vb 程序。
师生共同阅读分析流程图,学生以小组为单位写出程序,教师巡视指导,最后根据学生情况,教师评价总结,再次点题(像这样按书写顺序从上往下一条一条的执行,没有分支、没有跳转的程序,称为顺序结构。
)最后教师抛出问题,这个程序完成了什么功能,学生思考(完成了两个变量的数据交换)。
教师活动:教师再引导学生思考,还有没有实现两个变量的数据交换的其他算法,提示学生阅读课本33 页,看课本是用什么算法来实现两个变量的数据交换的,完成问题 3 的流程图和程序,从而让学生明确对于同一个问题,解决方法也不是唯一的,提高他们分析问题和解决问题的能力。
C语言程序设计各章练习题
C语言程序设计各章练习题《C 语言程序设计》各章练习题2016年12月汇编第1-3章 C 语言基础、编程规范、顺序结构程序设计编程题1:设a 和b 均为int 型变量,编写一个程序,通过键盘读入a,b 的值,然后交换a,b 的值。
要求屏幕显示“输入2个整数,用空格隔开”的提示语句,并且输出交换前a,b 的值,交换后a,b 的值。
附加要求:(1)允许定义第3个变量,实现交换;(2)不允许定义第3个变量,实现交换。
第4章选择结构程序设计编程题2:根据下列函数关系写程序,要求提示输入x 的值,输出y 的值。
⎪⎪⎩⎪⎪⎨⎧>=<+-=0020212x x x x x y编程题2:根据下列函数关系写程序,要求提示输入x 的值,输出y 的值。
⎪⎩⎪⎨⎧>≤≤--<=002222x x x x x y编程题3:求 ax 2+bx+c=0方程的解。
(只输出b 2-4ac>=0的求解结果,小于0,输出“不予求解!”)第5章 循环结构程序设计编程题4:编程计算∑=ni i 1。
要求提示键盘输入n ,如n 为负数,不予计算,直接返回。
编程题5:编程序计算n !,要求n 从键盘输入,如n 小于0,不予计算。
编程题6:从键盘输入一个数n ,判断n 是否是素数。
编程题6:编写程序输出1~100之间的偶数,要求屏幕显示时5个偶数一行,每个数占5位,右对齐。
编程题7:编程计算100到1000之间有多少个数其各位数字之和是5,并将其输出。
编程题8:求满足下列条件的三位数n ,它除以11(整数相除)所得到的商等于n 的各位数字的平方和,且其中至少有二位数字相同的数。
编程题9:有一些十进制整数对ab 和cd 具有如下特性:ab×cd=ba×dc,其中a≠b 且c≠d。
如:12×42=21×24。
请编程找出30~50之间满数,将100~200之间的素数全部输出,要求屏幕上每个数占4位,每行显示5个素数,左对齐。
C语言第5章循环结构程序设计1
(2)在循环体中应有使循环趋向于结束的语句。 比如上例中,循环结束的条件是“score>=0”, 那么当我们把这个班的成绩全部输入完后, 一定要输入一个负数,才能使程序往下执行。 (3)循环体语句有可能一次也不执行。比如说上 例中,当第一次输入的分数就为负数时,则 循环体一次也不执行。
§5.3 do …while语句
① ② ④ ③
for(i=1; i<100; i++) s=s+i; printf(″s=%d″, s); }
/*循环体语句*/
对于for循环,有一点非常重要,即条件测 试永远是在循环开始时进行,如果在循环开 始时条件为假,那么循环体语句就不会被执 行。如: int i=10; for (k=10;k!=i;k++) printf(″%d″,k); printf(″%d″,k);
2、循环控制变量必须在循环体内有所改变,才 能使while和do-while语句的循环控制条件表达 式的值不断改变,直至循环结束。否则会造 成死循环。例如: i=1; while(i<=100) putchar(′*′); i++; 这个循环永远不会结束,因为“i++;”语句 不属于循环体中的语句,循环控制变量i没有 在循环体内被改变。 程序应该作如下改变:
在使用while语句的时候,我们要注意以下 两个问题: (1)循环体如果包含一个以上的语句,应该用花 括号括起来,以复合语句的形式出现。如果 不加花括号,则while语句的范围只到while后 面的第一个分号处。比如上例中,while语句 中如无花括号,则while语句范围只到 “average+=score;”。
#include <stdio.h> main() {int i,n;long fac; Scanf(―%d‖,&n); i=1 while (i<=n) fac=fac*i; i++; } Printf(―%d!=%ld‖,n,fac); }
第五章用C语言进行结构化程序设计
顺序结构的程序设计 选择结构程序 循环控制 几种循环控制结构程序设计 break语句和continue语句
共 37页
第 1 页
5.1 顺序结构的程序设计
int main(void ) 顺序结构是结构化程序的基 { 本结构。本质上,问题求解过 int nA,nB,nC; 程都是顺序结构的。顺序结构 nA=5; 下程序将按照语句或模块出现 nB=6; 的先后依次执行,语句和语句 nC=nA+nB; 之间、模块和模块之间的先后 printf("nC is %d",nC); 决定了其执行的顺序。 return 0; 每一个模块都有一个数据入 } /*End of main()*/ 口和一个数据出口。
共 37页 第 7 页
选择结构分类
自然语言:如果… 那么… yes 二分支选择结构 P 否则… C语言: 选择(分支)语句 A 用什么语 句实现? no
yes
P
no
B
k
A
B
k=k1
多分支选择结构
A1
k=k2 A2
k=ki
...
k=kn
...
Ai
An
共 37页
第 8 页
用if语句设计选择结构程序
共 37页 第 12 页
2. 标准格式if…else…
if •格式: (表达式) •功能:表达式值非0时执行语句 (1)语句组3不属于if语句的语句组。它 { 组1,否则执行语句组2。 只有在语句组1或语句组2执行完后 语句组1 } 才可能被执行; …… 语句组1 else (2)语句组1或语句组2只有1条语句时 { if (nScore>60) 语句组2 ,对应的花括号对可以省略。 printf("及格\n"); } 语句组2 语句组3 else 条件? Yes No 语句组1 语句组2
c语言第五章 选择结构程序设计(习题册答案)
第五章选择结构程序设计基础练习(A)一、填空题1、关系表达式的运算结果是逻辑值。
C语言没有逻辑型数据,以1代表“真”,以0代表“假”。
2、逻辑运算符!是单目运算符,其结合性是由右结合性。
3、C语言提供的三种逻辑运算符是&&、|| 、!。
其中优先级最高的为!,优先级最低的为| | 。
4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。
系统最终以0 和非0 来判定它们属于“真”或“假”。
5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0)。
6、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式x<z||y<z 。
7、条件“2<x<3或x<-10”的C语言表达式是x<-10||x>2&&x<3。
8、判断char型变量ch是否为大写字母的正确表达式是(ch>=‘A’)&&(ch<=‘Z’)。
9、当a=3,b=2,c=1时,表达式f=a>b>c的值是0。
10、当a=5,b=4,c=2时,表达式a>b!=c的值是1。
11、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A<B&&!C>B的值是0。
12、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是1。
13、有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为1。
14、有int x,y,z;且x=3,y=-4,z=5,则以下表达式的值为1。
!(x>y)+(y!=z)||(x+y)&&(y-z)15、有int a=3,b=4,c=5,x,y;,则以下表达式的值为0。
!(x=a)&&(y=b)&&016、if (!k) a=3;语句中的!k可以改写为k= =0,使其功能不变。
《C程序设计》顺序结构程序设计实验报告
《C程序设计》顺序结构程序设计实验报告5. 编序C程序,实现将560分钟表示成**小时**分钟的形式输出。
6. 编序C程序,输入一个三位整数x(999=>x>=100),将其分解出百位、十位、个位,并求出各位之和以及各位之积。
7. 编序C程序,要求从键盘任意输入一个3位数的正整数,输出其逆序数(例如输入123,输出321)。
三、实验过程与结论:(经调试正确的源程序(核心部分)和程序的运行结果)(三)编写程序1.#include<stdio.h>int main(){printf("*************\n Very good!\n*************\n");return 0;}2.#include<stdio.h>int main(){float a,b,c,s;a=38.9;b=27.2;c=2*(a+b);s=a*b;printf("周¨¹长¡è是º?%f,面?积y是º?%f\n",c,s);return 0;}3.#include<stdio.h>int main(){int a,b;printf("输º?入¨?两¢?个?整?数ºy:êo\n");scanf("%d %d",&a,&b);int x,y,z,m;x=a+b;y=a-b;z=a*b;m=a/b;printf("两¢?个?数ºy的Ì?和¨ª是º?%d,差?是º?%d,积y是º?%d,商¦¨¬是º?%d\n",x,y,z,m);return 0;}#include<stdio.h>#define PI 3.14int main(){float r,v;printf("请?输º?入¨?球¨°的Ì?半ã?径?:\n");scanf("%f",&r);v=4*PI*r*r*r/3;printf("球¨°的Ì?体¬?积y是º?%f\n",v);return 0;}5.#include<stdio.h>int main(){int a,b,c;a=560;b=a/60;c=a%60;printf("%d小?时º¡À,ê?%d分¤?钟¨®\n",b,c);return 0;6. #include<stdio.h>int main(){int a,b,c,d;int x,y;printf("请?输º?入¨?一°?个?三¨y位?数ºy:êo\n");scanf("%d",&a);b=a/100;c=a/10%10;d=a%10;x=b+c+d;y=b*c*d;printf("百㨴位?是º?%d,十º?位?是º?%d,个?位?是º?%d,个?位?之?和¨ª是º?%d,各¡Â位?之?积y 是º?%d\n",b,c,d,x,y);return 0;}7. #include<stdio.h>int main(){int a,b,c;int x,y;scanf("%d",&x);a=x/100;b=x/10%10;c=x%10;y=c*100+b*10+a;printf("%d\n",y);return 0;}四、实验总结:(实验中遇到的问题及解决方法,心得体会等)对于代码不熟悉,写代码速度慢,应在敲代码上花时间。
C语言程序设计【第二-五章复习】
多重 if 结构
真
假
真
假
嵌套 if 结构
嵌套 if 结构就是将整个 if 块插入另一个 if 块中
if (表达式1)
if (表达式2) 真 真 真 假
if (表达式3)
语句;
else
语句;
30
嵌套 if 结构
if (x > 0) if (y > 1) z = 1; else /*这个 else 部分属于哪个 if?*/ z = 2; C语言规定,每个 else 部分总属于前面最近的那 个缺少对应的 else 部分的 if 语句。 提倡使用大括号括起来以避免看起来有二义性。
counter = 0; counter == 10; counter ++; 工作原理 inum = 1; inum < 25; inum = inum + 1; 1、计算表达式1的值,通常为循环变量赋初值; cnt = 100; cnt >0 cnt-2、计算表达式2的值,即判断循环条件是否为真,若值为真则执行
while 循环的一般语法: 工作原理
do { 语句; } while (表达式);
它先执行循环体中的语句, 然后再判断条件是否为真, 如果为真则继续循环;如果 为假,则终止循环。
示例
do { ... ... scanf(“%c”,&a); } while (a != ‟n‟);
37
do-while 循环示例
25
条件结构
if-else 语句的一般形式为:
if (<条件>) { <语句块> } else { <语句块> }
如果条件为真,执行 if 后面的一个语句或一组语句; 如果条件为假,则执行 else 后面的语句。
C语言复习重点
《C语言程序设计》复习重点第一章C语言概述1、C语言的特点包括:结构化的程序设计语言、语句简洁、紧凑,功能强大、移植性好等等,重要的一点是它允许直接对硬件进行操作。
2、C程序由函数组成,一个C程序必须包含一个main函数,也可包含一个main函数和若干个其他函数。
main函数的位置可以任意,但C 程序总是从main函数开始执行的。
3、C程序的每个语句和数据声明的最后必须有一个分号。
4、开发一个C程序,要经过编辑、编译、连接和运行四个步骤,形成.c和.obj以及.exe三个文件。
5、可以使用VC++ 6.0编辑和运行C程序。
习题1-1#include <stdio.h>void main ( ){ printf ("**************************\n");printf(" Very Good!\n");printf ("**************************\n");}习题1-2#include <stdio.h>void main() {int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); }第二章数据的存储与运算1、常量和变量(1)常量是在程序中不能被更改的值,包括直接常量和符号常量;(2)变量在程序中可以被更改,通过变量可以引用存储在内存中的数据。
2、C语言提供了四种数据类型:基本类型、构造类型、指针类型和空类型。
3、基本数据类型又包括三类:整型、实型和字符型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LDS BX, TABLE
; (BX)=0040H
; (DS)=3000H
LES BX, TABLE
; (BX)=0040H
注意:
* 不影响标志位 * REG 不能是段寄存器 * SRC 必须为存储器寻址方式
; (ES)=3000H
标志寄存器传送指令
标志寄存器传送指令用来传送标志寄存器
0000 1001 + 0111 1100 1000 0101
带: ( +9 ) + ( +124 ) = -123 OF = 1 无: 9 + 124 = 133 CF = 0 带符号数溢出
例5.9 编程序实现两个双精度数 20034980H和1008E699H加法运算
;5-1.asm XLAT EXAMPLE 查十六进制数的ASCII码表
DATA SEGMENT TABLE DB 30H,31H,32H,33H,34h,35h,36H,37H DB 38H,39H,41H,42H,43H,44H,45H,46H HEX DB 3 ;要查的十六进制数 ASCII DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET TABLE MOV AL,HEX XLAT MOV ASCII,AL MOV DL,AL MOV AH,02H INT 21H 显示单个字符! MOV AH,4CH INT 21H CODE ENDS END START
带:( +4 ) + ( +11 ) = +15 OF = 0 无:4 + 11 = 15 CF = 0
带符号数和无符号数都不溢出
0000 0111 + 1111 1011 0000 0010
带:( +7 ) + ( -5 ) = +2 无:7 + 251 = 2 无符号数溢出
OF = 0 CF = 1
( DST ) ( SRC ) + ( DST )
( DST ) ( SRC ) + ( DST ) + CF
带进位加法指令: ADC DST , SRC
– 执行操作:
加1指令:
– 执行操作:
INC OPR
( OPR ) ( OPR ) + 1
注意: * 除 INC 指令不影响 CF 标志外,均对条件标
志位有影响。
加法指令对条件标志位的影响
SF=
1 0 1 0 1 0 结果为负 否则
ZF=
1 0
结果为0 否则
CF=
和的最高有效位 有 向高位的进位 否则 两个操作数符号相同,而结果符号与之相反 否则
OF=
CF 位表示 无符号数 相加的溢出。 OF 位表示 带符号数 相加的溢出。
n = 8bit
带符号数 ( -128 ~ 127 )
FLAGS的内容
– 有2对4条指令
• 低8位传送:LAHF和SAHF • 16位传送:PUSHF和POPF 标志位操作指令直接对CF、DF、IF标志进
行复位或置位
– CLC、STC、CMC、STD、CLD、CLI、STI
标志低字节进出AH指令
LAHF ;AH←FLAGS的低字节 LAHF指令将标志寄存器的 低字节送寄存器AH SF/ZF/AF/PF/CF状态标志 位分别送入AH的第 7/6/4/2/0位,而AH的第 5/3/1位任意
课间练习
已知一个10以内的十进制数,查立方表,
得其立方值。
地址传送类指令
地址传送指令将存储器单元的逻辑地址送
至指定的寄存器
– 有效地址传送指令 LEA – 指针传送指令 LDS和LES
注意不是获取存储器单元的内容
有效地址传送指令LEA(load EA)
LEA
将存储器操作数的有效地址传送至指
定的16位寄存器中
LEA r16,mem
;r16←mem的有效地址EA
例题5.3
指针传送指令LDS、LES
LDS r16,mem ;r16←mem, ;DS←mem+2 LDS指令将主存中mem指 定的字送至r16,并将 mem的下一字送DS寄存器
LES r16,mem ;r16←mem, ;ES←mem+2 LES指令将主存中mem 指定的字送至r16,并 将mem的下一字送ES寄 存器
思考
TABLE DS:BX +0 +1 +2 30h 31h 32h 如果不用查表指令,考 虑如何实现? 待查存储单元的有效 地址还可以如何获得? 如何修改例5.1,使得 可以任意由键盘输入 一个数值,得出相应 的结果?
+3
... +F
33h 34h
„ „ 46h
;5-2.asm DATA SEGMENT TABLE DB 30H,31H,32H,33H,34h,35h,36H,37H DB 38H,39H,41H,42H,43H,44H,45H,46H X DB 3 ASCII DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BL,X MOV BH,0 MOV AL,TABLE[BX] MOV ASCII,AL MOV DL,AL MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START
例题5.4 例题5.5
例5.5:LEA BX, [BX+SI+0F62H] LDS SI, [10H] LES DI, [BX]
TABLE (DS):1000H
MOV BX, TABLE 40 H 00 H 00 H 30 H
; (BX)=0040H
MOV BX, OFFSET TABLE ; (BX)=1000H LEA BX, TABLE
;段定义开始(DATA段) ;定义第一个加数 ;定义第二个加数 ;准备用来存放结果的单元 ;段定义结束 ;段定义开始 (CODE段) ;ASSUME伪指令规定段的性
;将数据段段地址送入DS ; 汇编指令
;4CH返回子功能号 ;DOS 中断调用 ;代码段结束
back
顺序结构程序设计主要用于实现 数据传送、数据计算等任务
5.2 80x86的指令系统
1.
2.
3.
4.
5. 6.
数据传送指令 算术指令 逻辑指令 串处理指令 控制转移指令 处理机控制与杂项操作指令
重点关注
1.
指令的汇编格式 指令的基本功能
2.
3.
指令支持的寻址方式
指令的执行对标志位的影响 指令的特殊要求
4.
5.
5.2.1数据传送指令Fra bibliotek通用数据传送指令
例题5.6
类型转换指令(符号扩展指令)
CBW ;AL的符号扩展至AH
;如AL的最高有效位是0,则AH=00 ;AL的最高有效位为1,则AH=FFH。AL不变
CWD ;AX的符号扩展至DX
;如AX的最高有效位是0,则DX=00 ;AX的最高有效位为1,则DX=FFFFH。AX不变
什么是符号扩展 符号扩展指令常用于获得倍长的数据 不影响标志位
1.
2. 3.
定义三个字型变量x,y,z,将x,y初始 化 对x,y进行算数运算,并把结果进行保存 采用寄存器寻址方式,将结果存入变量z 中
流程图
开始
如何实现数据传送?算
X=3,y=5
取出x
数运算? 汇编语言指令系统发挥 作用!!
与y相加
减6 结果存入z 结束
;5_1.asm 公式计算 DATA SEGMENT X DW 4 Y DW 5 Z DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA 质 START: MOV AX,DATA MOV DS,AX MOV AX,X ADD AX,Y SUB AX,6 MOV Z, AX MOV AH,4CH INT 21H CODE ENDS
SAHF ;FLAGS的低字节←AH SAHF将AH寄存器内容送 FLAGS的低字节 用AH的第7/6/4/2/0位相 应设置SF/ZF/AF/ PF/CF 标志
标志寄存器进出堆栈指令
PUSHF ;SP←SP-2 ;SS:[SP]←FLAGS PUSHF指令将标志寄存 器的内容压入堆栈, 同时栈顶指针SP减2 POPF ;FLAGS←SS:[SP] ;SP←SP+2 POPF指令将栈顶字单元 内容送标志寄存器,同 时栈顶指针SP加2
5.3
一个高质量的程序应具有以下特点:
结构清晰、简明、易读、易调用;
执行速度快;
占用存贮空间小。
程序设计的一般步骤
1.
2.
3.
4.
5.
6.
分析问题,确定设计思路及算法; 确定输入/输出数据的格式; 分配存贮区,定义变量; 画出流程图,要求简洁、明了、直观,要 利于简化结构、推敲逻辑关系、排除设计 错误,完善算法; 根据流程图编写程序。 上机运行并调试程序。
例题5.1
换码指令执行前:
在主存建立一个字节量表格,内含要转换成的目标代码 表格首地址存放于BX,AL存放相对表格首地址的位移量
换码指令执行后:
将AL寄存器的内容转换为目标代码
XLAT
例5.1:查表,转换15以内十进制数为对应的 XLAT 十六进制数,并以字符形式显示。 DATA SEGMENT ORG 100H table db 30H,31H,32H,33H,34h,35h,36H db 37H,38H,39H,3AH,41H,42H,43H„„ DATA ENDS 换码指令没有显式的操作数,但使用了BX和AL; 因为换码指令使用了隐含寻址方式——采用默认操 „„ 作数 BX,OFFSET table MOV ;MOV BX,100h MOV AL,03H ;AL存入位移量 AL=33H XLAT ;AL<-DS:[BX+03]