实验四:选择结构

  • 一、实验目的

1、掌握C语言中条件的表示;

2、掌握if语句的语法格式、功能和执行流程及if语句的嵌套;

3、掌握switch语句的语法格式、功能和执行流程及switch语句的嵌套;

4、掌握选择结构的算法表示——传统的流程图表示和N-S流程图表示。

5、掌握选择结构的程序设计方法。

  • 二、实验设备及器材

        计算机

  • 三、实验内容和要求

  1. 选择结构的程序调试;
  2. 利用if语句和if语句的嵌套实现选择结构的程序设计。
  3. 利用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流程图表示以及选择结构的程序设计方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值