实验二 逻辑结构程序设计(模板)

  • 格式:docx
  • 大小:36.07 KB
  • 文档页数:4

实验二逻辑结构程序设计
一、实验目的及要求
1.了解C语言表示逻辑量的方法(以0代表“假”,以非代表“真”)。

2.学会正确使用逻辑运算符和逻辑表达。

3.熟练掌握if语句和switch语句.
4.学习调试程序。

二、实验学时
6学时
三、实验任务
1源程序c30105.c中包含有一些错误,调试下列程序,使之具有如下功能:输入a、b、c三个整数,求最小值。

# include “stdio.h”
void main( )
{ inta,b,c;
scanf("%d%d%d",a,b,c);
if((a>b)&&(a>c))
if(b<c)
printf("min=%d\n",b);
else
printf("min=%d\n",c);
if((a<b)&&(a<c))
printf("min=%d\n",a);
}
再次运行程序,输入为“2,1,3”,程序输出却是“min=2”。

用单步执行的方法,马上发现变量a、b、c的值是不对的,原因是程序要求输入数据的分隔符是空格(还允许使用回车或<Tab>键)。

改正输入数据的分隔方式后,程序没有输出,还是用单步执行的方法,监视程序的执行过程,发现程序中条件设计有误,经过改正的程序如下:
# include “stdio.h”
void main()
{ inta,b,c;
scanf("%d%d%d",&a,&b,&c);
if((a<b)&&(a<c))
printf("min=%d\n",a)
else if((b<a)&&(b<c))
printf("min=%d\n",b);
else if((c<a)&&(c<b))
printf("min=%d\n",c);
else
printf("No find minimum\n");
}
上述程序是按在三个数中仅有一个最小值时才称其为最小值进行设计的。

另外,注意程序的书写格式,一定要采用缩进格式,即不同层次(分支)的语句左起的空格不同,这样可以有效地提高程序的可读性。

相关知识:①类似a<b<c 表达式的表示方法;②if 语句的嵌套;③调试工具的使用。

④求最值的简单算法。

2.参考上一题,编写一个C 程序,求a 、b 、c 、d 四个数中的最大者。

编程点拨:
①多定义一个变量,并一开始令变量max=a;
②if(max<b) max=b;其余多个数据中求最值依此类推。

3.输入4个整数,要求按由小到大顺序输出。

得到正确结果后,修改程序使之按由大到小顺序输出。

相关知识:①输入函数scanf()的使用;②简单的排序算法;③通过中间变量t 交换a 和b 值的方法:t=a; a=b; b=t;。

4.根据以下c30108.c 函数关系,对输入的每个x 值,计算出相应的y 值。

#include
#include
void main()
{ floatx,y;
scanf("%f",&x);
if ()
y=;
else if ()
y=;
else
printf("x=%f,y=%f",x,y);
}
相关知识点:if 语句的嵌套;数学函数的调用方式。

5模仿第4题,写程序实现以下函数:
⎪⎩
⎪⎨⎧≥-≤≤-<=)5(113)101(12)1(x x x x x x y 用scanf 函数输入x 的值,求y 值。

运行程序,输入x 的值(分别为x<1、1≤x<10
、4310≤≤≤≤x x 当x 取其他值时
x≥10三种情况),检查输出的y值是否正确。

相关知识:①用if的嵌套实现分段函数;②比较运算符的正确使用;③算术运算符*的正确使用。

6.阅读分析以下c30110.c程序的功能。

#include <stdio.h>
void main( )
{ int choice;
int value;
printf("Convert:\n"); /* 显示菜单*/
printf(" 1:decimal to hexadecimal\n ");
printf(" 2:hexadecimal to decimal\n ");
printf(" 3:decimal to octal\n ");
printf(" 4:octal to decimal\n");
printf("enter your choice: ");
scanf("%d",&choice);
switch (choice)
{ c ase 1: /* 选中1时处理*/
printf("enter decimal value:");
scanf("%d",&value);
printf("%d in hexadecimal is:%x\n",value,value);
break;
case 2: /* 选中2时处理*/
printf("enter hexadecimal value:");
scanf("%x",&value);
printf("%x in decimal is:%d\n",value,value);
break;
case 3: /* 选中3时处理*/
printf("enter decimal value:");
scanf("%d",&value);
printf("%d in octal is:%o\n",value,value);
break;
case 4: /* 选中4时处理*/
printf("enter octal value:");
scanf("%o",&value);
printf("%o in decimal is:%d\n",value,value);
break;
}
}
相关知识:①用switch语句实现菜单的方法;②数制转换的方法。

7.模仿第6题,,要求对输入的数字1~7转换成文字星期几,对其它数字不转换。

例如,输入5时,程序应该输出Friday。

①编辑、调试和运行该程序,然后输入4。

其输出结果是什么?为什么是这样的结果?
②该程序有哪些错误?如何修改?
相关知识:①switch语句的正确使用;②break在switch语句中的作用。

四、实验重点、难点
1.表达式
2.选择型程序设计语句
3.逻辑表达式
五、操作要点
按Alt+C可进入Compile菜单, Build all:重新编译项目里的所有文件, 并进行装配生成.EXE文件。

该命令不作过时检查。

六、注意事项
1.误把“=”作为关系运算符“等于”
2.没有注意大写字母和小写字母代表不同的标识符
3.当一个复合语句中使用多层括号时,常出现大括号不配对的现象。