C语言课后习题答案解析Word文件下载.docx
- 文档编号:783480
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:96
- 大小:36.62KB
C语言课后习题答案解析Word文件下载.docx
《C语言课后习题答案解析Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言课后习题答案解析Word文件下载.docx(96页珍藏版)》请在冰点文库上搜索。
r为年增长率,n为年数,p为与现在相比的倍数。
math.h>
floatp,r,n;
r=0.1;
n=10;
p=pow(1+r,n);
p=%f\n"
p);
2、存款利息计算。
有1000元,想存5年,可按以下5种办法存:
(1)一次存5年期。
(2)先存2年期,到期后将本息在存3年期。
(3)先存3年期,到期后将本息在存2年期。
(4)先存1年期,到期后将本息在存1年期,连续存5次。
(5)存活期存款。
活期利息每一季度结算一次。
2007年12月的银行存款利息如下:
1年定期存款利息为4.14%;
2年定期存款利息为4.68%;
3年定期存款利息为5.4%;
5年定期存款利息为5.85%;
活期存款利息为0.27%(活期利息每一季度结算一次。
)
如果r为年利率,n为存款年数,则计算本息和的公式为
1年期本息和:
P=1000*(1+r);
n年期本息和:
P=1000*(1+n*r);
存n次1年期的本息和:
P=1000*(1+r)^n;
存活期本息和:
P=1000*(1+r/4)^4n。
说明:
是一个季度的本息和。
floatr5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;
r5=0.0585;
r3=0.054;
r2=0.0468;
r1=0.0414;
r0=0.0072;
p=1000;
p1=p*((1+r5)*5);
//一次存5年期
p2=p*(1+2*r2)*(1+3*r3);
//先存2年期,到期后将本息再存3年期
p3=p*(1+3*r3)*(1+2*r2);
//先存3年期,到期后将本息再存2年期
p4=p*pow(1+r1,5);
//存1年期,到期后将本息存再存1年期,连续存5次
p5=p*pow(1+r0/4,4*5);
//存活期存款。
活期利息每一季度结算一次
p1=%f\n"
p1);
//输出按第1方案得到的本息和
p2=%f\n"
p2);
//输出按第2方案得到的本息和
p3=%f\n"
p3);
//输出按第3方案得到的本息和
p4=%f\n"
p4);
//输出按第4方案得到的本息和
p5=%f\n"
p5);
//输出按第5方案得到的本息和
3、购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。
设d为300000元,p为6000元,r为1%。
对求得的月份取小数点后一位,对第2位按四舍五入处理。
提示:
计算还请月数m的公式如下:
m=[logp–log(p-d*r)]/log(1+r)
可以讲公式该写为
m={log[p/(p–d*r)]}/log(1+r)
C的库函数中有求对数的函数log10,是求以10为底的对数,log(p)表示logp。
floatd=300000,p=6000,r=0.01,m;
m=log10(p/(p-d*r))/log10(1+r);
m=%6.2f\n"
m);
6、请编将“China”,编译成密码,密码规律是:
用原有的字母后面第4个字母代替原来的字母。
charc1='
C'
c2='
h'
c3='
i'
c4='
n'
c5='
a'
;
c1=c1+4;
c2=c2+4;
c3=c3+4;
c4=c4+4;
c5=c5+4;
passworis%c%c%c%c%c\n"
c1,c2,c3,c4,c5);
7、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱表面积、圆柱体积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
请编程序。
intmain()
floath,r,l,s,sq,vq,vz;
floatpi=3.141526;
请输入圆半径r,圆柱高h∶"
%f,%f"
r,&
h);
//要求输入圆半径r和圆柱高h
l=2*pi*r;
//计算圆周长l
s=r*r*pi;
//计算圆面积s
sq=4*pi*r*r;
//计算圆球表面积sq
vq=3.0/4.0*pi*r*r*r;
//计算圆球体积vq
vz=pi*r*r*h;
//计算圆柱体积vz
圆周长为:
l=%6.2f\n"
l);
圆面积为:
s=%6.2f\n"
s);
圆球表面积为:
sq=%6.2f\n"
sq);
圆球体积为:
v=%6.2f\n"
vq);
圆柱体积为:
vz=%6.2f\n"
vz);
第四章
4、有3个正整数a,b,c,有键盘输入,输出其中最大的数。
inta,b,c;
请输入三个整数:
"
%d,%d,%d"
if(a<
if(b<
printf("
max=%d\n"
c);
else
b);
elseif(a<
a);
return0;
inta,b,c,temp,max;
temp=(a>
b)?
/*将a和b中的大者存入temp中*/
max=(temp>
c)?
temp:
/*将a和b中的大者与c比较,取最大者*/
三个整数的最大数是%d\n"
5、从键盘输入一个小于1000的正整数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。
要求在输入数据后先对其检查是否为小于1000的正数。
若不是,则要求从新输入。
#defineM1000
inti,k;
请输入一个小于%d的整数i:
M);
%d"
i);
while(i>
M)
{
printf("
输入的数不符合要求,请重新输入一个小于%d的整数i:
scanf("
}
k=sqrt(i);
%d的平方根的整数部分是:
%d\n"
i,k);
6、有一个函数:
x(x<
1)
y=2*x-1(1<
=x<
10)
3*x–11(x>
=10)
写程序,输入x的值,输出y相应的值。
·
intx,y;
输入x:
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=%d,y=2*x-1=%d\n"
x,y);
else/*x>
=10*/
y=3*x-11;
x=%d,y=3*x-11=%d\n"
7、有一个函数:
-1(x<
0)
Y=0(x=0)
1(x>
intx,y;
pleaseenterx:
y=0;
if(x>
=0)
0)y=1;
elsey=-1;
printf("
x=%d,y=%d\n"
return0;
8、给出一百分制成绩,要求输出成绩等级‘A’,’B’,’C’,’D’,’E’。
90分以上为‘A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。
floatscore;
chargrade;
请输入学生成绩:
%f"
score);
while(score>
100||score<
\n输入有误,请重输"
switch((int)(score/10))
case10:
case9:
grade='
A'
break;
case8:
B'
case7:
case6:
D'
case5:
case4:
case3:
case2:
case1:
case0:
E'
成绩是%5.1f,相应的等级是%c\n"
score,grade);
9、给出一个不多于5位数的正整数;
(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆顺序输出各位数,例如原有数为123,应输出321.
intnum,indiv,ten,hundred,thousand,ten_thousand,place;
//分别代表个位,十位,百位,千位,万位和位数
请输入一个整数(0-99999):
num);
if(num>
9999)
place=5;
elseif(num>
999)
place=4;
99)
place=3;
9)
place=2;
elseplace=1;
位数:
place);
每位数字为:
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
\n反序数字为:
switch(place)
%d%d%d%d%d\n"
indiv,ten,hundred,thousand,ten_thousand);
break;
%d%d%d%d\n"
indiv,ten,hundred,thousand);
%d%d%d\n"
indiv,ten,hundred);
%d%d\n"
indiv,ten);
indiv);
11、输入4个整数,要求按由小到大的顺序输出。
intt,a,b,c,d;
请输入四个数:
%d%d%d%d"
c,&
d);
a=%d,b=%d,c=%d,d=%d\n"
a,b,c,d);
if(a>
{t=a;
a=b;
b=t;
a=c;
c=t;
d)
a=d;
d=t;
if(b>
{t=b;
b=c;
b=d;
if(c>
{t=c;
c=d;
排序结果如下:
\n"
%d%d%d%d\n"
a,b,c,d);
12、有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1,这4个圆塔高位10cm,塔以外无建筑物。
求该点的建筑物高度(塔外的高度为零)。
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):
x,&
y);
d1=(x-x4)*(x-x4)+(y-y4)*(y-y4);
/*求该点到各中心点距离*/
d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);
d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);
d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);
if(d1>
1&
&
d2>
d3>
d4>
1)h=0;
/*判断该点是否在塔外*/
该点高度为%d\n"
h);
第五章
例5.7用pi/4=1-1/3+1/5-1/7+……公式求pi近似值,直到发现某一项的绝对值小于10^6为止。
stdio.h用>
//程序中用到数学函数fabs,应包含头文件math.n
intsign=1,count=0;
//sign用来表示数值的符号,count用来统计循环次数
doublepi=0.0,n=1.0,term=1.0;
//pi开始代表多项式的值,最后代表π的值,n代表分母,term代表当前项的值
while(fabs(term)>
=1e-8)//检查当前项term的绝对值是否大于或等于10的(-6)次方
pi=pi+term;
//把当前项term累加到pi中
n=n+2;
//n+2是下一项的分母
sign=-sign;
//sign代表符号,下一项的符号与上一项符号相反
term=sign/n;
//求出下一项的值term
count++;
//count累加1
pi=pi*4;
//多项式的和pi乘以4,才是π的近似值
pi=%10.8f\n"
pi);
//输出π的近似值
count=%d\n"
count);
//输出循环次数
3、输入两个正整数m和n,求其最大公约数和最小公倍数。
intp,r,n,m,temp;
请输入两个正整数n,m:
%d,%d,"
n,&
m);
if(n<
m)
temp=n;
n=m;
m=temp;
p=n*m;
while(m!
r=n%m;
m=r;
它们的最大公约数为:
n);
它们的最小公约数为:
p/n);
4、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
charc;
intletters=0,space=0,digit=0,other=0;
请输入一行字符:
while((c=getchar())!
='
\n'
&
c<
z'
||c>
Z'
letters++;
elseif(c=='
'
space++;
elseif(c>
0'
9'
digit++;
else
other++;
字母数:
%d\n空格数:
%d\n数字数:
%d\n其它字符数:
letters,space,digit,other);
5、求Sn=a+aa+aaa+……+aa……a之值,其中a是一个数字,n表示a的位数。
n由键盘输入。
inta,n,i=1,sn=0,tn=0;
a,n=:
%d,%d"
n);
while(i<
=n)
tn=tn+a;
/*赋值后的tn为i个a组成数的值*/
sn=sn+tn;
/*赋值后的sn为多项式前i项之和*/
a=a*10;
++i;
a+aa+aaa+...=%d\n"
sn);
6、求和:
1!
+2!
+3!
+……+20!
。
doubles=0,t=1;
intn;
for(n=1;
n<
=20;
n++)
t=t*n;
s=s+t;
+...+20!
=%22.15e\n"
7、求1+2+3+……+100+1+2^2+3^2+4^2+……+50^2+1+1/2+1/3+1/4+……+1/10。
intn1=100,n2=50,n3=10;
doublek,s1=0,s2=0,s3=0;
for(k=1;
k<
=n1;
k++)/*计算1到100的和*/
{s1=s1+k;
=n2;
k++)/*计算1到50各数的平方和*/
{s2=s2+k*k;
=n3;
k++)/*计算1到10的各倒数和*/
{s3=s3+1/k;
sum=%15.6f\n"
s1+s2+s3);
8、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如153是一位水仙花数,因为153=13+53+33。
inti,j,k,n;
parcissusnumbersare"
for(n=100;
1000;
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
%d"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课后 习题 答案 解析