1、实验 3 分支结构程序设计班级: 学号:姓名: 日期:一、实验目的(1)了解 C 语言表示逻辑量的方法(以 0 代表“假” ,以 1 代表“真” ) 。(2)学会正确使用逻辑运算符和逻辑表达式。(3)熟练掌握 if 语句和 switch 语句。(4)结合程序掌握一些简单的算法。(5)学习调试程序。二、实验内容1运行以下程序,说明表达式值 1 和表达式值 2 的不同。#include void main()int a=3,b=2,c=1,d=0;printf(“exp1=%dn“,d=ab+c);printf(“exp2=%dn“,d=ab+c);2以下程序的功能是:从键盘输入一个字符型数据,若
2、输入一个数字字符(0-9) ,则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。#include void main( )char c;scanf(“%c“,if(0void main()int a,b,max;scanf(“%d%d“,max=a;if(bmax) max=b;printf(“max=%dn“,max);4if 语句的第二种形式为 if-else 形式if(表达式) 语句 1;else 语句 2;其语义是:如果表达式的值非零(为真) ,则执行语句 1,否则执行语句 2 。程序填空题。下列程序用于完成对输入的整数判断它是奇数还是偶数,并给出相应的提示。试完成它缺少
3、的部分,并上机验证。#include void main( )int x;scanf(“%d“,if(x/2 % =0 ) printf(“x=%d is Evenn“,x);else printf(“x=%d is Oddn“,x);编程:输入两个整数,输出其中的大数。提示:改用 if-else 语句判别 a,b 的大小,若 a 大,则输出 a,否则输出 b。#include void main()int a,b;scanf(“%d%d“,if(ab) printf(“max=%dn“,a);elseprintf(“max=%dn“,b);5if 语句的第三种形式为 if-else-if 形
4、式(嵌套的 if)当有多个分支选择时,可采用 if-else-if 语句,其一般形式为:if(表达式 1) 语句 1;else if(表达式 2) 语句 2;else if(表达式 3) 语句 3;else if(表达式 m) 语句 m;else 语句 n;其语义是:依次判断表达式的值,当出现某个值为真时, 则执行其对应的语句。然后跳到整个 if 语句之外继续执行程序。 如果所有的表达式均为假,则执行语句 n 。 然后继续执行后续程序。编程:要求判别键盘输入字符的类别。可以根据输入字符的 ASCII 码来判别类型。由ASCII 码表可知 ASCII 值小于 32 的为控制字符。 在 “0”和“
5、9”之间的为数字,在“A”和“Z”之间为大写字母, 在“a” 和“z”之间为小写字母,其余则为其它字符。 这是一个多分支选择的问题,用 if-else-if 语句编程,判断输入字符 ASCII 码所在的范围,分别给出不同的输出。例如输入为“g” ,输出显示它为小写字符。在嵌套中要特别注意 if 和 else 的配对问题。为了避免二义性,语言规定,else 总是与它前面最近的 if 配对。6分析以下程序的运行结果并上机调试。程序 1:#include void main()int a=3,b=4,c=5,d=0;if(ab) d=a;elseif(cb) d=c;else d=b;printf(
6、“d=%dn“,d);程序 2:#include void main()int a=3,b=4,c=5,d=0;if(ab)if(cb) d=c;else d=b;else d=a;printf(“d=%dn“,d);程序 3:#include void main()int a=3,b=4,c=5,d=0;if(ab)if(cb) d=c;else d=b;printf(“d=%dn“,d);程序 4:#include void main()int a=3,b=4,c=5,d=0;if(ab)if(cb) d=c;else d=b;printf(“d=%dn“,d);编程:比较键盘依次输入的两
7、个数 a 和 b 的大小关系,并根据大小关系分别输出 1(若 ab) 、0(若 a=b) 、-1(若 avoid main()int a,b;scanf(“%d%d“,if(ab)printf(“1n“);else if(a=b)printf(“0n“);elseprintf(“-1n“);7条件运算符和条件表达式由条件运算符组成条件表达式的一般形式为:表达式 1? 表达式 2: 表达式 3其求值规则为:如果表达式 1 的值为真,则以表达式 2 的值作为条件表达式的值,否则以表达式 3 的值作为整个条件表达式的值。用条件表达式对 4 中要求的输出两个数中的大数的程序重新编程。8switch 语
8、句语言还提供了另一种用于多分支选择的 switch 语句, 其一般形式为:switch(表达式)case 常量表达式 1: 语句 1;case 常量表达式 2: 语句 2;case 常量表达式 n: 语句 n;default : 语句 n+1;在 switch 语句中, “case 常量表达式 ”只相当于一个语句标号, 表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个 switch 语句。 这是与前面介绍的 if 语句完全不同的,应特别注意。程序分析题。分析以下程序,对分析的结果上机检验。#include void main( )int x=1,y=0,a=0,
9、b=0;switch(x)case 1:switch(y)case 0: a+;break;case 1: b+;break; /abccase 2:a+;b+;break;printf(“a=%d, b=%dn“,a,b);在程序中的/abc 前面,后面添加一个 break; 再次运行该程序,程序结果有何变化?在实验报告中对结果作出解释。9本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。(1)有一个函数: )10(32xxy用 scanf 函数输入 x 的值,求 y 的值。运行程序,输入 x 的值(分别为 xvoid main()int x,y;printf(“plea
10、se input x:“);scanf(“%d“,if(x=1 char grade;printf(“please input score:“);scanf(“%f“,while(score100|scorevoid main()int m,k;long n;printf(“Please input a integer:“);scanf(“%ld“,k=0;while(n0)m=n % 10;n=n/10;k+;printf(“%d“,m);printf(“ndata number is %dn“,k);(4)输入 4 个整数,要求按由小到大顺序输出。在得到正确结束后,修改程序使之按同大到小顺序输出。#include void main()int a,b,c,d,t;printf(“please input a,b,c,d:“);scanf(“%d%d%d%d“,if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t=a;a=d;d=t;if(bc)t=b;b=c;c=t;if(bd)t=b;b=d;d=t;if(cd)t=c;c=d;d=t;printf(“%d,%d,%d,%dn“,a,b,c,d);三、预习内容预习教材第 4 章。