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

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

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

1、1 C 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

3、*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 输入字符串 根据 strlen 和 streev 函数输出结果

4、 程序结束 2 图 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

5、 及 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) 、 (

6、-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 图

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

8、 行用了头文件#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+20000

9、0*0.03; bon10=bon6+400000*0.015; printf(“请输入利润 i:“); scanf(“%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

10、; 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-1000

11、00)*0.01; printf(“奖金是%10.2fn“,bonus); return 0; 5 (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 行输

12、入变量 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;bon

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

14、=-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); d

15、4_45=(x_45-x3_45)*(x_45-x3_45)+(y_45-y3_45)*(y_45-y3_45); if(d1_451 printf(“该点高度为%dn“,h_45); 6 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。

16、 程序第 12 行进行判断,如果坐标不在圆内,则其高度为 0;否则高度为 10。 程序第 13 行输出高度 h。 光标换行,程序结束。 (二)实验工具 Visual C+6.0 (三)调试过程 1 按逆序输出位数及每位数字问题 1 显示程序没有语句和逻辑上的错误,如图 1.4 图 1.4 2运行程序, 输入一个数 6314, 输出了它是 4 位数, 并且还输出它的逆序数 1436, 如图 1.5 7 图 1.5 2 公司奖金计算问题 (1)用 if 语句编写的程序: 1程序显示没有语言和逻辑错误,如图 1.6 图 1.6 2第一次运行结果,输入的利润为 5000 元,输出的奖金为 500 元,如图 1.7 8 图 1.7 2 第二次运行结果,输入的利润值为 150000 元,输出的奖金为 13750 元,如图 1.8 图 1.8 4第三次运行结果,输入的利润值为 300000 元时,输出的奖金则为 22500 元, 如图 1.9 9 图 1.9 5第四次运行结果,输入的利润值为 2000000 元,输出的奖金为 49500 元,如图 2

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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