当前位置:首页 > 实验三-选择结构程序设计
实验三 选择结构程序设计
3.1实验要求与目的
1.掌握关系表达式和逻辑表达式的正确应用 2.条件表达式的正确应用
3. 掌握if语句,if-else语句,if语句的嵌套的编程方法 4. 掌握switch的编程方法及执行特点
5.掌握相关的算法(大小写字母的转换,判断数的奇偶,整数的整除,分段函数的求解,成绩的转换等)
6. 培养解决实际问题的能力
3.2实验指导
结构化程序设计的三大结构:顺序结构、选择结构和循环结构。 计算机在执行过程时,根据条件选择所要执行的语句,称为选择结构,也称为分支结构。在解决实际问题时,可能会因为其种条件的约束产生分支,可能是单分支结构、双分支结构和多分支结构等。因此可选择相应的语句进行程序设计。
C语言程序设计实现单分支结构常采用,if语句; 实现双分支结构常采用:if-else语句; 实现多分支结构常采用:if-else嵌套语句或switch语句。
选择结构的程序设计除了选择适当的语句外,另一关键问题是条件的正确表示。条件可以用表达式来描述,如关系表达式、逻辑表达式等。 【3.1】录入下列程序,输入给定的测试数据,观察其程序执行结果。程序文件名为:ex3_1.c。 输入测试数据:23 56
程序运行结果:max=56 #include
int a,b,max;
scanf(\ /*从键盘输入两整数*/ max=a;
if(max
printf(\ /*输出最大数*/ }
该程序的执行过程,从键盘输入两个整数赋予a,b,把a的值先赋予变量max,采用if语句判别max和b的大小,若max小于b,则把b的值赋予max,然后执行printf语句输出max的值;若max大于b,不执行if后的语句,而执行printf语句输出max的值;max中的值总是大数。
因此该程序的功能是输入两个整数,输出其中的大数。 单分支结构if语句的一般形式:
if(表达式) 语句;
其语义,如果表达式的值为非零值(为真),则执行其后的语句,否则不执行该语句。
小结:
1. 表达式也称为条件表达式,可以包括常量、变量和表达式的任意表达式。常用的是
单一变量,关系表达式和逻辑表达式。
2. 若语句由两条以上的语句组成时,必须用花括号{}括起来,组合成一条复合语句。
【3.2】编程实现,从键盘输入一个字符型数据,若输入小写字符,则将其转换成大写字符,输出相应的整数;若输入其它字符,则显示出错信息。程序文件名为:ex3_2.c。
分析:根据题意,本程序要解决三个问题,1)输入字符数据;2)判断输入的字符是否是小写字符;3)输出(输出大写字符相应的整数或输出错误信息)。 因此根据判断条件输出两种结果的其中一个。
#include
char c;
scanf(\ if('a'<=c&&c<='z') {
c=c-32;
printf(\ } else
printf(\}
第一次运行程序,
输入测试数据:a 程序运行结果:65 第二次运行程序,
输入测试数据:A
程序运行结果:data error 双分支结构if语句的一般形式:
if(表达式) 语句1; else
语句2;
其语义,如果表达式的值为非零值(为真),则执行if后的语句1,否则执行else后的语句2。
同理,使用该语句时,表达式(条件表达式)是可以包括常量、变量和表达式的任意表达式。若语句1或语句2是由两条以上的语句组成,则必须用必须用花括号{}括起来,组合成一条复合语句。 小结:
1. 任意字符在内存中都以ASCII码存储,一个字符数据既可以以字符形式输出(输出
格式控制符%c),也可以以整数形式输出(输出格式控制符%d)。
2. 字符数据可以进行算术运算,即相当于对其字符数据的ASCII码进行运算。根据这
一特点,可实现大小写字符的相互转换。
小写字母转换为大写字母: c=c-32 或者 c=c-' a'+'A' 大写字母转换为小写字母: c=c+32 或者 c=c+' a'-'A'
3. 字符数据可以进行比较运算,因此判断一个字符属于哪个范围可采用下列方式实
现。
属于小写字母的表达式:'a'<=c&&c<='z' 或者 97<=c&&c<=122 属于大写字母的表达式:'A'<=c&&c<='Z' 或者 65<=c&&c<=90 属于数值字符的表达式:'0'<=c&&c<='9' 或者48<=c&&c<=57
【3.3】从键盘输入两个整数m,n(假设输入的数m>0,n>0),判断m能否被n整除,若能
输出m和n,否则输出m与n的余数。程序文件名:ex3_3.c。
分析:分析问题,理出算法,是程序设计的核心,如何实现m能否被n整除是解决该问题的关键。
m能被n整除的表达式:m%n==0。
实现程序编写的要点是学会对题意的“翻译”。即,从键盘输入数一定采用scanf格式输入函数。判断m能否被n整除,其判断结果只有两个,能整除输出原数,否则输出两数的余数,因此可采用选择结构的if-else语句。
#include
int m,n;
printf(\ m & n:\ scanf(\
if(m%n==0) /*判断m能否被n整除*/ printf(\ else
printf(\}
第一次运行程序,
输入测试数据:21 7 程序运行结果:m=21,n=7 第二次运行程序,
输入测试数据:23 6 程序运行结果:5 小结:
1.由此题可扩展为,判断一个数是偶数还是奇数。若m是偶数则只需考虑m能否被2整除,若能整除,则m是偶数,不能整除则m是奇数。 2.注意一个等号“=”与双等号“==”的区别。
一个等号称为赋值号,若a=5,其含义是将5赋给a。双等号为算术运算符“等号”,若a==5,其含义是变量a的值与整数5是否相等。
3.求余运算符“%”,求余运算只能求任意两整数的余数。
【3.4】输入x的值求分段函数y的值。程序文件名:ex3_4.c。
x?1?x ?y??2x?1 1?x?10
?3x?11 x?10?分析:本程序是求分段函数的值,根据x的取值不同,出现了三个分支的情形。因此采用多
分支的控制结构,嵌套的if语句实现。编程思路,当有多分支结构时,可先转换为二分支
结构,如选择表达式条件为(x<1),条件为真计算y=x,条件为假继续采用if-else语句判断,在else分支中继续采用if-else二分支结构。
#include
float x,y;
scanf(\ if(x<1) y=x; else {
if(x<10) /*该if-else语句嵌套在上一个if-else的else中*/ y=2*x-1; else
y=3*x-11; }
printf(\}
第一次运行程序,
输入测试数据:-3
程序运行结果:x=-3.00,y=-3.00 第二次运行程序,
输入测试数据:7
程序运行结果:x=7.00,y=13.00 第三次运行程序,
输入测试数据:13
程序运行结果:x=13.00,y=28.00
if-else嵌套实现多分支结构,嵌套的形式多种多样,无论如何嵌套else子句与if的匹配原则总是从最内层开始,即else与在它上面离它最近的,且尚未曾配对的if配对,else无二义性。常见的几种嵌套形式。 形式1:
if(表达式1)
if (表达式2)
语句1;
else
语句2;
形式2:
if(表达式1)
if(表达式2)
语句1; else
语句2;
else
语句3; 形式3:
if(表达式1)
共分享92篇相关文档