第5章_基本结构程序设计

合集下载

C语言 第五章-循环结构程序设计

C语言 第五章-循环结构程序设计

执行过程如图所示。其中i为外循环的控制变 量,j为内循环的控制变量。
i =0 当 i <=10
j=0 当 j<=10
printf(“%d ”, i*j ) j++ i++
例4 编程打印“九九乘法表”。
分析:九九乘法表 1×1=1 1×2=2 1×3=3 … 2×1=2 2×2=4 2×3=6 … 3×1=3 3×2=6 3×3=9 … …… 9×1=9 9×2=18 9×3=27 …
i ++ ; } while ( i <= 100 ) ; printf ( " %d " , sum ) ; }
结果相同
同样是下列程序,但如果while后面的表达式结果一开始就是 假时,两种循环结果会不一样。
main ( ) /*程序1*/
{ int i , sum = 0 ; i = 101 ;
所以程序需要设计成二重循环。由于题目只 要求找到一组解,所以在循环过程中只要找到一组 满足条件的x, y, z就可以跳出循环。
跳出循环的方法可以采用break语句,但是, 因为是二重循环,所以要考虑使用break是否方便。
程序 百钱买百鸡问题。 void main ( ) { int x , y , z ;
打印第2行 ( i = 2 ) for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
…… 打印第9行 ( i = 9 )
for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/

大学计算机基础第5章

大学计算机基础第5章

时期 阶段
任务
文档
需求分析 系统的目标及应完成的工作 需求规格说明书
开发
总体设计 软件设计
详细设计 软件编码 编写程序代码
总体设计说明书 详细设计说明书 程序、数据注释
黑盒测试、白盒测试、单元 测试后的软件、
软件测试 测试、集成测试、确认测试、大纲、方案与结
系统测试

运行 软件维护 运行和维护
维护后的软件
1)软件生命周期模型:是描述软件开发过程 中各种活动如何执行的模型。 2)常见的软件生命周期模型有:瀑布模型、 增量模型、螺旋模型、喷泉模型、变换模型及 基于知识的模型等。
上图是软件生存周期的瀑布模型。
5、软件工具与软件开发环境
软件工具:就是帮助开发软件的软件。 软件开发环境(或称软件工程环境):是全面支 持软件开发全过程的软件工具的集合,这些软 件工具按照一定的方法和模式组合起来,共同 支持软件生命周期内的各个阶段和各项任务的 完成。
结构化方法的软件开发过程
软件计划后 结构化分析
结构化设计
编码并测试 结构化程序设计
面向对象方法的软件开发过程
软件计划后 面向对象分析
面向对象设计
软件测试 面向对象编程
1、结构化分析方法
1)结构化分析(简称SA)方法是面向数据流 进行需求分析的方法。该方法使用简单易读 的符号,运用抽象的概念模型,根据软件内 部数据传递、变换的关系,自顶向下逐层分 解,描绘出满足功能要求的软件模型
DFD图的数据流可分为两种类型:变换流和事务流 变换流:信息沿着输入通路进入系统,同时将信息的外
部形式转换成内部形式,通过变换中心处理之 后,再沿着输出通路转换成外部形式输出 事务流:信息沿着输入通路到达一个事务中心,事务中 心根据输入信息的类型在若干个动作序列中选 择一个来执行,这种信息流称为事务流

C语言程序设计第五章

C语言程序设计第五章
通过编写程序,实现对数组的访问、修改 、排序等操作。例如,实现一个程序,将 一个数组中的所有元素进行排序,或者找 到数组中的最大值和最小值。
05 案例分析
案例一:条件语句在程序中的应用
总结词
条件语句是C语言中用于根据不同条件执行不同操作的语句,通过if、else if和else关键 字实现。
详细描述
编程练习二:循环语句应用
总结词
理解并掌握while和for循环的使用
详细描述
通过编写程序,实现重复执行某段代 码直到满足特定条件,或者根据需要 重复执行某段代码指定次数。例如, 计算1到100的累加和,或者打印出0 到99的所有偶数。
编程练习三:数组操作应用
总结词
理解并掌握数组的基本操作
VS
详细描述
详细描述
数组在程序中用于存储和处理同一种类型的 数据元素,例如存储一组学生的成绩、计算 一组数据的平均值等。数组操作包括数组的 声明、初始化、访问和修改等。通过循环语 句可以方便地遍历数组元素并进行处理。数 组操作在程序中具有广泛的应用,是C语言
中重要的数据结构和算法之一。
06 总结与展望
本章总结
详细描述
C语言中的数组是一种存储相同类型元素的线性数据结构。可以通过索引访问数 组元素,进行赋值、交换、排序等操作。同时,C语言还提供了字符串操作函数, 如strcpy、strcat、strlen等。
语法点三:数组操作
01
示例代码
02
```c
int array[10]; // 声明一个包含10个整数的数组
详细描述
循环语句在程序中用于重复执行一段代码, 例如打印1到10的数字、计算一定数量的累 加和等。循环语句可以嵌套使用,以实现更 复杂的循环结构和算法。循环语句通常与条 件语句结合使用,以控制循环的执行条件和 次数。

C语言程序设计:第5章 循环结构

C语言程序设计:第5章 循环结构
执行过程: 先执行循环体语句,再检查 循环条件表达式的值是否为真, 如果为真则继续执行循环体语句, 否则结束循环。
12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;

C语言程序设计-第5章全解

C语言程序设计-第5章全解
2018/10/21 华中科技大学计算机学院C语言课程组 22
函数返回的值,程序可以使用它, 也可以不使用它
while(…) { getchar(); c=getchar(); … } /* 返回值不被使用 */ /* 返回值被使用 */
2018/10/21 华中科技大学计算机学院C语言课程组 18
5.2.1
函数的定义
函数定义的一般形式为: 类型名 函数名(参数列表) { 声明部分 语句部分 }
2018/10/21 华中科技大学计算机学院C语言课程组 19


类型名说明函数返回值(即出口参数)的数据类型 (简称为函数的类型或函数值的类型),可以是除 数组以外的任何类型。当返回值类型为void,函数 将不返回任何值。 参数列表说明函数入口参数的名称、类型和个数, 它是一个用逗号分隔的变量名及其类型列表,它描 述了在调用函数时函数所接收的参数。一个函数可 能没有参数,在没有参数的情况下,参数列表说明 为void,否则必须明确地列出每一个参数的类型。
16

图5.1 C语言程序的基本结构
2018/10/21
华中科技大学计算机学院C语言课程组
17
5.2

函数的定义与函数的声明
程序中若要使用自定义函数实现所需的功能, 需要做三件事: ① 按语法规则编写完成指定任务的函数,即 定义函数; ② 有些情况下在调用函数之前要进行函数声 明; ③ 在需要使用函数时调用函数
2018/10/21
华中科技大学计算机学院C语言课程组
9



在函数的顶端用“/*……*/”格式包含的部分是函 数头部注释,包括函数名称、函数功能、函数参数、 函数返回值等内容,如有必要还可增加作者、创建 日期、修改记录(备注)等相关项目。虽然函数头 部注释在语法上不是必需的,但可以提高程序的质 量和可维护性,在程序设计时要遵从这一编程规范。 GetNum是函数名,其后的void说明函数调用时不 接收任何参数,即没有入口参数,函数执行完应该 返回所产生的随机数,即该随机数是函数的出口参 数,函数名前的int说明出口参数的类型为整型。 函数体内的rand是接口stdlib.h中的一个函数,它 返回一个非负并且不大于常量RAND_MAX的随机整 数,RAND_MAX的值取决于计算机系统。 MAX_NUMBER是用#define定义的符号常量,其 值为1000。当执行return语句时,其后表达式的值 被带回到调用函数中。

第5章 循环结构程序设计PPT课件

第5章 循环结构程序设计PPT课件

}
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环i=1w; hile (i<=100)
2、while语句的注意事项
{ sum=sum+i;
注意:
i++; }
(1) 循环体如果包含一个以上的语句,应该用花括弧括
起来,以复合语句形式出现
(2) 在循环体中应有使循环趋向于结束的语句。如果无
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环
1、while语句的一般形式
while语句用来实现“当型”循环结构 一般形式: while (表达式)
循环体语句
当表达式为非0值时,执行while 语句中的循环体语句 其特点是:
先判断表达式,后执行语句
C语言程序设计
第5章 循环结构程序设计
} 运行结果:
}
1↙ sum=55 再运行一次:
}说明:当while后面的表达式的第一次的
值为“真”时,两种循环得到的结果相
11↙ sum=0
同。否则,二者结果不相同
C语言程序设计
第5章 循环结构程序设计
§ 5.4 用for语句实现循环
1、for语句的一般形式
C语言中的for语句使用最为灵活,不仅可以用于 循环次数已经确定的情况,而且可以用于循环次数 不确定而只给出循环结束条件的情况,它完全可以 代替while语句
语句,转到第(5)步
(3) 求解表达式3
(4) 转第(2)步骤继续执行
(5) 循环结束,执行for语句下面的一个语句
C语言程序设计
第5章 循环结
执行表达式1
循环初始条件

第五章_汇编语言程序设计基础

第五章_汇编语言程序设计基础
3
§5-1 汇编语言的基本概念
汇编 语言 源程 序 汇编 程序 A ss em bl er 机器 语言 目标 程序
汇编语言指令与机器指令之间有一一对应的关系,所以汇 编语言与具体的机器密切相关,是一种面向机器的语言。 不同机器(CPU)的汇编语言不同。 为方便编程,实际的汇编程序常还提供一些除机器指令以 外的命令,被称为伪指令。伪指令(Pseudo Instruction) 仅在汇编过程中指导汇编程序如何生成目的代码,自己本 身并没有对应的机器代码。 汇编语言的指令(语句)包含两类:硬指令或真指令(指 令语句)和伪指令(指示性语句) 。
12
§5-2 汇编语言的基本语言成分
6. 综合运算符(改变属性运算符):由已存在的存储器操作数 (变量/标号)生成一个段地址和位移量相同、类型不同的新 的存储器操作数(变量/标号)。 (1) 改变变量/标号的类型: 格式: 新类型 PTR 变量/标号 功能:把PTR左边的属性赋给右边的变量/标号 [例] 设变量XVAR是字节属性,现把它的两个字节内容送 到AX中起去。 MOV AX , WORD PTR XVAR (2) 定义当前存储单元的类型: 格式: THIS 类型 功能:可用于建立新类型的存储器变量,但不分配新的存 储空间,它的段地址和位移量是汇编时的当前值。 [例] WBUFFER EQU THIS WORD BUFFER DB 100 DUP(?)
17
§5-3 汇编语言源程序的结构
(3) 段的类别属性:通常使用的类别名是‘CODE’、 ‘DATA’、‘STACK’,分别指明是代码段、数据段、 堆栈段;但也允许用户自定义类别名。类别名必须用单引 号括起来。 连接程序在组织段时,将所有同类别的段集中在一起, 进行相邻分配。 2. 段寄存器说明伪指令(ASSUME): 格式: ASSUME 段寄存器:段名 [,段寄存器:段名] 功能:告诉汇编程序,段名所指的段由那一个段寄存器寻 址,即建立段与段寄存器的关系。 说明:段寄存器的实际值(CS除外)还要由数据传送令在 执行程序时赋值。

C语言课件第5章循环结构程序设计2

C语言课件第5章循环结构程序设计2
18
思考 1、如果去掉循环体 中的大括号会怎样? 2、在循环体中,使 循环条件趋向于不满 足(假)的语句是哪 条?
第5章
循环结构程序设计
举例
while和do-while循环的比较。
此程序的 功能?
#include <stdio.h> int main() { int i,sum=0; scanf("%d",&i); while(i<=10) { sum=sum+i; i++; } printf("sum=%d\n",sum); return 0; }
第5章
循环结构程序设计
举例
现有某班20名学生的C语言成绩,求该班学生的C语 言的平均成绩。即:输入20个学生的成绩,计算平 均值,输出平均值。
分析:定义变量表示学生的成绩、全班总和、平均成绩。 如果定义20个变量保存20 算法设计: 个成绩,程序中计算成绩 第一步:输入20个学生的成绩 总和会有什么问题? 第二步:计算成绩总和 (用累加求和的方法)
运行结果:凵2550
#include <stdio.h> int main() { int i=1, n; float fac=1; printf("请输入n:"); scanf ("%d",&n); while (i<=n) { fac=fac*i; i++; } printf("%.0f\n",fac); return 0; } 请输入n:5
分析
求1~100的累加和。
换一种思路:
sum=sum+n;
首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依次 取1、2、……、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n;”后,n增1; (3)当n增到101时,停止计算。此时,sum的值就是1~100的累 计和。

第五章用C语言进行结构化程序设计

第五章用C语言进行结构化程序设计
第五章 用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

第5章 循环结构程序设计-答案

第5章 循环结构程序设计-答案
程序运行后的输出结果是(C)。
A)1,1B)2,2C)3,3D)4,4
15.以下程序中,printf语句的执行次数是( B )。
main()
{
int i,j;
for (i=1; i<=5;i++)
for (j=1;j<=10;j++)
printf("%d \n",i+j);
}
A、15B、50C、死循环D、0
{
for(j=2,j<=i-1;j++)
if(i%j==0) break;//利用求余运算符%,只要满足i%j==0)就退出循环
if(j==i)/i是否素数的判定条件
printf("%d\n",i);
}
}
4.编程序输出9*9乘法口诀表。
程序如下:
#include <stdio.h>
void main()
二、程序设计
1用while语句求1+2+3+…+99+100的和。
程序如下:
#include <stdio.h>
voidmain()
{
int i=1,s=0;//循环首部,循环初始条件
while(i<=100)//循环首部,包含循环条件
{
s=s+i;/*循环体,复合语句*/
i++;//改变循环控制变量
程序如下:
#include <stdio.h>
void main()
{
int iNum=0,iLet=0;
char ch;
printf("input a string:\n");

C++语言程序设计(清华大学出版社)课后习题及答案 第 五 章 程序的结构

C++语言程序设计(清华大学出版社)课后习题及答案    第 五 章   程序的结构

void TelepathicFunction(); int main() { const int MaxCats = 5; Cat *CatHouse[MaxCats]; int i; for (i = 0; i<MaxCats; i++) { CatHouse[i] = new Cat(i); TelepathicFunction(); } for ( i = 0; i<MaxCats; i++) { delete CatHouse[i]; TelepathicFunction(); } return 0; } void TelepathicFunction() { cout << "There are " << Cat::GetHowMany() << " cats alive!\n"; } 程序运行输出: There are 1 cats alive! There are 2 cats alive! There are 3 cats alive! There are 4 cats alive! There are 5 cats alive! There are 4 cats alive! There are 3 cats alive! There are 2 cats alive! There are 1 cats alive! There are 0 cats alive!
5-8 什么叫做友元函数?什么叫做友元类?
解: 友元函数是使用 friend 关键字声明的函数,它可以访问相应类的保护成员和私有成员。友元 类是使用 friend 关键字声明的类,它的所有成员函数都是相应类的友元函数。
本页已使用福昕阅读器进行编辑。 福昕软件(C)2005-2009,版权所有, 仅供试用。

C语言-第5章 循环结构程序设计

C语言-第5章 循环结构程序设计

第5章循环结构程序设计一、单项选择题1.在C语言中,下列说法中正确的是()。

A) do-while语句构成的循环不能用其它语句构成的循环来代替。

B) do-while语句构成的循环只能用break语句退出。

C) do-while语句构成的循环在while后的表达式非零时结束循环。

D) do-while语句构成的循环,在while后的表达式为零时结束循环。

2. break语句不能出现在语句中()A) switch B)for C) while D) if…else3.对于break语句和continue语句的说法错误的是()A) break语句不能用于循环语句和switch语句之外的任何其他语句中。

B) break和continue也可以用于if语句中C) continue语句只结束本次循环,而不是终止整个循环的执行。

D) break语句是结束整个循环过程,不再判断执行循环的条件是否成立。

4. 语句while(!y);中的表达式!y等价于A)y==0 B)y=1 C)y=!0 D) y==15. 若有“int a=1,x=1;”,则循环语句“while(a<10) x++; a++;”的循环执行()。

A)无限次B)不确定次C)10次D)9次6. 有以下程序段int k=0while(k) k++;则while循环体执行的次数是A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次7. 下列循环语句中有语法错误的是( )A while(x=y) 5;B while(0) ;C do 2;while(x= =b);D do x++ while(x= =10);8. 当运行时输入:abcd$abcde ,下面程序的运行结果是。

#include<stdio.h>main(){char c;while(putchar(getchar())!='$');printf("end");}A)abcd$abcde B)abcd$end C)abcdend D)abcd$abcdeend 9. 以下程序段( )x=-1;do { x=x*x; }while(x>0);A) 是死循环B) 循环执行一次C) 循环执行二次D) 有语法错误10. 下面程序段执行后的结果为: ( )int sum=0, n=10;do { sum=sum+n;n++; }while(n<10);printf(“%d,%d”,sum,n);A. 0, 10 B) 10, 11C) 0, 11 D) 以上结果都不对12. 循环“for(i=0,x=1;i=10&&x>0;i++);”的循环执行()。

《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计

《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计

Page 28
参考代码
#include<stdio.h> void main() {
char ch; int char_num=0,int_num=0,other_num=0; while((ch=getchar())!=‘\n’) //回车键结束输入 {
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') char_num++;
printf("************\n ");
printf("************\n ");
printf("************\n ");
printf("************\n "); printf("************\n "); 等价 for(int i=1;i<=8;i++)
{ s=s+i;
i++; //表达式3移至循环体末尾
}
printf("s=%d",s);
}
<<C语言程序设计>>
Page 19
随堂练习
例 编程计算n的阶乘。
n!=1 2 3 ……〔n-1〕 n
思路:
类似于累加求和,每一次循环乘上一个数字,求和 将和初始化为0,这里应把积初始化为?
<<C语言程序设计>>
#include "stdio.h" void main( ) { int i,sum=0;

第五章-循环结构程序设计编程题(参考答案)

第五章-循环结构程序设计编程题(参考答案)

第五章循环结构程序设计1.用for循环语句编程输出1~20之间的所有整数,两数之间以空格分隔。

#include<stdio.h>void main(){int i;for(i=1;i<=20;i++)printf("%d ",i);printf("\n");}2.用for循环语句编程输出20~1之间的所有整数,两数之间以空格分隔。

#include<stdio.h>void main(){int i;for(i=20;i>=1;i--)printf("%d ",i);printf("\n");}3.用for循环语句编程输出A~Z之间的所有字符,两字母之间以空格分隔,要求一行输出8个字符。

#include<stdio.h>void main(){char c;for(c='A';c<='A'+25;c++){putchar(c);}}4.输出100~200之间所有能被3和7整除的数(每行输出4个数)。

#include<stdio.h>void main(){int i,j=0;for(i=100;i<=200;i++){if(i%21==0){ j++;printf("%12d",i);if(j%4==0) printf("\n");}}}5.输出1至1000之间所有满足用3除余2、用5除余3、用7除余2的数(要求每行只输出5个数)。

#include<stdio.h>void main(){for(i=1;i<=1000;i++){if((i%3==2)&&(i%5==3)&&(i%7==2)){ j++;printf("%12d",i);if(j%5==0) printf("\n");}}}6.先读入一个正整数n,然后计算并显示前n个偶数的和。

VF 第5章

VF 第5章

21
5.4.3循环结构
• • • • • • • • 1.DO WHILE — ENDDO 语句 语句格式: DO WHILE <条件> <命令序列> [LOOP] [EXIT] ENDDO 执行该语句时,先判断<条件>是否为真,如果是真则执行 DO WHILE与ENDDO间的循环体,当执行到ENDDO时, 再返回DO WHILE 重新判断循环条件是否为真,确定是 否再次执行循环体。若条件为假则结束循环语句执行 ENDDO后的语句。 22
第5章 结构化程序设计基础
1
主要内容
• • • • • 5.1程序设计的基本概念 5.2程序的建立与运行 5.3常用命令介绍 5.4程序的基本结构 5.5过程及过程文件
2
5.1 程序设计的基本概念
• 程序是计算机能够分析执行的指令集合。 这组指令被存放于称为程序文件或命令 文件的文本文件中。程序设计是根据解 决某一问题的步骤,按一定的逻辑关系, 将一系列的指令组合在一起。程序执行 的过程就是程序中所有指令执行的过程。 当运行程序时,系统会自动按一定次序 执行程序文件中的命令。
16
5.4.2选择结构
• • • • • • • • 2.双分支结构 语句格式: IF<条件> <语句序列1> ELSE <语句序列2> ENDIF 如果<条件>表达式的值是真(.T.)则执行<语句序 列1>,然后执行ENDIF后的语句;否则执行<语句 序列2>,然后执行ENDIF后的语句。
17
5.4.2选择结构
25
5.4.3循环结构
• • • • • • • 3.SCAN — ENDSCAN 语句 语句格式: SCAN[<范围>] [FOR <条件1>] [WHILE <条件2>] <循环体> [LOOP] [EXIT] ENDSCAN

北京航空航天大学《C语言程序设计》课件-第五章循环结构程序设计

北京航空航天大学《C语言程序设计》课件-第五章循环结构程序设计

2023/4/2
5.3 do-while语句
15
语句一般格式
do
{语句组} while (表达式);
功能:
– 先执行内嵌语句(循环体),之后计算 表达式的值,不为0(逻辑真)时,再 执行循环体并判断条件,直到表达式的 值为 0 结束循环,转去执行while下面 的语句。
2023/4/2
do-while循环的算法
for(n=100;n<=200;n++) {
if (n%7!=0) continue;
printf("%6d",n); j++; if (j%10==0)
printf("\n"); } printf(" \n j=%d\n",j); }
29
2023/4/2
5.5.2 循环中break的应用
30
功能:
}
无循环体
} 循环体
2023/4/2
5.5 循环结构中的跳转语句
25
有如下三种语句实现跳转: – continue语句 – break语句 – goto语句
功能:在循环语句的循环体中使用,可 以进行循环的流程控制
2023/4/2
5.5.1 continue语句及应用
26
功能:
– 中断循环体的本次执行(即跳过循环体中尚未 执行的语句),立即开始执行下一次循环。
– 利用break语句能够强迫终止本层循环, 转到后续语句执行。
while语句
表达式? N
Y
… break;

do-while语句
… break;

表达式? N
Y

c语言第五章选择结构程序设计(习题册答案)

c语言第五章选择结构程序设计(习题册答案)

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”的表达式x7、条件“22&&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||AB的值是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,使其功能不变。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

取表的首地址 取要求值的数 查表求其平方值
结束
第6页 第6页
汇编语言程序设计
第5章
基本结构程序设计
5.2.1 转移指令
5.2 分支程序设计
1. 无条件转移指令JMP 功能:无条件地使程序转移到指定的目标地址
格式: JMP 目标标号 直接方式 转移的目标地址直接出现在指令中 功能: IP ← IP + disp
第16页 第16页
汇编语言程序设计
第5章
基本结构程序设计
【例】:如果 X>50,转到TOO_HIGH,不满足,X-Y;如果溢出转到 OVERFLOW,否则 |X-Y| → RESULT 。
AX, X AX, 50 TOO_HIGH ;大于则转移到TOO_HIGH AX, Y JO OVERFLOW ;溢出则转移 ;结果为正则转移 JNS NONNEG NEG AX NONNEG: MOV RESULT, AX TOO_HIGH: …… OVERFLOW: …… 程序段如下: MOV CMP JG SUB
AX,W
AX,0 L1 Z,400H NEXT L2 AX
NEG
ADD MOV
AX
AX,50H Z,AX
JMP
L2: L1: MOV JMP MOV
NEXT
Z,AX NEXT Z,400H L2:
ADD
MOV JMP MOV NEXT: … …
AX,50H
Z,AX NEXT Z,AX
NEXT: … …
组成
处理
根据问题的需要对输入数据进行相应的运算处理
输出结果 将运算处理的结果输出 基本语句:数据传送指令、算术运算指令和逻辑运算指令 执行过程:
开始 指令2 指令n
结束
第3页 第3页
汇编语言程序设计
第5章
基本结构程序设计
【例】:在屏幕上显示一个字符串:“WELCOME !”。 完整程序: DATA SEGMENT ;数据段开始 STRING DB ‘WELCOME !’,13,10,’$’ DATA ENDS ;数据段结束 CODE SEGMENT ;代码段开始 ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ;设置DS MOV AH, 9 ;子功能号9,用于输出字符串 LEA DX,STRING ;字符串偏移地址 INT 21H ;系统功能调用 MOV AX,4C00H ;返回DOS INT 21H CODE ENDS ;代码段结束 END START
MOV CX,200 MOV CX,50 JMP NEXT JMP NEXT
L: MOV CX,200 MOV CX,50 L:
NEXT: … NEXT: … … …
第13页 第13页
汇编语言程序设计
第5章
基本结构程序设计
【例】: 已知X为16位的数,判断X是奇数还是偶数,若为奇数,则令Z=X, 若为偶数,令Z=0。 程序段一(用ZF测试): MOV AX,X 程序段二(用CF测试): MOV AX,X
说明:(1)条件转移指令不影响标志位 (2)条件转移指令前安排算术运算、比较、测试 等影响相应标志位的指令
第10页 第10页
汇编语言程序设计
第5章
基本结构程序设计
分支程序基本执行流程
指令操作(影响标志位)

测试标志位

执行程序段A
执行程序段B
下一条指令
第11页 第11页
汇编语言程序设计
第5章
基本结构程序设计
TEST AX,1 JNZ L
BT AX,0 SHR AX,1 JC L
MOV Z,0
JMP L: NEXT L:
MOV Z,0
JMP NEXT
MOV Z,AX
MOV Z,AX
NEXT: … …
NEXT: … …
第14页 第14页
汇编语言程序设计
第5章
基本结构程序设计
【例】: 已知W为16位的数,若W为正数,则令Z=W,若为0,令Z=400H, 若为负数,则Z=|W|+50H。 流程图片段 ZF=1
本章重点及难点:
汇编指令的综合应用及多--10学时
第2页 第2页
汇编语言程序设计
第5章
基本结构程序设计
5.1 顺序结构程序设计
顺序结构程序在设计上比较简单,它按指令书写的先后次序 执行一系列操作,这种程序也称为直线程序。
输入数据 已知的数据,即让计算机进行运算的对象
MOV CX,200
JMP L: NEXT
MOV CX,50
NEXT: … …
第12页 第12页
汇编语言程序设计
第5章
基本结构程序设计
【例】: 判断AX当前值的正负,若为正数,则置CX为50,否则令CX为200。 程序段一: 程序段五(用CF测试): 程序段三(用ZF测试):
CMP AX,0 SHL AX,8000H TEST AX,1 JCJNS JNZ LL L 程序段四(用CF测试): 程序段二: ;比较AX是否为0,影响SF标志 ADD AX,15 BT AX,0 ;若AX为正,即SF=0则转移 JC JS L ;若AX为负数,则令CX=200 MOV CX,50 ;跳转到NEXT NEXT JMP L: MOV CX,200 NEXT: … …
类 型
S标志 P标志 O标志
第9页 第9页
汇编语言程序设计
(2).组合条件的条件转移指令
第5章
基本结构程序设计
比较大小
无符号数
<
JB / JC JNAE

JBE/JNC JNA

JNB/JNC JAE
>
JNBE JA
带符号数
JL/JNGE
JLE/JNG
JNL/JNGE
JG/JNLE
无符号数: A 代表大于 B代表小于 (3).CX的值为0转移指令 格式:JCXZ CX=0,转移 带符号数:G代表大于 L代表小于
第5章 基本结构程序设计
本章内容: ●掌握顺序结构程序的设计;
●掌握分支转移指令的使用;
●掌握分支程序和循环程序的设计方法。
汇编语言程序设计
第5章
基本结构程序设计
本章要求
1.掌握顺序结构程序的设计方法,能利用汇编语言基本指令熟练 进行顺序结构程序设计;
2. 熟练掌握分支转移指令的使用,如何生成有效测试标志,选择 何种方式的转移指令。 3. 掌握分支程序设计方法; 4. 掌握循环程序设计方法及串指令的应用。
第8页 第8页
汇编语言程序设计 (1).单个标志位的条件转移指令
第5章
基本结构程序设计
C标志 Z标志
JB/JNAE/JC C=1时,转移 JAE/JNB/JNC C=0时,转移 JE/JZ Z=1时,转移 JNE/JNZ Z=0时,转移 JS S=1时,转移 JNS S=0时,转移 JP/PE P=1时,转移 JNP/JPO P=0时,转移 JO JNO O=1时,转移 O=0时,转移
AX←W
ZF=0
AX=0?
SF=0? SF=1 Z←AX NEXT Z←|W|+50H
SF=0 Z←400H
第15页 第15页
汇编语言程序设计
程序段一: MOV CMP JZ JNS AX,W AX,0 L1 L2
第5章
程序段二:
基本结构程序设计
MOV
CMP JNZ MOV JMP L1: JNS NEG
类 型
段内转移 格式: JMP 字地址指针 转移的目标地址在寄存器或存储单元中 间接方式 功能: IP ← EA 改变IP的值,CS的值不变 直接方式
格式: JMP 目标标号 功能: IP ← OFFSET 目标标号 CS← SEG 目标标号 格式: JMP 双地址指针 CS← [EA+2]
段间转移 改变IP和CS的值 间接方式 功能: IP ← [EA]
第20页 第20页
汇编语言程序设计
第5章
基本结构程序设计
2.双分支结构程序设计举例
【例】:设计字符比较程序,两个字符相同时,显示YES;否则显示NO
开始
取数 相同? N Y
显示NO
显示YES
返回
DATA SEGMENT D1 DB ‘A’ D2 DB ‘B’ RES1 DB ‘YES’, ’ $ ’ RES2 DB ‘NO’, ’ $ ’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,D1 MOV BL,D2
第7页 第7页
汇编语言程序设计
第5章
基本结构程序设计
2. 条件转移指令
功能:以某些标志位或标志位的逻辑运算为依据,满足条件,程序转移 至指定目标;不满足条件,程序顺序执行。 注意:条件转移的目标地址 在+127或-128字节的范围之内 分类:1.单个标志位的条件转移指令 2.组合条件的条件转移指令
【例】: 测试AX当前值是否为零,若为零,则置CX为50,否则令CX为200。
程序段一: CMP AX,0 JZ L 程序段二: ;比较AX是否为0 CMP AX,0 JNZ L ;若AX为0,即ZF=1则转移 ;若AX不为0,则令CX=200 MOV CX,50 ;跳转到NEXT JMP NEXT L: MOV CX,200 NEXT: … …
第4页 第4页
汇编语言程序设计
第5章
基本结构程序设计
【例】:对于三个8位无符号数86H、34H和21H,编写 RESULT=86H*34H-21H的程序。
开始 DATA SEGMENT NUM DB 86H,34H,21H RESULT DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,NUM MOV AL,[SI] MOV BL,[SI+1] MUL BL ;乘积放在AX MOV BL,[SI+2] MOV BH,0 ;把BX高位字节清零 SUB AX,BX MOV RESULT, AX ;保存运算结果 MOV AH,4CH INT 21H CODE ENDS END START
相关文档
最新文档