




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1C 语言程序设计案例操作和分析以课后习题为例一 引言(一)研究的缘起1 第四章主要讲的是选择结果程序设计,前面第 3 章介绍了顺序结构程序设计。在顺序结构中,各语句是按自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的。实际上,在很多情况下,需要根据某个条件是否满足来决定是否执行指定的操作任务,或者从给定的两种或多种操作作选择其一。这是选择结构要解决的问题。2 选择结构在进行程序处理的时候,就需要运用到选择语句。同时也需要各种运算符、关系表达式以及它们之间的优先次序。(二)本文的研究思路、方法及意义1 对于按逆序输出位数及每位数字问题, ,输出它的位数就需要用到 strlen 函数,输出它的逆序数字则要用到 streev 函数。2 对于公司奖金计算问题,主要根据 i 属于的不同范围,计算不同的奖金额。3 对于利用坐标求高度问题,先确定属于圆内的点的高度都为 10,圆外点的高度都为 0。(三)相关理论基础1 用 strlen 函数输出位数,用 streev 函数输出它的逆序数字2 计算公司奖金计算问题,计算 bon1=100000*0.1 的值计算 bon2=bon1+100000*0.075 的值计算 bon4=bon2+200000*0.05 的值计算 bon6=bon4+200000*0.03 的值计算 bon10=bon6+400000*0.015 的值3 利用坐标求高度问题,在圆范围之内的坐标高度为 10,圆外的坐标高度为0。二 算法分析及流程图(一)按逆序输出位数及每位数字问题1 给一个不多于 5 位的正整数,要求:1求出它是几位数;2分别输出每一位数字;3按逆序输出各位数字,例如 321,应输出 123。(1)算法分析:输入一个不多于 5 位的数字,输出它的位数就需要用到 strlen函数,输出它的逆序数字则要用到 streev 函数。(2)N-S 图限定数字范围小于 1000输入字符串2根据 strlen 和 streev 函数输出结果程序结束图 1.1(二)公司奖金计算问题2 企业发放的奖金根据利润提成。利润 I 低于或等于 100000 元时,奖金可提10%;利润高于 100000 元,低于 200000 元(1000001000000 时,超过 1000000 元的部分按 1%提成。从键盘输入当月利润 I,求应发奖金总数。要求:(1) 用 if 语句编程序;(2) 用 switch 语句编程序。(1) 算法分析:根据利润的不同来计算相应的奖金,则需要用到条件语句 if或 switch,定义 6 个变量 i、bonus、bon1、bon2、bon6、bon10,其中i 为利润,bonus 及 bon1、bon2、bon6、bon10 为奖金额。(2)N-S 图定义 6 个变量 i,bonus,bon1,bon2,bon6,bon10计算 bon1=100000*0.1 的值计算 bon2=bon1+100000*0.075 的值计算 bon4=bon2+200000*0.05 的值计算 bon6=bon4+200000*0.03 的值计算 bon10=bon6+400000*0.015 的值根据相应的 i 的值,计算不同 i 值对应的奖金额 bonus输出奖金值,程序结束图 1.2(三)利用坐标求高度问题3 有 4 个圆塔,圆心分别为(2,2) 、 (-2,2) 、 (-2,-2) 、 (2,-2) ,圆半径为1, 。这 4 个塔的高度为 10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零) 。(1) 算法分析:在以(2,2) , (-2,2) , (-2,-2) , (2,-2)为圆心,1 为半径的圆上的高度都为 10,其他地方的高度均为 0,定义 15 个变量x,y,x1,y1,x2,y2,x3,y3,x4,y4,d1,d2,d3,d4,h.x1,y1;x2,y2;x3,y3;x4,y4 分别是 4 个圆心的坐标,d1,d2,d3,d4 分别为所在 4 个圆内的点的高度,h 定义为高度。(2)N-S 图定义变量 h 为高度3分别定义变量 x,y,x1,y1,x2,y2,x3,y3,x4,y4,d1,d2,d3,d4 为圆心坐标和圆内高度根据不同的坐标值,分别输出 h 的值,即建筑物的高度程序结束图 1.3三 实验过程分析(一)数据和函数说明1 按逆序输出位数及每位数字问题(1)编写程序:#include#includeint main()char num1000;scanf(“%s“,num);printf(“你输入的是%d 位数,逆序数是%s“,strlen(num),strrev(num);return 0;运行结果;(2) 程序分析:程序第 2 行用了头文件#include,是因为下面运用了 strlen 和strrev 函数。程序第 5 行是对输入数字的限定,输入的数字不能大于 1000,即输入的数字不多于 5 位。输出函数运行之后的值,程序结束。2 公司奖金计算问题(1) 编写程序用 If 语句编写的程序:#include “stdio.h“void main()long i;float bonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;printf(“请输入利润 i:“);4scanf(“%ld“,if(iint main()int i;double bonus,bon1,bon2,bon4,bon6,bon10;int branch;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;printf(“请输入利润 i:“);scanf(“%d“,branch=i/100000;if(branch10) branch=10;switch(branch)case 0:bonus=i*0.1;break;case 1:bonus=bon1+(i-100000)*0.075;break;case 2:case 3:bonus=bon2+(i-200000)*0.05;break;case 4:case 5:bonus=bon4+(i-400000)*0.03;break;case 6:case 7:case 8:case 9:bonus=bon6+(i-600000)*0.015;break;case 10:bonus=bon10+(i-100000)*0.01;5printf(“奖金是%10.2fn“,bonus);return 0;(2) 程序分析:1 用 if 语句编写的程序:程序第 4 行定义长整型变量 i,程序第 5 行定义实型变量bonus,bon1,bon2,bon4,bon6,bon10。程序第 6,7,8,9,10 行分别计算bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03; bon10=bon6+400000*0.015 的值。程序第 11 行输入变量 i 的值。程序第 13 行开始为 if 条件语句,当 i1000000 时,bonus=bon10+(i-1000000)*0.01。程序第 25 行输出奖金额,%10.2f 表示输出奖金的数据最小宽度为 10 位,小数部分输出 2 位或截取的字符个数是 2 个。光标换行,程序结束。2 用 switch 编写的程序程序第 4 行定义变量 i, ,程序第 7,8,9,10,11 行分别计算bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015 的值。程序第 12 行输入变量 i 的。在程序第 16 行以后的 case 后面的语句中,最后都有一个 break 语句,它的作用是使流程转到 switch 语句的末尾(即右花括号处) 。程序第 29 行输出奖金,%10.2f 表示输出奖金的数据最小宽度为 10 位,小数部分输出 2 位或截取的字符个数是 2 个。光标换行,程序结束。3 利用坐标求高度问题(1) 编写程序#includeint main()int h_45=10;float x1_45=2,y1_45=2,x2_45=-2,y2_45=2,x3_45=-2,y3_45=-2,x4_45=2,y4_45=-2,x_45,y_45,d1_45,d2_45,d3_45,d4_45;printf(“请输入一个点(x,y):“);sacnf(“%f,%f“,d1_45=(x_45-x4_45)*(x_45-x4_45)+(y_45-y4_45)*(y_45-y4_45);d2_45=(x_45-x1_45)*(x_45-x1_45)+(y_45-y1_45)*(y_45-y1_45);d3_45=(x_45-x2_45)*(x_45-x2_45)+(y_45-y2_45)*(y_45-y2_45);d4_45=(x_45-x3_45)*(x_45-x3_45)+(y_45-y3_45)*(y_45-y3_45);if(d1_4516printf(“该点高度为%dn“,h_45);return 0;(2)程序分析:程序第 4 行定义变量 h,同时给 h 赋值为 10。程序第 5 行定义变量 x,y,x1,y1,x2,y2,x3,y3,x4,y4,d1,d2,d3,d4,并给定初始值 x1,x4,y1,y2 为 2、x2,x3,y3,y4 为-2。程序第 8,9,10,11 行定义以(2,2) (-2,2) (-2,-2) (2,-2)为圆心,1 为半径的圆内高度为 10。程序第 12 行进行判断,如果坐标不在圆内,则其高度为 0;否则高度为 10。程序第 13 行输出高度 h。光标换行,程序结束。(二)实验工具Visual C+6.0(三)调试过程1 按逆序输出位数及每位数字问题1 显示程序没有语句和逻辑上的错误,如图 1.4图 1.42运行程序,输入一个数 6314,输出了它是 4 位数,并且还输出它的逆序数1436,如图 1.57图 1.52 公司奖金计算问题(1)用 if 语句编写的程序:1程序显示没有语言和逻辑错误,如图 1.6图 1.62第一次运行结果,输入的利润为 5000 元,输出的奖金为 500 元,如图 1.78图 1.72 第二次运行结果,输入的利
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河南省商品房买卖合同样本
- 2025年对海峡两岸“建筑施工长期供应合同”的比较分析
- 2025设备销售代理合同范本
- 活动策划面试真题及答案
- 大厂消防面试题及答案
- 临时派遣工合同范例
- 2025年UX设计标准外包合同范本
- 高级护理考试试题及答案
- 动物学2考试试题及答案
- 临时展厅制作安装合同范例
- MBA-组织行为学课件
- 白云枕头-模板参考
- 奥迪汽车介绍
- 心衰超滤治疗
- 设备管理案例综合经验
- 发现人生的闪光点主题班会课件
- 福建省福州市仓山区2023-2024学年六年级上学期期末数学试卷
- 《延年益寿养生方法》课件
- 外科学(2)智慧树知到课后章节答案2023年下温州医科大学
- 人工智能引论智慧树知到课后章节答案2023年下浙江大学
- 小班数学《图形食品品尝会》
评论
0/150
提交评论