您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 湖北理工学院14本科C语言实验报告实验二--逻辑结构程序设计
实验二逻辑结构程序设计实验课程名:C语言程序设计专业班级:14电气工程2班学号:201440210237姓名:熊帆实验时间:4.7-4.21实验地点:K4-208指导教师:祁文青一、实验目的和要求1.了解C语言表示逻辑量的方法(以0代表“假”,以非代表“真”)。2.学会正确使用逻辑运算符和逻辑表达。3.熟练掌握if语句和switch语句.4.学习调试程序。二、实验内容1源程序中包含有一些错误,调试下列程序,使之具有如下功能:输入a、b、c三个整数,求最小值。#include“stdio.h”voidmain(){inta,b,c;scanf(%d%d%d,a,b,c);if((ab)&&(ac))if(bc)printf(min=%d\n,b);elseprintf(min=%d\n,c);if((ab)&&(ac))printf(min=%d\n,a);}解答:(1)源代码:#includestdio.hvoidmain(){inta,b,c;scanf(%d%d%d,&a,&b,&c);if((ab)&&(ac))printf(min=%d\n,a);elseif((ba)&&(bc))printf(min=%d\n,b);elseif((cb)&&(ca))printf(min=%d\n,c);}(2)运行结果:(3)运行结果分析:答:原程序中scanf语句中没有加地址符&,有些分号为全角,应该换成半角,并且原程序中的if语句不够全面,导致输入213时无输出结果,经修改,任意输入三个不同的整数,均可输出与实际相符的正确结果。2.参考上一题,编写一个C程序,求a、b、c、d四个数中的最大者。编程点拨:①多定义一个变量,并一开始令变量max=a;②if(maxb)max=b;其余多个数据中求最值依此类推。解答:(1)源代码:#includestdio.hintmain(){inta,b,c,d,max;printf(请输入4个数:\n);scanf(%d%d%d%d,&a,&b,&c,&d);max=a;if(bmax){max=b;}if(cmax){max=c;}if(dmax){max=d;}printf(最大的数是%d\n,max);return0;}(2)运行结果:(3)运行结果分析:首先max=a,即51,然后执行第一条if语句,b=21,bmax为假,执行下一条if语句,c=3,cmax为假,执行下一条if语句,d=98,dmax为真,执行花括号里面的语句,max=d,即a与d互换,max变为d,即98,输出最大的数是98.3.输入4个整数,要求按由小到大顺序输出。得到正确结果后,修改程序使之按由大到小顺序输出。相关知识:①输入函数scanf()的使用;②简单的排序算法;③通过中间变量t交换a和b值的方法:t=a;a=b;b=t;。解答:(1)源代码:#includestdio.hintmain(){floata,b,c,d,t;printf(请输入四个正整数:\n);scanf(%f%f%f%f,&a,&b,&c,&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(%5.2f,%5.2f,%5.2f,%5.2f\n,a,b,c,d);return0;}(2)运行结果:(3)运行结果分析:首先a=25,b=11,c=6,d=64,ab为真,从而a、b互换,现在a=11,b=25,c=6,d=64,ac为真,从而a、c互换,现在a=6,b=25,c=11,d=64,然后ad为假,不执行接在它下面花括号里面的内容,再,bc为真,从而b、c互换,现在a=6,b=11,c=25,d=64,接下来bd和cd均为假,最终执行输入语句,输出结果如上图所示。4.根据以下函数关系,对输入的每个x值,计算出相应的y值。)sin(2||12xxeyx4310xx当X取其他值时解答:(1)源代码:#includestdio.h#includemath.hintmain(){doublex,y;printf(请输入一个x值\n);scanf(%lf,&x);if(x=0&&x=1)y=exp(sqrt(x))-1;elseif(x=3&&x=4)y=fabs(x)+2;elsey=sin(x*x);printf(y=%f\n,y);return0;}(2)运行结果:(3)运行结果分析:试验了3个值,x分别等于0,3,5经验证均与实际情况相符合。5模仿第4题,写程序实现以下函数:)5(113)101(12)1(xxxxxxy用scanf函数输入x的值,求y值。运行程序,输入x的值(分别为x1、1≤x10、x≥10三种情况),检查输出的y值是否正确。解答:(1)源代码:#includestdio.h#includemath.hintmain(){doublex,y;printf(请输入自变量x的值\n);scanf(%lf,&x);if(x1)y=x;elseif(x=1&&x=10)y=2*x-1;elsey=3*x-11;printf(y的值为%f\n,y);return0;}(2)运行结果:(3)运行结果分析:试验了3个值,分别为0,8,100,输出结果均与实际运算相符合6.阅读分析以下程序的功能。#includestdio.hvoidmain(){intchoice;intvalue;printf(Convert:\n);/*显示菜单*/printf(1:decimaltohexadecimal\n);printf(2:hexadecimaltodecimal\n);printf(3:decimaltooctal\n);printf(4:octaltodecimal\n);printf(enteryourchoice:);scanf(%d,&choice);switch(choice){case1:/*选中1时处理*/printf(enterdecimalvalue:);scanf(%d,&value);printf(%dinhexadecimalis:%x\n,value,value);break;case2:/*选中2时处理*/printf(enterhexadecimalvalue:);scanf(%x,&value);printf(%xindecimalis:%d\n,value,value);break;case3:/*选中3时处理*/printf(enterdecimalvalue:);scanf(%d,&value);printf(%dinoctalis:%o\n,value,value);break;case4:/*选中4时处理*/printf(enteroctalvalue:);scanf(%o,&value);printf(%oindecimalis:%d\n,value,value);break;}}解答:(1)运行结果:(2)运行结果分析:该程序为一个实现进制转换功能的程序,choice1对应十进制转十六进制,choice2对应十六进制转十进制,choice3对应十进制转八进制,choice4对应八进制转十进制。实验的时候选了choice2,即实现将一个十六进制的数转换为十进制,如上图所示,验证情况如下图。7.模仿第6题,要求对输入的数字1~7转换成文字星期几,对其它数字不转换。例如,输入5时,程序应该输出Friday。解答:(1)源代码:#includestdio.hintmain(){intday;printf(转换\n);/*显示菜单*/printf(请输入一个数字:\n);scanf(%d,&day);if(day0||day7)printf(请再次输入\n);switch(day){case1:/*选中1时处理*/printf(Monday\n);break;case2:/*选中2时处理*/printf(Tuesday\n);break;case3:/*选中3时处理*/printf(Wednesday\n);break;case4:/*选中4时处理*/printf(Thursday\n);break;case5:/*选中4时处理*/printf(Friday\n);break;case6:/*选中4时处理*/printf(Saturday\n);break;case7:/*选中4时处理*/printf(Sunday\n);break;}return0;}(2)运行结果:(3)运行结果分析:输入一个1到7阿拉伯数字,将它转换为星期几。实验的时候,输入一个数字7,输出结果为Sunday。当输入一个小于0或大于7的数字时,例如12,输出结果为“请再次输入”。三、结论本次试验主要涉及用if语句处理选择结构以及用switch语句实现多分支选择结构,深刻体现了选择结构程序设计的思想以及方法的多样性与灵活性。还涉及到了用C语言来表现数学中的分段函数问题。说明:1.电子实验报告填写好后,以学生的学号+实验项目名作为该word文件名保存,例如某学生学号为20080001,姓名为某某,本次实验名称是:实验一顺序结构程序设计,则本次实验报告的保存文件名为:01某某实验一.doc。2.在规定的时间内,学生将本报告提交给实验指导教师。
本文标题:湖北理工学院14本科C语言实验报告实验二--逻辑结构程序设计
链接地址:https://www.777doc.com/doc-5061299 .html