实验四 01140019蒋云伟.docx
《实验四 01140019蒋云伟.docx》由会员分享,可在线阅读,更多相关《实验四 01140019蒋云伟.docx(12页珍藏版)》请在冰豆网上搜索。
![实验四 01140019蒋云伟.docx](https://file1.bdocx.com/fileroot1/2022-11/23/a2deb2f5-22cd-4bac-97d8-23ccb4b88a82/a2deb2f5-22cd-4bac-97d8-23ccb4b88a821.gif)
实验四01140019蒋云伟
《C++》实验报告
实验名称
实验四选择结构程序设计
学号
201101140019
姓名
蒋云伟
实验日期
4.23
实验目的:
1.掌握C语言的关系表达式和逻辑表达式的运算规则与书写方法。
2.掌握各种类型的if语句和switch语句的使用方法。
3.熟悉选择结构程序设计的方法。
实验内容:
1.上机调试(需作出必要的注释!
)
(1)先静态分析一下程序的运行结果,然后上机验证。
#include
voidmain()
{
inta=3,b=4,c=5,x,yz;
x=c,b,a;
y=!
a+b=c);
z=c/b+((float)a/b&&(float)(a/c);
printf("\nx=%d,y=%d,z=%d",x,y,z);
x=a||b--;
y=a-3&&c--;
z=a-3&&b;
printf("\n%d,%d,%d,%d,%d,%d",a,b,c,x,y,z);
}
(2)输入三个整数x,y,z,请把这三个数由小到大输出。
(我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
)
#include
voidmain()
{
intx,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if(x>y)
{t=x;x=y;y=t;}/*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;}/*交换x,z的值,此时则x获最小值*/
if(y>z)
{t=y;y=z;z=t;}/*交换z,y的值*/
printf("smalltobig:
%d%d%d\n",x,y,z);
}
2.编程题
(1)已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(单位:
元):
profit≤1000没有提成
1000<profit≤2000提成10%
2000<profit≤5000提成15%
5000<profit≤10000提成20%
10000<profit提成25%
请打印员工实际薪水。
#include
voidmain()
{
intgrade,profit;
floatsalary=500;
printf("Inputprofit:
");
scanf("%d",&profit);
grade=(profit-1)/1000;
switch(grade)
{case0:
break;
case1:
salary+=profit*0.1;break;
case2:
case3:
case4:
salary+=profit*0.15;break;
case5:
case6:
case7:
case8:
case9:
salary+=profit*0.2;break;
default:
salary+=profit*0.25;
}
printf("salary=%.0f\n",salary);
}
请按一下步骤实习思考:
(调试并注释)
分析程序中的switch结构。
重点学习case标号的设计,本例将利润与提成的关系转换成整数的方法是,由于提成的变化点都是1000的整数被(1000、2000、5000、……),同时为了解决相邻两个区间重叠问题,因此采用将利润porfit先减1(最小增量),然后再整除1000.
输入并运行程序,用不同的利润去检验运行结果,如果结果不正确,请找出原因,改正后重新运行,直到结果正确为止。
若没有break;结果如何?
没有break,那么会出错,至到deafult出现错误为止。
。
。
3.思考题
已知银行整存整取存款不同期限的月息利率分别为:
0.63%期限1年
0.66%期限2年
月息利率=0.69%期限3年
0.75%期限5年
0.84%期限8年
要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
答;程序为;
#include
voidmain()
{
intb,q;
floath;
printf("请依次输入存款的本金和期限:
\n");
scanf("%d",&b);
scanf("%d",&q);
switch(q)
{
case1:
h=(1+0.63)*b;
printf("本息和为:
%f\n",h);break;
case2:
h=(1+0.66)*b;
printf("本息和为:
%f\n",h);break;
case3:
h=(1+0.69)*b;
printf("本息和为:
%f\n",h);break;
case5:
h=(1+0.75)*b;
printf("本息和为:
%f\n",h);break;
case8:
h=(1+0.84)*b;
printf("本息和为:
%f\n",h);break;
default:
printf("输入有误!
");
}
}
程序清单及运行结果:
1
(1)源程序:
#include
voidmain()
{
……
}
其运行结果:
(可以是截图,有交互的每个动作都要有一幅图片,就是只要屏幕有变化就要截新图片,按下printScreen键截全屏幕,alt+printScreen截活动窗口)
(或者也可以是语言描述,这个省事,推荐)
屏幕提示:
“Pleaseinputa,b:
”
我输入:
“23,44”,回车
屏幕显示:
“23+44=67”
窗口关闭。
1
(2)源程序:
#include
voidmain()
{
……
}
其功能:
实现求三个数的平均值。
2
(1)答案:
A
源程序:
#include
voidmain()
{
……
}
……