实验3分支结构程序设计 3.1二分支程序设计 【实验目的】 1.学会正确表达关系表达式和逻辑表达式 2.熟练使用f语句实现二分支程序设计: 3. 学习如何调试程序。 【相关知识点】 1.关系运算符和关系表达式 用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达 式及字符表达式)连接起来的式子,称为关系表达式。关系表达式的值为逻辑值“真”或“假”。 所谓“关系运算”实际上就是“比较运算”。将两个值进行比较,判断比较的结果是否符 合给定的条件。 示例1:a>3 该表达式是一个关系表达式,大于号(>)是关系运算符,如果的值为5,则满足给定 的“a>3”的条件,因此关系表达式的值为“逻辑真”:如果a的值为2,不满足“a>3”的条 件,则关系表达式的值为“逻辑假”。 C语言提供6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于) 一(等于)、=(不等于)。前四种关系运算符的级别相同,后两种运算符的级别相同,前四 种运算符的级别高于后两种。 示例2:若a=3,b=2,c=1 则关系表达式(a>b)=c的值为“逻辑真”。 2.逻辑表达式和逻辑运算符 用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。 C语言提供三种逻辑运算符:&&(逻辑与)、‖(逻辑或)、」(逻辑非),逻辑运算符为 -41-
实验 3 分支结构程序设计 3.1 二分支程序设计 【实验目的】 1. 学会正确表达关系表达式和逻辑表达式 2. 熟练使用 if 语句实现二分支程序设计; 3. 学习如何调试程序。 【相关知识点】 1. 关系运算符和关系表达式 用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达 式及字符表达式)连接起来的式子,称为关系表达式。关系表达式的值为逻辑值“真”或“假”。 所谓“关系运算”实际上就是“比较运算”。将两个值进行比较,判断比较的结果是否符 合给定的条件。 示例 1:a>3 该表达式是一个关系表达式,大于号(>)是关系运算符,如果 a 的值为 5,则满足给定 的“a>3”的条件,因此关系表达式的值为 “逻辑真”;如果 a 的值为 2,不满足“a>3”的条 件,则关系表达式的值为 “逻辑假”。 C 语言提供 6 种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、 ==(等于)、!=(不等于)。前四种关系运算符的级别相同,后两种运算符的级别相同,前四 种运算符的级别高于后两种。 示例 2:若 a=3,b=2,c=1 则关系表达式 (a>b)==c 的值为“逻辑真”。 2. 逻辑表达式和逻辑运算符 用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。 C 语言提供三种逻辑运算符:&&(逻辑与)、||(逻辑或)、! (逻辑非),逻辑运算符为 - 41 -
双目运算符。 示例1: a&&b若a、b为真,则逻辑表达式a&&b的值为真。 allb 若a、b之一为真,则逻辑表达式ab的值为真。 为 若a为真,则逻辑表达式la的值为假。 逻辑表达式的值为逻辑值“真”或“假”,通常以数值1代表“真”,以0代表“假”。但 在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。 示例2:若a=3,b=2,c=l 则逻辑表达式(a>b)=c&&0的值为“逻辑假”,逻辑表达式(a>b)=c&&35的值为“逻辑 真”。 3.if语句 if语句的一般格式有两种,即if-else语句和省略clse的if语句。 a)if-else语句的一般格式为: f(表达式) 语句1 else 语句2 执行的流程:先求解表达式,如果表达式的值为真,就执行语句1:否则(即表达式的值 为假)就执行语句2。 b)省略else的if语句的一般格式为: if(表达式) 语句1 执行的流程:先求解表达式,如果表达式的值为真,就执行语句1:否则(即表达式的值 为假)就什么也不做。 示例: int a-3,b-4, ifa>b)】 a=a-b: else -42-
双目运算符。 示例 1: a&&b 若 a、b 为真,则逻辑表达式 a&&b 的值为真。 a||b 若 a、b 之一为真,则逻辑表达式 a||b 的值为真。 !a 若 a 为真,则逻辑表达式!a 的值为假。 逻辑表达式的值为逻辑值“真”或“假”,通常以数值 1 代表“真”,以 0 代表“假”。但 在判断一个量是否为“真”时,以 0 代表“假”,以非 0 代表“真”。 示例 2:若 a=3,b=2,c=1 则逻辑表达式 (a>b)==c&&0 的值为“逻辑假”,逻辑表达式(a>b)==c&&35 的值为“逻辑 真”。 3. if 语句 if 语句的一般格式有两种,即 if-else 语句和省略 else 的 if 语句。 a) if-else 语句的一般格式为: if(表达式) 语句 1 else 语句 2 执行的流程:先求解表达式,如果表达式的值为真,就执行语句 1;否则(即表达式的值 为假)就执行语句 2。 b) 省略 else 的 if 语句的一般格式为: if(表达式) 语句 1 执行的流程:先求解表达式,如果表达式的值为真,就执行语句 1;否则(即表达式的值 为假)就什么也不做。 示例: int a=3,b=4; if(a>b) a=a-b; else - 42 -
a=a+b; printf("a=%d,b=%d",a,b); 该示例判断条件“a>b”是否成立,若成立则执行语句“a=a-b;”,否则执行语句“a=a+b,”。 【实验任务】 一、程序改错 该部分实验主要训练学生读简单程序的能力,并在理解程序的基础上,改正程序中出现 的问题,这些问题都是初学者经常容易犯的错误,针对二分支程序设计这部分内容,主要有 如下问题: 1)不能正确表示f语句用到的关系表达式: 2)不能正确表示if语句用到的逻辑表达式。 针对上面出现的问题,查找下面程序中存在的问题,并改正调试。 1.打开c.lc-programming\3pg3101.cpp,该程序是输入一个数x,当x能被5整除时,输 出“x能被5整除”的信息,否则输出“x不能被5整除”。检查程序哪里有问题,请修改使 之运行能得到正确结果。修改后的程序以pg3101_ok.cpp保存。该源程序内容如下: #include<stdio.h> void main(void) { int x,k; printf"请输入x的值:n")方 scanf("%d",&x), k=x%5; if(k=0) printf("x能被S整除ln")方 else printf("x不能被5整除n"): 了提示:如何发现问题? -43-
a=a+b; printf("a=%d,b=%d",a,b); 该示例判断条件“a>b”是否成立,若成立则执行语句“a=a-b;”,否则执行语句“a=a+b;”。 【实验任务】 一、程序改错 该部分实验主要训练学生读简单程序的能力,并在理解程序的基础上,改正程序中出现 的问题,这些问题都是初学者经常容易犯的错误,针对二分支程序设计这部分内容,主要有 如下问题: 1) 不能正确表示 if 语句用到的关系表达式; 2) 不能正确表示 if 语句用到的逻辑表达式。 针对上面出现的问题,查找下面程序中存在的问题,并改正调试。 1.打开 c:\c-programming\3\pg3101.cpp,该程序是输入一个数 x,当 x 能被 5 整除时,输 出“x 能被 5 整除”的信息,否则输出“x 不能被 5 整除”。检查程序哪里有问题,请修改使 之运行能得到正确结果。修改后的程序以 pg3101_ok.cpp 保存。该源程序内容如下: #include<stdio.h> void main(void) { int x,k; printf("请输入 x 的值:\n"); scanf("%d",&x); k=x%5; if (k=0) printf("x 能被 5 整除\n"); else printf("x 不能被 5 整除\n"); } 提示:如何发现问题? - 43 -
编译、链接该程序后,运行该程序,发现程序可以正常运行,只是运行结果错误。在程 序中,如果输入x的值是25,应该输出“x能被5整除”的信息,但是程序输出结果却是“x 不能被5整除”,因此,不难发现问题的所在就是f语句的条件表达式有错误。 改正程序后的运行结果示例如图3.1.1所示。 e"C:\e-programming\3\Debug\pg3101_ok.exe"X 请输入×的值: 25 x能被5整除 Press any key to continue 图3.1.1pg3101_ok.cpp的运行结果 2.打开c.lc-programming3pg3102.cpp,该程序是求一分段函数的值,分段函数如下: 10 -2<=X<=2 0 其它 运行该程序,检查运行结果是否正确,如不正确请修改,使程序能完全正确运行。修改 后的程序以pg3102ok.cpp保存。该源程序内容如下: #include<stdio.h> void main(void) int x.y; printf("请输入x的值:")方 scanf"%d",&x)方 if-2<=x<=0) y=10 else y=0: printf"y的值为%dn",y)方 } 了提示:如何发现问题? 编译、链接、运行该程序,发现程序可以正常运行,只是运行结果错误。当输入X的值 -44-
编译、链接该程序后,运行该程序,发现程序可以正常运行,只是运行结果错误。在程 序中,如果输入 x 的值是 25,应该输出“x 能被 5 整除”的信息,但是程序输出结果却是“x 不能被 5 整除”,因此,不难发现问题的所在就是 if 语句的条件表达式有错误。 改正程序后的运行结果示例如图 3.1.1 所示。 图 3.1.1 pg3101_ok.cpp 的运行结果 2.打开 c:\c-programming\3\pg3102.cpp,该程序是求一分段函数的值,分段函数如下: 10 -2<=x<=2 0 其它 y= 运行该程序,检查运行结果是否正确,如不正确请修改,使程序能完全正确运行。修改 后的程序以 pg3102_ok.cpp 保存。该源程序内容如下: #include<stdio.h> void main(void) { int x,y; printf("请输入 x 的值:"); scanf("%d",&x); if(-2<=x<=0) y=10; else y=0; printf("y 的值为%d\n",y); } 提示:如何发现问题? 编译、链接、运行该程序,发现程序可以正常运行,只是运行结果错误。当输入 x 的值 - 44 -
为一1时,输出的结果是“y的值为0”,但是按照给出的函数定义,输出的结果应该是10, 而该程序是f语句实现的简单的二分支程序,因此可以发现问题所在。 改正程序后的运行结果示例如图3.1.2所示。: "C\c-programming\3\Debug\pg3102_ok.exe" ▣x 情输入x的值:-1 y的值为10 ress any key to continue 图3.1.2pg3102_ok.cpp的运行结果 二、程序扩展 1.打开c:lc-programming\3pg3201.cpp,该程序是输入一个整数,判断该数是奇数还是偶 数,源程序内容如下: #include<stdio.h> void main(void) { int number; printf"请输入一个整数:")方 scanf("%d"&number): if(number%2=0) printf"该数是偶数。n"); else printf("该数是奇数。n")方 要求:改写程序,判断输入的整数是否能被5整除。修改后源程序以pg3201a.cpp保存。 训练要点:了解基本的二分支程序结构,掌握如何通过基本的f语句实现二分支程序。 在此基础上,对原有的程序按要求进行修改,熟练掌握如何实现二分支程序设计。 修改后程序的运行结果如图3.1.3所示。 "C:\c-programming\3\Debug\pg3201a.exe" 回x 青输入一个整数:24 该数不能被5整除。 ress any key to continue -45-
为-1 时,输出的结果是“y 的值为 0”,但是按照给出的函数定义,输出的结果应该是 10, 而该程序是 if 语句实现的简单的二分支程序,因此可以发现问题所在。 改正程序后的运行结果示例如图 3.1.2 所示。: 图 3.1.2 pg3102_ok.cpp 的运行结果 二、程序扩展 1.打开 c:\c-programming\3\pg3201.cpp,该程序是输入一个整数,判断该数是奇数还是偶 数,源程序内容如下: #include<stdio.h> void main(void) { int number; printf("请输入一个整数:"); scanf("%d",&number); if(number%2==0) printf("该数是偶数。\n"); else printf("该数是奇数。\n"); } 要求:改写程序,判断输入的整数是否能被 5 整除。修改后源程序以 pg3201a.cpp 保存。 训练要点:了解基本的二分支程序结构,掌握如何通过基本的 if 语句实现二分支程序。 在此基础上,对原有的程序按要求进行修改,熟练掌握如何实现二分支程序设计。 修改后程序的运行结果如图 3.1.3 所示。 - 45 -