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

上传人:b****1 文档编号:740677 上传时间:2022-10-12 格式:DOCX 页数:22 大小:290.54KB
下载 相关 举报
C语言程序设计案例操作和分析以课后习题为例.docx_第1页
第1页 / 共22页
C语言程序设计案例操作和分析以课后习题为例.docx_第2页
第2页 / 共22页
C语言程序设计案例操作和分析以课后习题为例.docx_第3页
第3页 / 共22页
C语言程序设计案例操作和分析以课后习题为例.docx_第4页
第4页 / 共22页
C语言程序设计案例操作和分析以课后习题为例.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

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

《C语言程序设计案例操作和分析以课后习题为例.docx》由会员分享,可在线阅读,更多相关《C语言程序设计案例操作和分析以课后习题为例.docx(22页珍藏版)》请在冰豆网上搜索。

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

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

C语言程序设计案例操作和分析

——以课后习题为例

一引言

(一)研究的缘起

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

输入字符串

根据strlen和streev函数输出结果

程序结束

图1.1

(二)公司奖金计算问题

2企业发放的奖金根据利润提成。

利润I低于或等于100000元时,奖金可提10%;利润高于100000元,低于200000元(100000

高于200000元的部分按5%提成;4000001000000时,超过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为高度

分别定义变量x,y,x1,y1,x2,y2,x3,y3,x4,y4,d1,d2,d3,d4为圆心坐标和圆内高度

根据不同的坐标值,分别输出h的值,即建筑物的高度

程序结束

图1.3

三实验过程分析

(一)数据和函数说明

1按逆序输出位数及每位数字问题

(1)编写程序:

#include

#include

intmain()

{

charnum[1000];

scanf("%s",num);

printf("你输入的是%d位数,逆序数是%s",strlen(num),strrev(num));

return0;

运行结果;

(2)程序分析:

程序第2行用了头文件#include,是因为下面运用了strlen和strrev函数。

程序第5行是对输入数字的限定,输入的数字不能大于1000,即输入的数字不多于5位。

输出函数运行之后的值,程序结束。

2公司奖金计算问题

(1)编写程序

用If语句编写的程序:

#include"stdio.h"

voidmain()

{

longi;

floatbonus,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:

");

scanf("%ld",&i);

if(i<=100000)

bonus=i*0.1;

elseif(i<=200000)

bonus=bon1+(i-100000)*0.075;

elseif(i<=400000)

bonus=bon2+(i-200000)*0.05;

elseif(i<=600000)

bonus=bon4+(i-400000)*0.03;

elseif(i<=1000000)

bonus=bon6+(i-600000)*0.015;

else

bonus=bon10+(i-1000000)*0.01;

printf("奖金是%10.2f\n",bonus);

}

用switch语句编写的程序:

#include

intmain()

{

inti;

doublebonus,bon1,bon2,bon4,bon6,bon10;

intbranch;

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",&i);

branch=i/100000;

if(branch>10)branch=10;

switch(branch)

{case0:

bonus=i*0.1;break;

case1:

bonus=bon1+(i-100000)*0.075;break;

case2:

case3:

bonus=bon2+(i-200000)*0.05;break;

case4:

case5:

bonus=bon4+(i-400000)*0.03;break;

case6:

case7:

case8:

case9:

bonus=bon6+(i-600000)*0.015;break;

case10:

bonus=bon10+(i-100000)*0.01;

}

printf("奖金是%10.2f\n",bonus);

return0;

}

(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条件语句,当i<=100000时,bonus=i*0.1;当1000001000000时,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)编写程序

#include

intmain()

{

inth_45=10;

floatx1_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",&x_45,&y_45);

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_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1