c语言程序设计案例操作和分析——以课后习题为例

上传人:小** 文档编号:46985316 上传时间:2018-06-28 格式:DOC 页数:20 大小:370.50KB
返回 下载 相关 举报
c语言程序设计案例操作和分析——以课后习题为例_第1页
第1页 / 共20页
c语言程序设计案例操作和分析——以课后习题为例_第2页
第2页 / 共20页
c语言程序设计案例操作和分析——以课后习题为例_第3页
第3页 / 共20页
c语言程序设计案例操作和分析——以课后习题为例_第4页
第4页 / 共20页
c语言程序设计案例操作和分析——以课后习题为例_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《c语言程序设计案例操作和分析——以课后习题为例》由会员分享,可在线阅读,更多相关《c语言程序设计案例操作和分析——以课后习题为例(20页珍藏版)》请在金锄头文库上搜索。

1、1C C 语言程序设计案例操作和分析语言程序设计案例操作和分析以课后习题为例一 引言(一)研究的缘起 1 第四章主要讲的是选择结果程序设计,前面第 3 章介绍了顺序结构程序设计。 在顺序结构中,各语句是按自上而下的顺序执行的,执行完上一个语句就自动 执行下一个语句,是无条件的。实际上,在很多情况下,需要根据某个条件是 否满足来决定是否执行指定的操作任务,或者从给定的两种或多种操作作选择 其一。这是选择结构要解决的问题。2 选择结构在进行程序处理的时候,就需要运用到选择语句。同时也需要各种 运算符、关系表达式以及它们之间的优先次序。 (二)本文的研究思路、方法及意义 1 对于按逆序输出位数及每位

2、数字问题, ,输出它的位数就需要用到 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.0

3、3 的值 计算 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 函数输出结果 程序结束图

4、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、b

5、on6、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)

6、、 (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分

7、别定义变量 x,y,x1,y1,x2,y2,x3,y3,x4,y4,d1,d2,d3,d4 为圆心坐标和圆内 高度 根据不同的坐标值,分别输出 h 的值,即建筑物的高度 程序结束图 1.3三 实验过程分析(一)数据和函数说明 1 按逆序输出位数及每位数字问题 (1)编写程序: #include #include int main() char num1000;scanf(“%s“,num);printf(“你输入的是%d 位数,逆序数是%s“,strlen(num),strrev(num);return 0; 运行结果;(2) 程序分析: 程序第 2 行用了头文件#include,是因为下面运

8、用了 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.0

9、15;printf(“请输入利润 i:“);4scanf(“%ld“,if(i int 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; switc

10、h(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); re

11、turn 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=bon 4+200000*0.03; bon10=bon6+400000*0.015 的值。 程序第 11 行输入变量 i 的值。 程序第 13 行开始为 if 条件语句,当 i1000000 时,bonus=bon10+(i-1

12、000000)*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=bon 4+200000*0.03;bon10=bon6+400000*0.015 的值。 程序第 12 行输入变量 i 的。在程序第 16 行以后的 case 后面的语句中,最

13、后都有一个 break 语句,它的 作用是使流程转到 switch 语句的末尾(即右花括号处) 。程序第 29 行输出奖金,%10.2f 表示输出奖金的数据最小宽度为 10 位,小数 部分输出 2 位或截取的字符个数是 2 个。光标换行,程序结束。 3 利用坐标求高度问题 (1) 编写程序 #include int 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(“请输入一

14、个点(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); re

15、turn 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 (三)调试过程

16、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 第二次运行结果,输入的利润值为 150000 元,输出的奖金为 13750 元,如 图 1.8图 1.84第三次运行结果,输入的利润值为 300000 元时,输出的奖金则为 22500 元, 如图 1.99图 1.95第四次运行结果,输入的利润值为 2000000 元,输出的奖金为 49500 元,如 图 2.0图 2.0(2)用 switch 语句编写的程序 1显示程序没有语句或逻辑上的错误,如图 2.110图 2.12第一次运行结果,输入利润值 5000,输出的奖金为 500 元,如图 2.2图 2.2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 宣传企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号