C语言程序设计第四版答案样本Word文档下载推荐.docx

上传人:b****6 文档编号:19580447 上传时间:2023-01-08 格式:DOCX 页数:9 大小:18.04KB
下载 相关 举报
C语言程序设计第四版答案样本Word文档下载推荐.docx_第1页
第1页 / 共9页
C语言程序设计第四版答案样本Word文档下载推荐.docx_第2页
第2页 / 共9页
C语言程序设计第四版答案样本Word文档下载推荐.docx_第3页
第3页 / 共9页
C语言程序设计第四版答案样本Word文档下载推荐.docx_第4页
第4页 / 共9页
C语言程序设计第四版答案样本Word文档下载推荐.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

C语言程序设计第四版答案样本Word文档下载推荐.docx

《C语言程序设计第四版答案样本Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第四版答案样本Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。

C语言程序设计第四版答案样本Word文档下载推荐.docx

(5)!

(a+b)+c-1&

b+c/2

(1)0

(2)1

(3)1

(4)0

(5)1

4.4有3个整数a、b、c,由键盘输入,输出其中最大数。

办法一

#include<

stdio.h>

main()

{inta,b,c;

printf("

请输入3个整数:

"

);

scanf("

%d,%d,%d"

&

a,&

b,&

c);

if(a<

b)

if(b<

c)printf("

max=%d\n"

c);

elseprintf("

b);

elseif(a<

a);

}

办法二:

使用条件表达式,可以使程序更加简要、清晰。

程序如下:

{inta,b,c,temp,max;

temp=(a>

b)?

a:

b;

/*将a和b中大者存人temp中*/

max=(temp>

c)?

temp:

c;

/*将a和b中大者与c比较,取最大者*/

3个整数最大数是%d\n”,max);

4.6有一函数:

写一程序,输入x值,输出y值。

{intx,y;

输入x:

%d"

x);

if(x<

1)/*x<

1*/

{y=x;

x=%3d,y=x=%d\n"

x,y);

elseif(x<

10)/*1≤x-10*/

{y=2*x-1;

x=%3d,y=2*x-1=%d\n"

else/*x≥10*/

{y=3*x-11;

x=%3d,y=3*x-11=%d\n"

4.8给一种百分制成绩,规定输出级别’A’、’B’、’C’、’D’、’E’。

90分以上为’A’,80~90分为’B’,70~79分为’C’,60分如下为’D’。

{floatscore;

chargrade;

请输入学生成绩:

%f"

score);

while(score>

100||(score<

0)

{printf("

\n输入有误,请重新输入:

switch((int)(score/10))

{case10:

case9:

grade=’A’;

break;

case8:

grade=’B’;

case7:

grade=’C’;

case6:

grade=’D’;

case5:

case4:

case3:

case2:

case1:

case0:

grade=’E’;

成绩是%5.1f,相应级别是%c。

\n"

score,grade);

阐明:

对输入数据进行检查,如不大于0或不不大于100,规定重新输入。

(int)(score/10)作用是将(score/10)值进行强制类型转换,得到一种整型值。

4.9给定一种不多于5位正整数,规定:

①求它是几位数;

②分别打印出每一位数字;

③按逆序打印出各位数字。

例如原数为321,应输出123。

{longintnum;

intindiv,ten,hundred,thousand,ten_thousand,place;

/*分别代表个位、十位、百位、千位、万位和位数*/

请输入一种整数(0~99999):

%ld"

num);

if(num>

9999)place=5;

elseif(num>

999)place=4;

99)place=3;

9)place=2;

elseplace=1;

place=%d\n"

,place);

ten_thousand=num/10000;

thousand=num/1000%10;

hundred=num/100%10;

ten=num%100/10;

indiv=num%10;

switch(place)

{case5:

%d,%d,%d,%d,%d"

ten_thousand,thousand,hundred,ten,indiv);

printf("

\n反序数字为;

%d%d%d%d%d\n"

indiv,ten,hundred,thousand,ten_thousand);

break;

case4:

%d,%d,%d,%d"

thousand,hundred,ten,indiv);

\n反序数字为:

%d%d%d%d\n"

indiv,ten,hundred,thousand);

case3:

hundred,ten,indiv);

%d%d%d\n"

indiv,ten,hundred);

case2:

%d,%d"

ten,indiv);

%d%d\n"

indiv,ten);

case1:

indiv);

%d\n"

4.10公司发放奖金依照利润提成。

利润I低于或等于10万元时,奖金可提成10%;

利润高于10万元,低于20万元(100000<

I≤00)时,其中10万元按10%提成,高于10万元某些,可提成7.5%;

00<

I≤400000时,其中20万元仍按上述办法提成(下同),高于20万元某些按5%提成;

400000<

I≤600000时,高于40万元某些按3%提成;

600000〈I≤1000000时,高于60万某些按1.5%提成;

I>

1000000时,超过100万元某些按1%提成。

从键盘输入当月利润I,求应发放奖金总数。

规定:

(1)用if语句编程序;

(2)用switch语句编程序。

计算利润时,要特别注意不同利润不同提成比例。

例如,利润为15万元,其中有10万元按10%比例提成,此外5万元则按7.5%提成。

(1)用if语句编程序。

{longi;

floatbonus,bon1,bon2,bon4,bon6,bon10;

bon1=100000*0.1;

/*利润为10万元时奖金*/

bon2=bon1+100000*0.075;

/*利润为20万元时奖金*/

bon4=bon2+00*0.05;

/*利润为40万元时奖金*/

bon6=bon4+00*0.03;

/*利润为60万元时奖金*/

bon10=bon6+400000*0.015;

/*利润为100万元时奖金*/

请输入利润i:

i);

if(i<

=100000)

bonus=i*0.1;

/*利润在10万元以内按0.1提成奖金*/

elseif(i<

=00)

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

/*利润在10万至20万元时奖金*/

=400000)

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

/*利润在20万至40万元时奖金*/

=600000)

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

/*利润在40万至60万元时奖金*/

=1000000)

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

/*利润在60万至100万元时奖金*/

else

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

/*利润在100万元以上时奖金*/

printf(”奖金是%10.2f\n"

bonus);

此题核心在于对的写出每一区间奖金计算公式。

例如利润在10万元至20万时,奖金应由两某些构成:

①利润为10万元时应得奖金。

即100000ⅹ0.1;

②10万元以上某些应得奖金。

即(num-100000)ⅹ0.075。

同理,20万~40万这个区间奖金也应由两某些构成:

①利润为20万元时应得奖金,即100000ⅹ0.1ⅹ10万ⅹ0.075;

②20万元以上某些应得奖金,即(num-00)ⅹ0.05。

程序中先把10万、20万、40万、60万、100万各核心点奖金计算出来,即bon1、bon2、bon4、bon6、hon10;

然后再加上各区间附加某些奖金。

(2)用switch语句编程序。

输入利润i,拟定相应提成级别branch

依照branch拟定奖金值

0奖金=i*0.1

1奖金=bon1+(i-105)*0.075

2奖金=bon2+(i-2*105)*0.05

3

4奖金=bon4+(i-4*105)*0.03

5

6奖金=bon6+(i-6*105)*0.015

7

8

9

10奖金=bon10+(i-106)*0.01

输出奖金

floatbonus,bon1,bon2,bon4,bon6,bon10;

intc;

c=i/100000;

if(c>

10)c=10;

switch(c)

{case0:

bonus=1*0.1;

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

case2:

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

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

case10:

奖金是%10.2f"

4.11输入4个整数,规定按由大到小顺序输出。

此题采用依次比较办法排出其大小顺序。

在学习了循环和数组后来,可以有更多排序办法。

{intt,a,b,c,d;

请输入4个整数:

c,&

d);

\na=%d,b=%d,c=%d,d=%d\n"

a,b,c,d);

if(a>

b){t=a;

a=b;

b=t;

c){t=a;

a=c;

c=t;

d){t=a;

a=d;

d=t;

if(b>

b=c;

d){t=b;

b=d;

d){t=c;

c=d;

排序成果如下:

%d,%d,%d,%d\n"

4.12有4个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1。

这4个塔高度分别为10m。

塔以外无建筑物。

今输入任一点坐标,求该点建筑高度(塔外高度为零)。

{inth=10;

floatx1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,d1,d2,d3,d4;

请输入一种点(x,y):

%f,%f"

x,&

y);

d1=(x-x1)*(x-x1)+(y-y1)*(y-y1);

/*求该点到各中心点距离*/

d2=(x-x2)*(x-x2)+(y+y2)*(y+y2);

d3=(x+x3)*(x+x3)+(y-y3)*(y-y3);

d4=(x+x4)*(x-x4)*(y+y4)*(y+y4);

if(d1>

1&

d2>

d3>

d4>

1)h=0;

/*判断该点与否在塔外*/

该点高度为%d\n"

h);

}

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

当前位置:首页 > 高等教育 > 军事

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

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