-
一、实验目的
1、掌握C语言中条件的表示;
2、掌握if语句的语法格式、功能和执行流程及if语句的嵌套;
3、掌握switch语句的语法格式、功能和执行流程及switch语句的嵌套;
4、掌握选择结构的算法表示——传统的流程图表示和N-S流程图表示。
5、掌握选择结构的程序设计方法。
-
二、实验设备及器材
计算机
-
三、实验内容和要求
- 选择结构的程序调试;
- 利用if语句和if语句的嵌套实现选择结构的程序设计。
- 利用switch语句和switch语句的嵌套实现多分支选择结构的程序设计。
-
四、实验步骤
一、程序调试练习
1、写出下列程序的运行结果:
(1)ex4_1.c
#include <stdio.h>
void main()
{
char ch;
printf("input a character:");
ch=getchar();
if(ch>='A' && ch<='Z')
ch=ch+32;
printf("%c\n",ch);
}
具体要求:
①从键盘上输入a,分析程序运行的结果。
②从键盘上输入A,分析程序运行的结果。
③从键盘上输入5,分析程序运行的结果。
答:第一个结果为a的原因是在ASCII码中,a对应的码值大于A但不小于Z,所以直接输出a;第二个结果为a是因为输入的A对应的码值为65,符合if语句里的条件,所以65+32=97,而97对于ASCII码为a,所以输出a;第三个不符合if语句条件,所以输出5。
(2)ex4_2.c
#include <stdio.h>
void main()
{
int x,y,z;
printf("input x,y,z");
scanf("%d,%d,%d",&x,&y,&z);
if(x<y)
if(y<0)
z=0;
else
z++;
printf("z=%d\n",z);
}
具体要求:
①从键盘上给x、y、z分别输入2,-1,2,分析程序运行的结果。
②从键盘上给x、y、z分别输入3,5,2,分析程序运行的结果。
③从键盘上给x、y、z分别输入-5,-3,2,分析程序运行的结果。
答:①x=2>y=-1,不符合if语句,所以直接输出z=2;②x<y,但y>0,所以执行else语句;③x<y且y<0,所以执行if语句。
(3)ex4_3.c
#include <stdio.h>
main()
{
int x=1,a=0,b=0;
switch(x)
{
case 0:b++;
case 1:a++;
case 2:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
答:由于x=1,从case 1开始执行。
(4)ex4_4.c
#include <stdio.h>
void main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1: switch(y)
{
case 0: a++; break;
case 1: b++; break;
}
case 2: a++;
b++; break;
case 3: a++; b++;
}
printf("a=%d,b=%d\n",a,b);
}
具体要求:
①分析程序运行结果。
②在“case 3: a++; b++;”语句的下一行再加入如下一条语句,则运行结果有什么变化?
default: a++; b++;
答:switch后面为x,执行case 2,但b++后有break,b跳出switch语句输出b=1;而a继续执行下面case语句。
答:default语句处理非法运算符,不影响结果。
(5)ex4_5.c
#include <stdio.h>
void main()
{
int a,b,n=0;
printf("input a,b:");
scanf("%d,%d",&a,&b);
switch(a%3)
{
case 0: n++; break;
case 1: n++;
switch(b%2)
{
default: n++;
case 0: n++; break;
}
}
printf("n=%d\n",n);
}
具体要求:
①从键盘上给a、b分别输入15、9,分析程序运行的结果。
②从键盘上给a、b分别输入16、9,分析程序运行的结果。
③从键盘上给a、b分别输入16、4,分析程序运行的结果。
答:①15除于3求余得0,执行case 0语句且跳出switch语句。
②16除于3求余得1,执行case 1语句但其后没有break,继续依次执行下列语句,9除于2求余得1,执行default语句又因其后没有break,继续执行下列语句,得n=3。
③同理②,4除于2求余得0,执行case 0得n=2。
二、编程练习
1、在屏幕上显示一张如下所示的时间表:
*****Time*****
1 morning
2 afternoon
3 night
Please enter your choice:
操作人员根据提示进行选择,程序根据输入的时间序号显示相应的问候信息,选择1时显示“Good morning”,选择2时显示“Good afternoom”,选择3时显示“Good night”,对于其他选择显示“Selection error”,用switch语句编程实现。
源程序以ex4_6.c命名保存。
#include<stdio.h>
void main()
{
int a;
printf("*****Time*****\n");
printf("1 morning\n");
printf("2 afternoon\n");
printf("3 night\n");
printf("Please chose:");
scanf("%d",&a);
switch(a-1)
{
case 0:
printf("Good morning\n");
break;
case 1:
printf("Good afternoon\n");
break;
case 2:
printf("Good night\n");
break;
default:
printf("Selection error\n");
}
return 0;
}
2、判断某人是否属于肥胖体型。根据身高与体重因素,医务工作者经广泛的调查分析给出了以下“体指数”对肥胖程度的划分:
体指数t= w/h2 (体重w,单位为kg; 身高h,单位为m)
当t<18时,为低体重;
当t介于25和18之间时,为正常体重;
当t介于25和27之间时,为超重体重;
当t大于27时,为肥胖。
源程序以ex4_7.c命名保存。
#include<stdio.h>
void main()
{
float w,h,t;
printf("w(单位kg)=");
scanf("%f",&w);
printf("h(单位m)=");
scanf("%f",&h);
t=w/(h*h);
if(t<18.0)
printf("低体重");
if(t>=18.0&&t<25.0)
printf("正常体重");
if(t>=25.0&&t<=27.0)
printf("超重体重");
if(t>25.0)
printf("肥胖");
}
五、实验小结
通过本次实验我掌握了C语言中条件的表示;if语句的语法格式、功能和执行流程及if语句的嵌套; switch语句的语法格式、功能和执行流程及switch语句的嵌套;选择结构的算法表示——传统的流程图表示和N-S流程图表示以及选择结构的程序设计方法。