《计算机科学与技术第2次上机实验》由会员分享,可在线阅读,更多相关《计算机科学与技术第2次上机实验(22页珍藏版)》请在金锄头文库上搜索。
1、哈尔滨工程大学程序设计基础实验报告基础实践二姓 名: 麦豆 班 级: 学 号: 实验时间: 2018 年 4 月 19 日成绩哈尔滨工程大学计算机基础课程教学中心实验题目1:输入一个整数,如果输入的数是偶数或者负数,则输出其平方,否则输出其一半的值设计思想: 将数用2取余是否为0判断奇偶,与0判断大小判断正负,调用库函数来实现平方,在if语句中用到逻辑运算符|,同时在将奇数变为一半时用到了强制类型转换.实验代码及注释:#include #include #include /输入一个整数,如果输入的数是偶数或者负数,则输出其平方,否则输出其一半的值int main() double y=2,z
2、;/二次方 int x;/输入的数 printf(请输入一个数:); scanf(%d,&x); if(x%2)=0) | (x0) /利用if语句,将数用2取余是否为0判断奇偶,与0判断大小判断正负 x=(int)pow(int)x , y);/调用库函数来实现平方 printf(%d,x); else z=(double)x/2;/将x值强制转换赋给double型变量z printf(%.1lf,z); return 0;验证与结论:总结与心得体会:真正明白了强制类型转换不改变变量类型,仅仅给变其数值的类型.同时对逻辑运算符有了更深的认识,另外知道了pow函数的两个变量均为double型i
3、nt是不适用的实验题目2:编写程序,计算购贷款,请输入购货金额,输出实际付款金额.购物折扣率如下:购货金额=500元 不打折500元购货金额=1000元 9折1000元购货金额 8折分别用if语句,switch语句编程.设计思想:在用switch语句编写时先用if语句来对switch变量c赋值,再用switch来进行运算在用if语句编写时直接用if来对输入的数进行判断选择相应的运算语句来得到最后的结果.Switch语句实验代码及注释:#include #include /编写程序,计算购贷款,请输入购货金额,输出实际付款金额int main() int c;/switch语句变量 double
4、 money ;/定义变量类型 printf(请输入购货金额:); scanf(%lf,&money); if (money=500)/用if语句对c赋值 c=1; else if(money=1000) c=2; else c=3; switch (c) case 1: break ; case 2: money = money*0.9; break; case 3: money = money*0.8; break; default: printf(输入错误); printf(实际付款金额为:%.2fn,money); return 0;If语句实验代码及注释:#include #incl
5、ude int main() double money ;/定义变量类型 printf(请输入购货金额:); scanf(%lf,&money); if(money0) /用if对值范围进行判断 printf(金额不能为负数!); else if (money=0) printf(实际付款金额为:%.2fn,money); else if(money=1000) money=money*0.9; printf(实际付款金额为:%.2fn,money); else money=money*0.8; printf(实际付款金额为:%.2fn,money); return 0;验证与结论:总结与心得
6、体会:If与switch语句各有优劣,switch语句可以提高运算速度,但相应也有一些缺点,尤其对变量c的值,有时不得不借助if语句,反而繁琐运算速度变慢实验题目3:输入四个整数,求其前两个数中较小的数与后两个数中较大的数之和.设计思想:定义6个变量,其中两个变量为较小数与较大数,将第一个数暂时存储在最小值中,将第三个数暂时存储在最大值中,利用if语句判读若第一个数不为最小值重新赋值,若第三个数不为最大值重新赋值,得到前两个数中最小值和后两个数中最大值.最后对两数求和.实验代码及注释:#include #include int main() int a,b,c,d,minnumber,maxn
7、umber,sum;/定义整型变量 printf(请输入四个数:); scanf(%d%d%d%d,&a,&b,&c,&d); minnumber=a;/将第一个数暂时存储在最小值中 maxnumber=c;/将第三个数暂时存储在最大值中 if(ab) minnumber=b;/第一个数不为最小值重新赋值 if(cd) maxnumber=d;/第三个数不为最大值重新赋值 sum=minnumber+maxnumber; printf(前两个最小数与后两个最大数之和为%d,sum); return 0;验证与结论:总结与心得体会:在比较两数大小时通常会用中间变量来存储过渡,这样会容易交换大小值
8、,当涉及到三个以上数的比较视仍可用这种思想,在比较大小中if语句是必不可少的.实验题目4:某个服装展厅宣布表所示的物品季节性打折.请使用switch和if语句编写一个程序,计算某顾客应付的款项.设计思想:将输入值除以100,再强制转换为int型得到c值,在此之前用if语句将边界值提前去掉,防止对switch语句造成干扰,同时使用if来检测非法值的输入,运用goto语句跳转使其重新输入.实验代码及注释:#include #include int main() double moneya,moneyb,summoney;/机加工制品总额,手工制品总额 int c;/switch变量 quit :;
9、/输入非法值让其重新输入数据用goto跳转到此 printf(请输入机加工制品总金额和手工制品总金额:); scanf(%lf%lf,&moneya,&moneyb); summoney=moneya+moneyb;/计算总金额 c=(int)(summoney/100);/得到switch语句变量c if(summoney0) printf(数据错误!n); goto quit;/输入非法值故让其重新输入数据用goto跳转到quit位置注意goto语句跳转位置 else if(summoney=100)/将边界值用if语句处理,switch语句无法处理 summoney=moneya+mon
10、eyb*0.95; else if(summoney=200) summoney=moneya*0.95+moneyb*0.925; else if(summoney=300) summoney=moneya*0.925+moneyb*0.9; else switch (c)/边界值去掉用switch case 0: summoney=moneya+moneyb*0.95; break; case 1: summoney=moneya*0.95+moneyb*0.925; break; case 2: summoney=moneya*0.925+moneyb*0.9; break; defau
11、lt : summoney=moneya*0.9+moneyb*0.85; printf(顾客应付的款项为:%.2lf(元)n,summoney); return 0;验证与结论:总结与心得体会:switch在边界值处理上比较麻烦,有时容易出错,需要注意,一般要与if搭配使用,但switch语句提高了运行速度,goto语句慎用实验题目5:一个电表按照如下的比率计费:前200度电:每度0.8元;后100度电:每度0.9元;超过300度电:每度1元;所有用户都是按照最少100元进行收费.如果总费用大于400元还要加收总数的15%的费用.请编写一个程序,读取用户名和用电量,并按用户名显示应收费.设计思想: 声明长整型变量name,double型变量electric_quantity,money,用if语句来进行判断电量electric_quantity范围,最后对费用总数与400进