C语言程序设计(何欣铭、颜晖-第2版)课后习题答案_第1页
C语言程序设计(何欣铭、颜晖-第2版)课后习题答案_第2页
C语言程序设计(何欣铭、颜晖-第2版)课后习题答案_第3页
C语言程序设计(何欣铭、颜晖-第2版)课后习题答案_第4页
C语言程序设计(何欣铭、颜晖-第2版)课后习题答案_第5页
已阅读5页,还剩106页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

修改程序,视察语法错误、逻辑错误及改

正方法。

C语言程序的调试、运行步骤

令语法错误:可以删除一个分号,使编

izp译出现错误提示,改正之,再编译。

11类比写文章有错别字。

起先令逻辑错误:将sum=sim+i改

sum=sum-i,编译、连接、运行,发宽

语法连接运行

锚谈情误运行结果不符合题目要求。找出错误

(调试),改正之,再编译、连接、区

行,看结果。类比写文章词不达意。

1.3习题参考答案

1.对c语言来说,下列标识符中哪些是合法的,哪些是不合法的?

totaldebugLarge&all,Conterl,begin_

解答:Large&Tall不合法,其余都合法。

2.改写本章1.4节中的流程图1.2,求1—100中能被6整除的全部整数的和。

解答:

图1.1“求1〜100中能被6整除的全部整数的和”的流程图

II

3.改写本章1.4节中的程序,求1—100中能被6整除的全部整数的和,并在编程环境中验证

该程序的运行结果。

解答:

#include<stdio.h>

intmain(vid)

(

inti,sum=0;

for(i=l;i<=100i++)

if(i%6==0)sum=sum+i;

printf"%d",sum);

returnO;

}

运行结果:816

4.对于给定的整数n(n>1),请设计一个流程图判别n是否为一个素数(只能被1和自己整

除的整数),并分析该流程图中哪些是依次结构、哪些是分支结构与循环结构。

解答:在流程图中,分支结构和循环结构如图1.2所示,自上而下的2个实线框和2个虚线组

成了依次结构。

#include<stdio.h>

intmain(void)

{

printfCA\nM);

printf(nAA\nn);

printf(uA\nu);

return0;

14

62简洁总结本节内容。

..函数的概念使学生了解自定义函数编程结构,能够用

c遹章脑两种类型函数仿编程即可。

的脑盘到一次定义、多

穗峰手嬲野球

以分节结束*/

intniain(void)

{WT"调用自定义函数3

---1定求n!的函数,"------------

2.3练习与习题参考答案

2.3.1练习参考答案

2-1编写程序,在屏幕上显示一个短句“ProgramminginCisfun!”。

解答:

#include<stdio.h>

intmain(void)

{

printf(,,ProgramminginCisfun!\n");

return0;

)

2-2下列语句的运行结果是什么?与例2-2的运行结果有何不同?为什么?

printf(^Programmingisfun.AndProgramminginCisevenmorefun!\n");

解答:

运行结果:Programmingisfiin.AndProgramminginCisevenmorefun!

例2-2的运行结果分2行显示。缘由在于,例2-2中在每条输出语句的结尾都接受了“,

换行。

2-3编写程序,在屏幕上显示如下图案。

****

***

**

*

解答:

intmain(void)

{

printf(n****\n***\n**\n*\nH);

return0;

18

2-4编写程序,求华氏温度150叩对应的摄氏温度(计算公式同例2-3)o

解答:

#include<stdio.h>

intmain(void)

intCelsius,fahr;

fahr=150;

Celsius=5*(fahr-32)/9;

printf(nfahr=%d,Celsius=%d\nn,fahr,Celsius);

return0;

2-5算术表达式5*(fahr-32)/9能改写成5(fehr-32)/9吗?为什

么?如果将其改写为

5/9*(fahr-32),会影响运算结果吗?

解答:

5(fahr-32)/9不是合法的C表达式,因为不能省略运算符*;5/9*(fahr・32)的值为0。

2-6一个物体从100米的高空自由落下,编写程序,求它在前3秒内下落的垂直距离。设重

力加速度为10iWs2o

解答:

#include<stdio.h>

intmain(void)

{

doubleheight;

height=0.5*10*3*3;

printf(nheight=%.2f\nH,height);

return0;

2-7输入提示和输入语句的依次应当如何支配?例2-5中,scanf(,,%d%d%lf,,&money,&year,

&rate)能改写scanf(M%d%lf%dn,&money,&year,&rate)吗?为什么?能改写为

scanf(,,%d%lf%dn,&money,&rate,&year)吗?假如可以,其对应的输入数据是什么?

解答:

输入提示在前,输入语句在后。

不能改写为scanf(n%d%lf%dM,&money,&year,&rate),因为%lf与整型变量money不匹

配,%d与浮点型变量rate不匹配。

与scanf(M%d%lf%d'\&money,&rate,&year)对应的输入数据为:10000.0253

2-8编写程序,输入华氏温度,输出对应的摄氏温度,计算公式同例2-3o

解答:

#include<stdio.h>

intmain(void)

intCelsius,fahr;

19

scanf(n%dn,&fahr);

Celsius=5*(fahr-32)/9;

printf(Hcelsius=%d\nn,Celsius);

return0;

)

2-9编写程序,输入3个整数,计算并输出它们的平均值。

解答:

#include<stdio.h>

intmain(void)

(

inta,b,c;

doubleaverage;

scanf(n%d%d%dn,&a,&b,&c);

average=(a+b+c)*1.0/3;

printR”average=%.2f\n”,average);

return0;

}

2-10编写程序,输入x,计算并输出下列分段函数f(x)的值(保留3位小数)。

kH

|x0

y=/x()=<X

|0x=0

解答:

#include<stdio.h>

intmain(void)

(

doublex,y;

scanf(M%lf',&x);

if(x!=0)

y=1/x;

else

y=o;

printf(Mf(%.2f)=%.3f\n”,x,y);

return0;

)

2-11编写程序,输入x,计算并输出下列分段函数f(x)的值(保留2位小数),请调用sqrt

函数求平方根,调用pow函数求幕。

x40

解答:1

#include<stdio.h>

20

#include<math.h>

intmain(void)

{

doublex,y;

scanf(n%lf*,&x);

if(x>=0)

y=sqrt(x);

else

y=pow(x,5)+2*x+1/x;

printf(”H%.2f)=%.2f\n”,x,y);

return0;

)

2-12编写程序,输入2个整数lower和upper,输出一张华氏一摄氏温度转换表,华氏温度

的取值范围是[lower,upper],每次增加2°F,计算公式同例2-7。

解答:

#include<stdio.h>

intmain(void)

{

intlower,upper;

doubleCelsius,fahr;

scanf(n%d%dM,&lower,&upper);

printf(nfahrcelsius\nn);

fbr(fahr=lower;fahr<=upper;fahr=fahr+2){

Celsius=5*(fahr-32.0)/9;

printf(M%3.0f%6.1f\nn,fahr,Celsius);

}

return0;

2-13编写程序,输入一个正整数y

/万。

n,求z=i

解答:

#include<stdio.h>

intmain(void)

(

inti,n;

doublesum;

scanfC%d”,&n);

sum=0;

fbr(i=1;i<=n;i++)

sum=sum+1.0/

i;

printf(nsum=%.6f\nH,sum);21

return0;

2-14编写程序,输入一个正整数n,计算1+++”.....的前n项之和。

35

解答:

#include<stdio.h>

intmain(void)

(

inti,n;

doublesum;

scanf("%d”,&n);

sum=0;

fbr(i=1;i<=n;i++)

sum=sum+1.0/(2*i-l);

printf("sum=%.6f\nH,sum);

return0;

)

2-15编写程序,输入一个正整数n,计算1—.....的前n项之

和。

47101316

解答:

#include<stdio.h>

intmain(void)

(

intflag,i,n,denominator;

doubleitem,sum;

scanf(n%d\&n);

sum=0;

flag=1;

denominator=1;

fbr(i=1;i<=n;i++){

item=flag*1.0/denominator;

sum=sum+item;

flag=-flag;

denominator=denominator+3;

)

printf(nsum=%.3f\nH,sum);

return0;

)

2-16编写程序,输入两个正整数m和n,计算m!+n!。

解答:

#include"stdio.h"

22

intmain(void)

{

inti,m,n;

doublefm,fh;

scanf(M%d%dM,&m,&n);

fm=1;

fbr(i=1;i<=m;i++)

fm=fm*i;

fn=1;

for(i=1;i<=n;i-H-)

fh=fh*i;

printf("%d!+%d!=m,n,fm+fn);

return0;

)

2-17执行下列程序段后,sum的值是o

for(i=1;i<=10;i++){

sum=0;

sum=sum+i;

)

解答:sum的值是10。

2-18输入一个正整数n,生成一张3的乘方表,输出3。到3"的值,可以调用基函数计算3

的乘方。

解答:

#include<stdio.h>

#include<math.h>

intmain(void)

{

inti,n;

doublemypow;

scanf("%d”,&n);

fbr(i=0;i<=n;i++){

mypow=pow(3,i);

printf(npow(3,%d)=%.0f\nM,i,mypow);

)

return0;

)

2-19输入一个正整数n,生成一张阶乘表,输出1!到n!的值。要求定义和调用函数fact(n)

计算n!,函数类型是doubleo

解答:

#include<stdio.h>

intmain(void)

23

inti,n;

doublemyfact;

doublefact(intn);

scanf(M%dn,&n);

fbr(i=1;i<=n;i++){

myfact=fact(i);

printf(n%d!=%.0f\nn,i,myfact);

}

return0;

}

doublefact(intn)

{

inti;

doubleproduct;

product=1;

fdr(i=l;i<=n;i++)

product=product*i;

returnproduct;

)

2-20依据下列公式可以算出从n个不同元素中取出m个元素(mgn)的组合数。编写程序,

输入2个正整数m和n(m<n),计算并输出组合数。要求定义和调用函数fact(n)计算n!,

函数类型是doubleo

mn\

C=!(-)!

解答:

#include"stdio.h"

doublefact(intn);

intmain(void)

{

intm,n;

doubles;

scanf{,,%d%dM,&m,&n);

s=fact(n)/(fact(m)*fact(n-m));

printf(nresult=%.0f\n”,s);

return0;

)

doublefact(intn)

(

inti;

doubleproduct;

product=1;

for(i=1;i<=n;i++)

24

product=product*i;

returnproduct;

)

2.3.2习题参考答案

1.编写程序,输入两个整数numl和num2,计算并输出它们的和、差、积、商与余数。

解答:

#include<stdio.h>

intmain(void)

{

intnuml,num2;

scanf(n%d%dH,&numl,&num2);

printf(n%d+%d=%d\n",numl,num2,numl+num2);

printf(M%d-%d=%d\n”,numl,num2,numl-num2);

printf(H%d*%d=%d\n",numl,num2,numl*num2);

printf("%d/%d=%d\nu,numl,num2,numl/num2);

printf(n%d%%%d=%d\nn,numl,num2,numl%num2);

return0;

)

2.为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电

价分两个“阶梯月用电量50千瓦时以内的,电价为0.53元/千瓦时;超过50千瓦时的

用电量,电价上调0.05元/千瓦时。编写程序,输入用户的月用电量(千瓦时),计算并输

出该用户应支付的电费(元)。

解答:

#include<stdio.h>

intmain(void)

(

doublecost,e;

scanf("%d”,&repeat);

scanfC%lF,&e);

if(e<=50)

cost=0.53*e;

else

cost=0.53*50+(e-50)*0.58;

printf(ncost=%.2f\n**,cost);

return0;

)

3.编写程序,输入实数x和正整数n,计算xn,不允许调用pow函数求幕。

解答:

#include<stdio.h>

intmain(void)

25

inti,n;

doublemypow,x;

scanf(,,%lf%d,\&x,&n);

mypow=1;

fbr(i=1;i<=n;i++)

mypow=mypow*x;

printf(',%.2f\n,\mypow);

return0;

Z(/2+')

4.编写程序,输入两个正整数m和n,求"i。

解答:

#includc<stdio.h>

intmain(void)

{

inti,m,n;

doublesum;

scanf("%d%d”,&m,&n);

sum=0;

fbr(i=m;i<=n;i++)

sum=sum+i*i+1.0/i;

printf(nsum=%.6f\n",sum);

return0;

)

1—I--1—2345

5.编写程序,输入一个正整数n,计的前n项之

算6和。

解答:

+...

#include<stdio.h>357911

intmain(void)

(

intflag,i,n;

doubleitem,sum;

scanf("%d”,&n);

sum=0;

flag=1;

fbr(i=1;i<=n;i++){

item=flag*1.0*i/

(2*i-l);

sum=sum+item;

flag="flag;

26

printf(nsum=%.3f\n",sum);

return0;

)

6.某客户为购房办理商业贷款,选择了按月等额本息还款法,计算公式如下,在贷款本金

(loan)和月利率(rate)确定的状况下,住房贷款的月还款额(money)取决于还款月数

(month)o客户打算在5~30年的范围内选择还清贷款的年限,想得到一张“还款年限一

月还款额表''以供参考。编写程序,输入贷款本金loan和月利率rate,输出“还款年限一

月还款额表”,还款年限的范围是5〜30年,输出时分别精确到年和元。

rate+rate)”,。,.

moneyx(1

loan(1+rate),,,i,-1

解答:

#include<stdio.h>

#include<math.h>

intmain(void)

{

intyear;

doubleloan,money,mypow,rate;

scanf(n%lf%lf,&loan,&rate);

print"'yearmoney\nu);

fbr(year=5;year<=30;year++){

mypow=pow(1+rate,12*year);

money=loan*rate*mypow/(mypow-1);

printf(nyear=%dmoney=%.0f\nn,year,money);

}

return0;

n

7.编写程序,输入一个正整数n,求日,可以调用pow函数求幕。

解答:

#include<stdio.h>

#include<math.h>

intmain(void)

(

inti,n;

doublesum;

scanff%d\&n);

sum=0;

fbr(i=1;i<=n;i-H-){

sum=sum+pow(2,i);

printf(nsum=%.Of\nn,sum);

27

return0;

e—Z,!

8.编写程序,输入一个正整数n,求,=。o要求定义和调用函数fact(n)计算n!,函数类

型是doubleo

解答:

#include<stdio.h>

intmain(void)

{

inti,n;

doublesum;

doublefact(intn);

scanf(n%du,&n);

sum=0;

fbr(i=0;iv=n;i++){

sum=sum+fact(i);

)

printf(nsum=%.0f\nn,sum);

return0;

}

doublefact(intn)

inti;

doubleproduct;

product=l;

fbr(i=1;i<=n;i++)

product=product*i;

returnproduct;

2.4试验指导教材参考答

2.4.1基本数据处理

一、调试示例:略

二、改错题:略

三、编程题

1.求华氏温度150°F对应的摄氏温度。计算公式如下,其中:c表示摄氏温度,f表示华

氏温度。一一

5532

C=X—xf

99

28

45若要变更else正常的配对规则,一般接受

■需更else和if的配两种方法:

接受{},构造一个复合语句。

例3.12改写下列if语句,使else和^增加空的else语句;

1个if配对。

if(x<2)

if(x<1)>—A♦1;

所,7+2;每条语句的执行条件:

if(x<2){_____________________if(XV2)______________________

if(x<1)y=x+1;if(x<1)y=x+1;

}else;

elsey=x+2;elsey=x+2;

46■归纳总结本章的各个重要学问点。

本章总、结

分节料:语句和witch语句

:式、逻辑

elseif

鬻鬟:运用分支语句娴熟编写

球鸥夺与表

覆翻序的综合设计

z

3.3练习与习题参考答案

3.3.1练习参考答案

练习3-1例3-4中运用else-if语句求解多分段函数,为了检查else-if语句的三个分支是否

正确,已经设计了三组测试用例,请问还须要增加测试用例吗?为什么?假如要增加,请给

出具体的测试用例并运行程序。

解答:

最好再增加两组测试用例,因为尚未对分段函数参数的边界值进行测试。可再给出x=0

和x=15时的两种状况。

练习3-2输入一个整数X,计算并输出下列分段函数sign(x)的值。

-1,x<0

y=sign(x)=,x=

〈00

IIx>0

解答:Ui,

#include<stdio.h>

intmain(void)

intx,y;

printf("Enterx:");

scanf(,,%d'\&x);

if(x>0)y=l;

elseif(x==0)y=0;

elsey=-l;

printf(',sign(%d)=%d\nn,x,y);

return0;

)

练习3-3输入一个正整数n,再输入n个学生的成果,计算平均成果,并统计全部及格学生

的人数。

解答:

#include<stdio.h>

intmain(void)

{

intcount,i,n;

doublegrade,total;

printf("Entern:");

scanf(”%d”,&n);

total=0;

count=0;

fbr(i=1;i<=n;i++){

printf(HEntergrade#%d:”,i);

scanf(H%lf;&grade);

total=total+grade;

iftgrade>=60)count++;

}

}

printf("Gradeaverage=%.2f\nn,total/n);

printfi(nNumberofpass=%d\nn,count);

return0;

}

练习3-4输入15个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

解答:

#include<stdio.h>

intmain(void)

{

inti;

intblank,digit,letter,other;

charc;

blank=digit=letter=other=0;

fbr(i=l;i<=15;i-l-+){

c=getchar();

if(c>-ar&&c<=*z*|c>-A'&&cv=2)

letter++;

elseif(c>='0'&&cv=9)

digit-H-;

elseif(c=*,||c=,\n,)

blank++;

else

other++;

)

printf(',letter=%d,blank=%d,digit=%d,other=%d\nn,letter,blank,digit,other);

return0;

)

练习3-5输入一个年份year,推断该年是否为闰年。推断闰年的条件是:能被4整除但

不能被100整除,或者能被400整除。

解答:

#include<stdio.h>

intmain(void)

{

intyear;

printfCTnteryear:'*);

scanf(”%d”,&year);

if((year%4=0&&year%100!=0)||year%400=0)

printf(,'Itisaleapyear\nH);

else

printff'Itisnotaleapyear\n”);

return0;

)

练习3-6在例3-8程序中,假如把switch语句中全部的break都去掉,运行结果会变更

吗?假如有变更,输出什么?为什么?

解咨

假如去掉全部的break语句,运行结果会变更,输出price=0.0,因为不管choice值与

其中某个常量表达式相等,当去掉break语句时,其后的全部语句段都将运行,故每次都将

执行到price=0.0语句为止。

练习3-7输入五级制成果(A—E),输出相应的百分制成果(0-100)区间,要求运用switch

语句。例如,输入A,输出90-100。五级制成果对应的百分制成果区间为:A(90-100)、

B(80-89)、C(70-79)、D(60-69)和E(0-59)。

解答:

#include<stdio.h>

intmain(void)

charch;

printffInputGrade:”);

ch=getchar();

switch(ch){

case'A':printf("%c对应的百分制区间是90-100\nn,ch);break;

caseB:printff%c对应的百分制区间是80-89\n',,ch);break;

case'C*:printf(n%c对应的百分制区间是70-79\n'\ch);break;

case'D':printf("%c对应的百分制区间是60-69\nn,ch);break;

caseE:printf(”%c对应的百分制区间是0-59\n”,ch);break;

default:printf(nInvalidinput\nH);

)

return0;

}

练习3-8查询水果的单价。有4种水果,苹果(apples)、梨(pears)、桔子(oranges)和葡

萄(gr叩es),单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤和10.20元/公斤。在屏

幕上显示以下菜单(编号和选项),用户可以连续查询水果的单价,当查询次数超过5次时,

自动退出查询;不到5次时,用户可以选择退出。当用户输入编号1〜4,显示相应水果的

单价(保留两位小数);输入0,退出查询;输入其他编号,显示价格为0o

[1]apples

[2]pears

[3]oranges

[4]grapes

[0]Exit

解答:

#include<stdio.h>

intmain(void)

{

intri;

intchoice;

floatprice;

for(ri=l;ri<=5;ri++){

printf("[l]apples\n");

printf(n[2]pears\nM);

printf(n[3]oranges\nn);

printf(”[4]grapes\nn);

printf(M[0]Exit\nH);

scanf(u%dn,&choice);

if(choice=0)

break;

else{

switch(choice){

case1:price=3.00;break;

case2:price=2.50;break;

case3:price=4.10;break;

case4:price=10.20;break;

default:price=0;

}

printf(nprice=%0.2f\nu,price);

return0;

}

练习3-9请读者重新编写例3-4的程序,要求运用嵌套的if-else语句,并上机运行。

解答:

#include<stdio.h>

intmain(void)

{

doublex,y;

scanfC%If',&x);

if(x>15){

y=2.5*x-10.5;

)

else{

if(x<0)

y=o;

else

y=4*x/3;

}

printf(“«%.2f)=%.2f\n”,x,y);

return0;

练习3-10在例3-12中,改写if语句前,y=x+l;和y=x+2;两条语句的执行条件是什么?

改写后呢?

解答:

改写前:y=x+l的执行条件是x<l;y=x+2的执行条件是l<=x<2»

改写后:y=x+l的执行条件是x<l;y=x+2的执行条件是2<=x。

3.3.2习题参考答案

选择题

1.能正确表示逻辑关系:a>10或aW0|i的C语言表达式是D。

A.a>=10ora<=0B.a>=0|a<=10

C.a>=10&&a<=0D.a>=10||a<=0

2.在嵌套运用if语句时,C语言规定else总是C。

A.和之前与其具有相同缩进位置的if配对B.和之前与其最近的if配对

C.和之前与其最近的且不带else的if配对D.和之前的第一个if配对

3.下列叙述中正确的是Do

A.break语句只能用于switch语句

B.在switch语句中必需运用default

C.break语句必需与switch语句中的case配对运用

D.在switch语句中,不愿定运用break语句

fI>

x0

=I=

4.有一函数y〈0X0,以下程序段中错误的是C。

11-1<

x0

A.if(x>O)y=1;B.y=0;

else\f(x==0)y=0;if(x>O)y=l;

elsey=-1;elseif(x<0)y=-1;

C.y=0;D.if(x>=0)

if(x>=0);if(x>0)y=1;

if(x>0)y=1;elsey=0;

elsey=-1;elsey=-1;

5.下列程序段的输出结果是一Co

intmain(void)

(

inta=2,b=-l,c=2;

if(a<b)

if(b<0)c=0;

elsec++;

printf(H%d\nH,c);

return0;

}

A.0B.1C.2

D.3

6.下列程序段的输出结果是一Ao

intmain(void)

(

intx=l,a=0,b=0;

switch(x){

case0:b++;

case1:a++

case2:a++;b++;

)

printf(',a=%d,b=%d\n,,,a,b);

return0;

)

A.a=2,b=lB.a=l,b=lC.a=1,b=0

D.a=2,b=2

7.在执行以下程序时,为使输出结果为:t=4,则给a和b输入的值应满足的条件是

CO

intmain(void)

inta,b,s,t;

scanf(u%d,%dn,&a,&b);

s=1;t=1;

ififa>0)s=s+1;

iRa>b)t=s+1;

elseif(a=b)t=5;

elset=2*s;

printf(nt=%d\nn,t);

return0;

)

A.a>bB.a<b<0D.0>a>b

C.0<a<b

二.填空题

1.表示条件:10<x<100或者x<0的C语言表达式是(x>10&&xvl00)|(xvQ)。

2.若有intx;请以最简洁的形式写出与逻辑表达式!x等价的C语言关系表达式x=0

3.已知a=7.5,b=2,c=3.6,则表达式a>b&&c>a||a<b&&!c>b的值为0。

4.若从键盘输入58,则以下程序段的输出结果是一585858。

intmain(void)

(

inta;

scanf(3%d”,&a);

if(a>50)printfC%d”,a);

if(a>40)printf("%d”,a);

if(a>30)printfT%攻a);

return0;

)

5.下列程序运行的输出结果是9o

intmain(void)

(

charc=b;

intk=4;

switch(c){

case'a':k=k+1;break;

case'b':k=k+2;

case'c':k=k+3;

)

printf("%d\n”,k);

return0;

三.程序设计题

1.输入三角形的3条边a,b,c,假如能构成一个三角形,输出面积area和周长perimeter(保

留2位小数);否则,输出“Thesesidesdonotcorrespondtoavalidtriangle”。

在一个三角形中,随意两边之和大于第三边。三角形面积计算公式:

area='—,其中s=(a+b+c)/2

向田s(s-a)(s-b)(sc

解答:)

#include<stdio.h>

#include<math.h>

intmain(void)

{

inta,b,c;

doublearea,s,perimeter;

scanf(n%d%d%d",&a,&b,&c);

if((a+b>c)&&(b+c>a)&&(a+c>b)){

perimeter=a+b+c;

s=(a+b+c)*1.0/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

,n

printf('area=%.2flperimeter=%.2f\n,area,perimeter);

}

else

printfC'Thesesidesdonotcorrespondtoavalidtriangle\nu);

return0;

)

2.2023年起先实行新个人所得税法,要求输入月薪salary,输出应交的个人所得税tax。新

税法方案如下:

tax=rate*(salary-3500)-deduction

当salaryW3500时,rate=0>deduction=0

当3500<salary<5000时,rate=3%>deduction=0

当5000<salary<8000时、rate=10%>deduction=105

当8000<salary<12500时,rate=20%、deduction=555

当12500<salary<38500时,rate=25%、deduction=1005

当38500<salary<58500时,rate=30%^deduction=2755

当58500<salary<83500时,rate=35%、deduction=5505

当83500<salary时,rate=45%>deduction=13505

解答:

#include<stdio.h>

intmain(void)

{

intdecution;

doublerate,salary,tax;

printf("Enterthesalary:'*);

scanf(,,%lf,,&salary);

if(salary<=3500){rate=0;decution=0;}

elseif(salary<=5000){rate=0.03;decution=0;}

elseif(salary<=8000){rate=0.1;decution=105;}

elseif(salary<=12500){rate=0.2;decution=555;}

elseif(salary<=38500){rate=0.25;decution=1005;}

elseif(salary<=58500){rate=0.3;decution=2755;}

elseif(salary<=83500){rate=O.35;decution=5505;}

else{rate=0.45;decution=13505;}

tax=rate*(salary-3500)-decution;

printf(Htax=%.0f\nn,tax);

return0;

)

3.某城市一般出租车收费标准如下:“起步里程3公里,起步费10元;超起步里程后10

公里内,每公里租费2元,超过10公里以上的部分加收50%的回空补贴费,即每公里租费

3元。营运过程中,因路阻及乘客要求临时停车的,每5分钟按1公里租费计收。运价计费

尾数四舍五入,保留到元。编写程序,输入行驶里程(公里)与等待时间(分钟),计算并输

出乘客应支付的车费(元)。

解答:

#include<stdio.h>

intmain(void)

{

intmile,time,cost;

scanf(,,%d%d,',&mile,&ti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论