c语言实验报告实验4.doc由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言实验报告完整”。
实验4 逻辑结构程序设计
1、实验目的、要求
(1)C语言表示逻辑量的方法。
(2)学会正确使用逻辑运算符和逻辑表达式。
(3)熟悉掌握if语句和switch语句。
(4)掌握简单的算法及程序调试。
2、实验内容:
(1)输入程序并运行,观察运行结果并分析。
#include
int main()
{int a=1,b=3,c=5,d=4,x;
if(a
If(c
Else „„„„„„„„„„„„„„„„„„„„„„„„2
If(a
If(b
Else x=3;„„„„„„„„„„„„„„„„„„„„„„„„4
Else x=6;„„„„„„„„„„„„„„„„„„„„„„„„2
Else x=7;„„„„„„„„„„„„„„„„„„„„„„„„1
printf(“x=%dn”,x);
Return(0);}
实验前分析:因已知:A,B,C,D分别为1,3,5,4,故可知只有A
实验分析:对该程序进行结构分析:如图,在程序中所有的IF和ELSE中,有一一对应的关系,即一个IF对应一个ELSE,按照标号有上述对应关系,实现了多个IF嵌套。A
(2)、编写程序:
Y=X(X=10).要求用SCANF输入X的值,输出Y的值。
程序编写如下:
#include
Int main()
{int x,y;
Scanf(“%d”,x);
If(x
If(x>=1&&x,10)y=2*x-1;
If(x>=10)y=3*x-11;
Printf(“%d”,y);
Return(0);}
进行检验,发现程序有错误,无法运行。
将程序改为:
#include
Int main()
{int x,y;
Scanf(“%d”,x);
If(x
Else if(x>=1&&x
Else if(x>=10)y=3*x-11;
Printf(“%d”,y);
Return(0);}
实验分析:
1、在if语句中,要注意IF和ELSE的配合使用,不能单独使用IF。
2、此程序中还应注意if语句的嵌套和各层之间的逻辑关系。
3、再输入该程序时,涉及到乘法运算的表示,应注意计算机语言与书面语言的区别,在C语言中,*表示乘法运算。
在程序中加入clrscr()运算符,清空遗留数据:
#include
Int main()
{int x,y;
Scanf(“%d”,x);
Clrscr();
If(x
Else if(x>=1&&x
Else if(x>=10)y=3*x-11;
Printf(“%d”,y);
Return(0);}
运行该程序,得到预期结果,但输入数据被清除;将clrscr()移动到scanf之前。再次运行,得到了预期的输入和输出数据,故可知,clrscr()函数的作用是清楚该语句之前的所有的输出的数据和输入的数据。以后用此语句时要注意输入位置。
(3)补足程序并运行。
输入两个数,将较小者输出,应用条件运算符。
#include
Int main()
{int a, b,min;
Printf(“n please input two numbersn”);
Scanf(“%d%d”,&a,&b);
Min=min(a,b);
Printf(“min=%d”,min);
Return(0;)}
运行该程序,显示程序错误,无法输出结果。
将程序改为:
#include
Int main()
{int a, b,min;
Printf(“n please input two numbersn”);
Scanf(“%d%d”,&a,&b);
Min=(a>b?b:a);
Printf(“min=%d”,min);
再次运行程序,屏幕上显示“please input two numbers”,输入两个数字6和9,输出数字为6,再换多组数字,结果与与其相同,可知实验成功。
实验分析:输入比较两数大小的函数时,不能想当然,如认为“min=min(a,b)”就是输出较小数的函数,而应使用三目运算符(A?B:C)来表示。
(5)给出一个百分制成绩,要求输出成绩等级A,B,C,D,E:90分以上为A,80——89分为
B,70——79分为C,60——69分为D,60分以下为E。
1、分别用IF和SWITCH语句来实现。
2、输入成绩为大于100分或小于0分时,显示出错成绩,程序结束。
用IF函数表示:
#include
Int main()
{int a;
Printf(“n please input your scoren ”);
Scanf(“%d”,&a);
If(a>=90&&a
Else if(a>=80&&a
Else if(a>=70&&a
Else if(a>=60&&a
Else if(a>=0&&a
Else printf(“data error”);
Return(0);}
检查无错误,运行程序,无论输入数值为多少,输出结果均为“data error”。
将程序改为:
#include
Int main()
{int a;
Printf(“n please input your scoren ”);
Scanf(“%d”,&a);
{If(a>=90&&a
Else if(a>=80&&a
Else if(a>=70&&a
Else if(a>=60&&a
Else if(a>=0&&a
Else printf(“data error”);}
Return(0);}
即在if函数外套一组大括号,使之成为一个语句。再次输入数据,得到正确结果。实验分析:
1、注意if和else的配套使用,不能遗漏。
2、逻辑运算符&&表示“并且”,除此之外,“!”表示“非”,“||”表示“或”,以后使用注
意区分。
3、使用switch语句:
#include
{int a,b;
Printf(“n please input your scoren”);
Scanf(“%d”,&a);
If(a=0)
{b=a/10;
Switch(b)
{case 10 printf(“A”);break;
Case 9 printf(“A”);break;
Case 8 printf(“B”);break;
Case 7 printf(“C”);break;
Case 6 printf(“E”);break;
Case 5 printf(“E”);break;
Case 4 printf(“E”);break;
Case 3 printf(“E”);break;
Case 2 printf(“E”);break;
Case 1 printf(“E”);break;
Case 0 printf(“E”);break;
Default printf(“data error”);}}
Else printf(“data error);
Return(0);}
运行程序,显示程序有误,经检验,错误为case语句后没有加冒号,加上后,限制结果与预期相同。
实验改进:该程序中,反复输入case语句,效率低下,可将条件相同的情况进行合并,进行简化,变成如下形式:
#include
Int main()
{int a,b;
Printf(“n please input your scoren”);
Scanf(“%d”,&a);
If(a=0)
{b=a/10;
Switch(b)
{case 10:Case 9 :printf(“A”);break;
Case 8 :printf(“B”);break;
Case 7 :printf(“C”);break;
Case 6 :Case 5 :Case 4 :Case 3 :Case 2 :Case 1 :Case 0:printf(“E”);break;Default printf(“data error”);}}
Else printf(“data error);
Return(0);}
运行后,得到相同的结果,故简化成功。
实验分析:此实验中,应注意break语句的使用,不能遗漏;case语句应用大括号括住,表示整体的使用;条件允许可以对程序进行适当的简化,提高运算效率;区分IF和SWITCH函数的共性与区别,提高对两者的认识。
实验心得:
1、注意IF语句的使用规则,要与ELSE搭配使用,掌握了多层IF函数的使用方法。
2、掌握了关系运算符与逻辑运算符“与”“或”“非”的使用法方法,“&&”“||”“!”。
3、注意区分数学表达语句与计算机语句的区别,了解计算机语句的特点。
4、必要时可以利用辅助设计语句对程序进行改进,或对程序进行简化,便于加深理解,方
便操作。
5、掌握了IF语句与SWITCH语句用法的特点,及其中的易错点(ELSE的使用和BREAK的使用)。