C语言程序设计案例操作和分析以课后习题为例文档格式.docx
- 文档编号:19765953
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:22
- 大小:290.33KB
C语言程序设计案例操作和分析以课后习题为例文档格式.docx
《C语言程序设计案例操作和分析以课后习题为例文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计案例操作和分析以课后习题为例文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
输入字符串
根据strlen和streev函数输出结果
程序结束
图1.1
(二)公司奖金计算问题
2企业发放的奖金根据利润提成。
利润I低于或等于100000元时,奖金可提10%;
利润高于100000元,低于200000元(100000<
I<
=200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成7.5%;
200000<
=400000时,低于200000的部分仍按照上述办法提成(下同)。
高于200000元的部分按5%提成;
400000<
=600000元时,高于400000元的部分按3%提成;
600000<
=1000000时,高于600000元的部分按1.5%提成;
I>
1000000时,超过1000000元的部分按1%提成。
从键盘输入当月利润I,求应发奖金总数。
要求:
(1)用if语句编程序;
(2)用switch语句编程序。
(1)算法分析:
根据利润的不同来计算相应的奖金,则需要用到条件语句if或switch,定义6个变量i、bonus、bon1、bon2、bon6、bon10,其中i为利润,bonus及bon1、bon2、bon6、bon10为奖金额。
定义6个变量i,bonus,bon1,bon2,bon6,bon10
根据相应的i的值,计算不同i值对应的奖金额bonus
输出奖金值,程序结束
图1.2
(三)利用坐标求高度问题
3有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1,。
这4个塔的高度为10m,塔以外无建筑物。
今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。
在以(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定义为高度。
定义变量h为高度
分别定义变量x,y,x1,y1,x2,y2,x3,y3,x4,y4,d1,d2,d3,d4为圆心坐标和圆内高度
根据不同的坐标值,分别输出h的值,即建筑物的高度
图1.3
三实验过程分析
(一)数据和函数说明
1按逆序输出位数及每位数字问题
(1)编写程序:
#include<
stdio.h>
string.h>
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;
请输入利润i:
"
);
%ld"
&
i);
if(i<
=100000)
bonus=i*0.1;
elseif(i<
=200000)
bonus=bon1+(i-100000)*0.075;
=400000)
bonus=bon2+(i-200000)*0.05;
=600000)
bonus=bon4+(i-400000)*0.03;
=1000000)
bonus=bon6+(i-600000)*0.015;
else
bonus=bon10+(i-1000000)*0.01;
奖金是%10.2f\n"
bonus);
}
用switch语句编写的程序:
inti;
doublebonus,bon1,bon2,bon4,bon6,bon10;
intbranch;
%d"
branch=i/100000;
if(branch>
10)branch=10;
switch(branch)
{case0:
bonus=i*0.1;
break;
case1:
bonus=bon1+(i-100000)*0.075;
case2:
case3:
bonus=bon2+(i-200000)*0.05;
case4:
case5:
bonus=bon4+(i-400000)*0.03;
case6:
case7:
case8:
case9:
bonus=bon6+(i-600000)*0.015;
case10:
bonus=bon10+(i-100000)*0.01;
}
用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;
当100000<
i<
=200000时,bonus=bon1+(i-100000)*0.075;
当200000<
=400000时,bonus=bon2+(i-200000)*0.05;
当400000<
=600000时,bonus=bon4+(i-400000)*0.03;
当600000<
=1000000时,bonus=bon6+(i-600000)*0.015;
当i>
1000000时,bonus=bon10+(i-1000000)*0.01。
程序第25行输出奖金额,%10.2f表示输出奖金的数据最小宽度为10位,小数部分输出2位或截取的字符个数是2个。
光标换行,程序结束。
用switch编写的程序
程序第4行定义变量i,,程序第7,8,9,10,11行分别计算bon1=100000*0.1;
bon10=bon6+400000*0.015的值。
程序第12行输入变量i的。
在程序第16行以后的case后面的语句中,最后都有一个break语句,它的作用是使流程转到switch语句的末尾(即右花括号处)。
程序第29行输出奖金,%10.2f表示输出奖金的数据最小宽度为10位,小数部分输出2位或截取的字符个数是2个。
3利用坐标求高度问题
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;
请输入一个点(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_45)*(y_45-y3_45);
if(d1_45>
1&
&
d2_45>
d3_45>
d4_45>
1)h_45=0;
该点高度为%d\n"
h_45);
(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。
光标换行,程序结束。
(二)实验工具
VisualC++6.0
(三)调试过程
显示程序没有语句和逻辑上的错误,如图1.4
图1.4
运行程序,输入一个数6314,输出了它是4位数,并且还输出它的逆序数1436,如图1.5
图1.5
(1)用if语句编写的程序:
程序显示没有语言和逻辑错误,如图1.6
图1.6
第一次运行结果,输入的利润为5000元,输出的奖金为500元,如图1.7
图1.7
第二次运行结果,输入的利润值为150000元,输出的奖金为13750元,如图1.8
图1.8
4>
第三次运行结果,输入的利润值为300000元时,输出的奖金则为22500元,如图1.9
图1.9
5>
第四次运行结果,输入的利润值为2000000元,输出的奖金为49500元,如图2.0
图2.0
(2)用switch语句编写的程序
显示程序没有语句或逻辑上的错误,如图2.1
图2.1
第一次运行结果,输入利润值5000,输出的奖金为500元,如图2.2
图2.2
第二次运行结果,输入200000的利润值,输出的奖金是17500元,如图2.3
图2.3
第三次运行结果,输入500000元的利润值,输出的奖金为30500元,如图2.4
图2.4
显示程序没有语句或逻辑上的错误,如图2.5
图2.5
输入坐标(2,3),输出的高度为10,如图2.6
图2.6
输入坐标(0,0),输出的高度为0,如图2.7
图2.7
输入坐标(-1,-4),输出的高度为0,如图2.8
图2.8
四结果与讨论
(一)程序代码
2公司奖金计算问题
(1)if语句程序
(2)switch语句
(二)分析与讨论
1if语句用来实现两个分支的选择结构,switch语句实现多分支的选择结构。
if语句的一般形式为:
if(表达式)语句1
[else语句2]
最常用的还有以下三种形式:
if(表达式)语句1(没有else子句部分)
2>
if(表达式)(有else子句部分)
语句1
Else
语句2
3>
if(表达式1)语句1(在else部分又嵌套了多层的if语句)
Elseif(表达式2)语句2
Elseif(表达式3)语句3
..
Elseif(表达式m)语句m
Else语句m+1
说明:
语句1、语句2、语句3…语句m等是if语句中的“内嵌语句”每个内嵌语句的末尾都应当有分号。
if语句无论写在几行上,都是一个整体,属于同一个语句。
2关系运算符及次序:
在C语言中,比较符(比较运算符)称为关系运算符。
(1)6种关系运算符:
1)<
(小于)
2)<
=(小于或等于)
3)>
(大于)
4)>
=(大于或等于)
5)==(等于等于)
6)!
=(不等于)
(2)关于优先次序:
前4种关系运算符(<
<
=,>
>
=)的优先级别相同,后2种也相同。
前4种高于后两种。
例如“>
”优先于“==”。
而“>
”与“<
”优先级相同。
关系运算符的优先级低于算数运算符。
关系运算符的优先级高于赋值运算符。
3关系表达式.用关系运算符将两个数值或数值表达式连接起来的式子,称关系表达式.
关系表达式的值是一个逻辑值,即"
真"
或"
假"
.例如,关系表达式”5==3”的值为”假”,”5>
=3”的值为“真”。
在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”。
关系表达式“a>
b”的值为“真”,表达式的值为1.
关系表达式“(a>
b)==c”的值为“真”,表达式的值为1.
关系表达式“b+c<
a”的值为“假”,表达式的值为0.
3“&
”是逻辑运算符中的“逻辑与”,a&
b,如果a和b都为真,否则为假。
“!
”是逻辑运算符中的“逻辑非”,!
a为真,如果a为真,则!
a为假。
4条件运算符。
(1)条件运算符由两个符号(?
和:
)组成,必须一起使用。
要求有三个操作对象,称为三目(元)运算符,它是C语言中唯一的一个三目运算符。
(2)条件运算符的一般形式为:
表达式1?
表达式2:
表达式3.
(三)研究结论
1为了方便程序阅读,要把表达式用()括号括起来。
2f格式字符。
用来输出实数(包括单、双精度、长双精度),以小数形式输出,有几种用法:
(1)基本型,用%f。
实数中的整数部分全部输出,小数部分输出6位。
(2)指定数据宽度和小数位数,用%m.nf。
输出数据占m列,其中包括n位小数。
一个双精度数只能保证15位有效数字的精确度,即使指定小数位数为50,也不能保证输出的50位都是有效数字。
(3)输出的数据向左对齐,用%-m.nf。
在m.n的前面加一个负号,其作用与%m.nf形式作用基本相同,但当数据不超过m时,数据向左靠,右端补空格。
3sterev()是函数反转字符串,原型:
exturnchar*strrev(char*s),此函数的功能是把字符串s的所有字符顺序颠倒过来(不包括空字符(NULL))。
五改进建议
运用相应的函数可以使程序变得更为简单,如本篇文章中的按逆序输出位数及每位数字问题,如果不运用函数,运用算术的方法来编程的话,程序如下:
math.h>
intnum,indiv,ten,hundred,thousand,ten_thousand,place;
请输入一个整数(0-99999):
num);
if(num>
9999)
place=5;
elseif(num>
999)
place=4;
elseif
(num>
99)
place=3;
9)
place=2;
elseplace=1;
位数:
%d\n"
place);
prin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 案例 操作 分析 课后 习题