湖北理工学院14本科c语言实验报告实验二逻辑结构程序设计Word格式文档下载.docx
《湖北理工学院14本科c语言实验报告实验二逻辑结构程序设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《湖北理工学院14本科c语言实验报告实验二逻辑结构程序设计Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
![湖北理工学院14本科c语言实验报告实验二逻辑结构程序设计Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/30/ba036015-00a3-4c6f-a1dc-dc8c6cca5727/ba036015-00a3-4c6f-a1dc-dc8c6cca57271.gif)
,a,b,c);
if((a>
b)&
&
(a>
c))
if(b<
c)
printf("
min=%d\n"
b);
else
c);
if((a<
(a<
a);
}
解答:
(1)源代码:
#include"
stdio.h"
voidmain()
{
inta,b,c;
scanf("
&
a,&
b,&
c);
if((a<
printf("
a);
else
if((b<
a)&
(b<
b);
else
if((c<
(c<
a))
c);
(2)运行结果:
(3)运行结果分析:
答:
原程序中scanf语句中没有加地址符&
,有些分号为全角,应该换成半角,并且原程序中的if语句不够全面,导致输入213时无输出结果,经修改,任意输入三个不同的整数,均可输出与实际相符的正确结果。
2.参考上一题,编写一个C程序,求a、b、c、d四个数中的最大者。
编程点拨:
①多定义一个变量,并一开始令变量max=a;
②if(max<
b)max=b;
其余多个数据中求最值依此类推。
intmain()
{
inta,b,c,d,max;
请输入4个数:
\n"
);
%d%d%d%d"
c,&
d);
max=a;
if(b>
max)
{
max=b;
}
if(c>
{
max=c;
if(d>
max=d;
最大的数是%d\n"
max);
return0;
首先max=a,即51,然后执行第一条if语句,b=21,b>
max为假,执行下一条if语句,c=3,c>
max为假,执行下一条if语句,d=98,d>
max为真,执行花括号里面的语句,max=d,即a与d互换,max变为d,即98,输出最大的数是98.
3.输入4个整数,要求按由小到大顺序输出。
得到正确结果后,修改程序使之按由大到小顺序输出。
相关知识:
①输入函数scanf()的使用;
②简单的排序算法;
③通过中间变量t交换a和b值的方法:
t=a;
a=b;
b=t;
。
#include<
stdio.h>
floata,b,c,d,t;
请输入四个正整数:
%f%f%f%f"
if(a>
b)
t=a;
}
a=c;
c=t;
d)
a=d;
d=t;
t=b;
b=c;
b=d;
t=c;
c=d;
%5.2f,%5.2f,%5.2f,%5.2f\n"
a,b,c,d);
首先a=25,b=11,c=6,d=64,a>
b为真,从而a、b互换,现在a=11,b=25,c=6,d=64,
a>
c为真,从而a、c互换,现在a=6,b=25,c=11,d=64,然后a>
d为假,不执行接在它下面花括号里面的内容,再,b>
c为真,从而b、c互换,现在a=6,b=11,c=25,d=64,接下来b>
d和c>
d均为假,最终执行输入语句,输出结果如上图所示。
4.根据以下函数关系,对输入的每个x值,计算出相应的y值。
当X取其他值时
#include<
math.h>
doublex,y;
请输入一个x值\n"
%lf"
x);
if(x>
=0&
x<
=1)
y=exp(sqrt(x))-1;
else
if(x>
=3&
=4)
y=fabs(x)+2;
y=sin(x*x);
printf("
y=%f\n"
y);
return0;
试验了3个值,x分别等于0,3,5经验证均与实际情况相符合。
5模仿第4题,写程序实现以下函数:
用scanf函数输入x的值,求y值。
运行程序,输入x的值(分别为x<
1、1≤x<
10、x≥10三种情况),检查输出的y值是否正确。
请输入自变量x的值\n"
if(x<
1)
y=x;
=1&
=10)
y=2*x-1;
y=3*x-11;
y的值为%f\n"
试验了3个值,分别为0,8,100,输出结果均与实际运算相符合
6.阅读分析以下程序的功能。
{intchoice;
intvalue;
Convert:
/*显示菜单*/
1:
decimaltohexadecimal\n"
2:
hexadecimaltodecimal\n"
3:
decimaltooctal\n"
4:
octaltodecimal\n"
enteryourchoice:
"
%d"
choice);
switch(choice)
{case1:
/*选中1时处理*/
printf("
enterdecimalvalue:
"
scanf("
value);
%dinhexadecimalis:
%x\n"
value,value);
break;
case2:
/*选中2时处理*/
printf("
enterhexadecimalvalue:
%x"
%xindecimalis:
%d\n"
case3:
/*选中3时处理*/
XX文库-让每个人平等地提升自我printf("
%dinoctalis:
%o\n"
case4:
/*选中4时处理*/
enteroctalvalue:
%o"
%oindecimalis:
}
(1)运行结果:
(2)运行结果分析:
该程序为一个实现进制转换功能的程序,choice1对应十进制转十六进制,choice2对应十六进制转十进制,choice3对应十进制转八进制,choice4对应八进制转十进制。
实验的时候选了choice2,即实现将一个十六进制的数转换为十进制,如上图所示,验证情况如下图。
7.模仿第6题,要求对输入的数字1~7转换成文字星期几,对其它数字不转换。
例如,输入5时,程序应该输出Friday。
intmain()
intday;
转换\n"
请输入一个数字:
day);
if(day<
0||day>
7)
请再次输入\n"
switch(day)
case1:
Monday\n"
case2:
Tuesday\n"
break;
case3:
Wednesday\n"
case4:
Thursday\n"
case5:
Friday\n"
case6:
Saturday\n"
case7:
Sunday\n"
return0;
}
输入一个1到7阿拉伯数字,将它转换为星期几。
实验的时候,输入一个数字7,输出结果为Sunday。
当输入一个小于0或大于7的数字时,例如12,输出结果为“请再次输入”。
三、结论
本次试验主要涉及用if语句处理选择结构以及用switch语句实现多分支选择结构,深刻体现了选择结构程序设计的思想以及方法的多样性与灵活性。
还涉及到了用C语言来表现数学中的分段函数问题。
说明:
1.电子实验报告填写好后,以学生的学号+实验项目名作为该word文件名保存,例如某学生学号为20080001,姓名为某某,本次实验名称是:
实验一顺序结构程序设计,则本次实验报告的保存文件名为:
01某某实验一.doc。
2.在规定的时间内,学生将本报告提交给实验指导教师。