C语言第二版谭浩强习题解答Word格式文档下载.docx
- 文档编号:18234681
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:32
- 大小:24.31KB
C语言第二版谭浩强习题解答Word格式文档下载.docx
《C语言第二版谭浩强习题解答Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言第二版谭浩强习题解答Word格式文档下载.docx(32页珍藏版)》请在冰豆网上搜索。
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf(“密码是%c%c%c%c%c\n”,c1,c2,c3,c4,c5);
3.8可以。
因为在可输出的字符范围内,用整型和用字符型作用相同。
3.9(1)2.5(2)3.5
3.10结果为:
9,11,9,10
3.12
(1)24 (2)10 (3)60
(4)0 (5)0 (6)0
第三章
第四章要点:
1、C语句分类
2、赋值语句的用法
3、数据输入输出的语句的用法。
特别注意格式输入、输出语句的用法,要看到语句能写出输入、输出结果,给出输入、输出结果能写出语句。
4、顺序程序的概念、结构。
4.3不把输入输出作为C语言提供的语句的目的是使C语言编译系统简单,因为将语句翻译成二进制的指令是在编译阶段完成的,没有输入输出语句就是可以避免在编译阶段处理与硬件有关的问题,可以使编译系统简化,而且通用性强,可移植性好,对各种型号的计算机都适用,便于在各种计算机上实现。
4.4
{inta,b,c;
longintu,n;
floatx,y,z;
charc1,c2;
a=3;
b=4;
c=5;
x=1.2;
y=2.4;
z=-3.6;
u=51274;
n=128765;
c1=’a’;
c2=’b’;
printf(“\n”);
printf(“a=%2db=%2dc=%2d\n”,a,b,c);
printf(“x=%8.6f,y=%8.6f,z=%9.6f\n”,x,y,z);
printf(“x+y=%5.2fy+z=%5.2fz+x=%5.2f\n”,x+y,y+z,,z+x);
printf(“u=%6ldn=%9ld\n”,u,n);
printf(“c1=’%c’or%d(ASCII)\n”,c1,c1);
printf(“c2=’%c’or%d(ASCII)\n”,c2,c2);
4.5
57
□□5□□7
67.856400,-789.124000
67.856400□,-789.124000
□□□67.86,□-789.12,67.8564,-789.1240,67.856400,-789.124000
6.785640e+01,□-7.89e+02
A,65,101,41
1234567,4553207,d687
65535,177777,ffff,-1
COMPUTER,□□COM
4.8
{floatpi,h,r,l,s,sq,vq,vz;
pi=3.14
printf(inputr,h\n”);
scanf(“%f,%f”,&
r,&
h);
l=2*pi*r;
s=r*r*pi;
sq=4*pi*r*r;
vq=3.0/4.0*pi*r*r*r;
z=pi*r*r*h;
printf(“l=%6.2f\n”,l);
printf(“s=%6.2f\n”,s);
printf(“sq=%6.2f\n”,sq);
printf(“sv=%6.2f\n”,sv);
printf(“sz=%6.2f\n”,sz);
4.9
{floatc,f;
printf(“请输入一个华氏温度:
\n”);
scanf(“%f”,&
f);
c=(5.0/9.0)*(f-32);
printf(“摄氏温度为:
%5.2\n”,c);
4.10
#include“stdio.h”
{charc1,c2;
printf(“inputc1,c2\n”);
scanf(%c,%c”,&
c1,&
c2);
putchar(c1);
putchar(c2);
printf(“%c%c\n”,c1,c2);
第5章
第五章要点:
1、关系运算符和关系运算式;
2、逻辑运算符和逻辑运算式;
3、IF语句的三种形式;
4、条件运算符;
5、switch语句的用法;
5.3
(1)0
(2)1
(3)1
(4)0
(5)1
5.4
{inta,b,c,t,max;
printf(“inputa,b,c:
”);
scanf(“%d,%d,%d”,&
t=(a>
b)?
a:
b;
max=(t>
c)?
t:
c;
printf(“max=%d”,max);
}
5.5
{floatx,y;
printf(“inputx:
x);
if(x<
1)
y=x;
elseif(x<
10)
y=2*x-1;
else
y=3*x-11;
printf(“x=%f,y=%f\n”,x,y);
5.6
{intscore,t,logic;
chargrade;
logie=1;
while(logic)
{printf(“inputscore:
scanf(“%d”,&
score);
if((score>
100||score<
0))printf(“\error”);
elselogic=0;
if(score==100)t=9;
elset=(int)(score/10);
switch(t)
{case9:
grade=’A’;
break;
case8:
grade=’B’;
case7:
grade=’C’;
case6:
grade=’D’;
case5:
case4:
case3:
case2:
case1:
case0:
grade=’E’;
}
5.8
(1)用if语句
{longi;
floatbonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1;
/*利润为10万元时的奖金*/
bon2=bon1+100000*0.075;
/*利润为20万元时的奖金*/
bon4=bon2+200000*0.05;
/*利润为40万元时的奖金*/
bon6=bon4+200000*0.03;
/*利润为60万元时的奖金*/
bon10=bon6+40000*0.015;
/*利润为100万元时的奖金*/
scanf(%ld”,&
i);
if(i<
1e5)bonus=i*0.1;
elseif(i<
=2e5)
bonus=bon1+(i-100000)*0.075;
elseif(I<
=4e5)
bonus=bon2+(i-200000)*0.05;
=6e5)
bonus=bon4+(i-400000)*0.03;
=1e6)
bonus=bon6+(i-600000)*0.015;
else
bonus=bon10+(i-100000)*0.01;
printf(“bonus=%10.2f”,bonus);
(2)用switch编写
floatt,bonus,bon1,bon2,bon4,bon6,bon10;
intc;
c=i/100000;
if(c>
10)c=10;
switch(c)
{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;
case9:
bonus=bon6+(i-600000)*0.015;
case10:
bonus=bon10+(i-1000000)*0.01;
5.9
{intt,a,b,c,d;
scanf(“%d,%d,%d,%d”,&
c,&
d);
printf(“\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>
c){t=b;
b=c;
d){t=b;
b=d;
if(c>
d){t=c;
c=d;
printf(“%d%d%d%d\n”,a,b,c,d);
5.10
{inth=10;
floatx,y,x0=2,y0=2,d1,d2,d3,d4;
printf(“inputx,y:
scanf(“%f,%f”,&
x,&
y);
d1=(x-x0)*(x-x0)+(y-y0)*(y-y0);
d2=(x-x0)*(x-x0)+(y+y0)*(y+y0);
d3=(x+x0)*(x+x0)+(y-y0)*(y-y0);
d4=(x+x0)*(x+x0)+(y+y0)*(y+y0);
if(d1>
1&
&
d2>
d3>
d4>
1)h=0;
printf(“h=%d”,h)
第6章
第6章要点:
1、实现循环的语句。
2、几种循环的比较
3、读程序写结果。
常见问题的程序设计。
6.1
#include<
stdio.h>
{inta,b,n1,n2,t;
printf(“inputa,b\n”);
scanf(“%d,%d”,&
n1,&
n2);
if(n1>
n2){t=n1;
n1=n2;
n2=t;
a=n1;
b=n2;
while(b!
=0)
{t=a%b;
printf(“最大公约数为:
%d\n”,a);
printf(“最小公倍数为:
%d\n,n1*n2/a);
6.2
#include<
{charc;
intletters=0,space=0,digit=0,other=0;
printf(“输入一行字符:
while((c=getchar())!
=’\n’);
{
if(c>
=’a’&
c<
=’z’||c>
=’A’&
=’Z’)letters++;
elseif(c==’’)space++;
elseif(c>
=’0’&
=’9’)digit++;
elseother++;
printf(“l%d,%d,%d,%d\n”,letters,space,digit,other);
6.3
{inta,n,count=1,sn=0,tn=0;
scanf(“%d,%d,”,&
n);
printf(“a=%dn=%d\n”,a,n);
while(count<
=n)
{tn=tn+a;
sn=sn+tn;
a=a*10;
++count;
printf(“a+aa+aaa+…=%d\n”,sn);
6.4
{floatn,s=0,t=1;
for(n=1;
n<
=20;
n++)
{t=t*n;
s=s+t;
printf(“1!
+2!
+3!
+…+20!
=%e\n”,s);
6.5
{intn1=100,n2=50,n3=10;
floatk;
floats1=0,s2=0,s3=0;
for(k=1;
k<
=n1;
k++)s1=s1+k;
=n2;
k++)s2=s2+k*k;
=n3;
k++)s3=s3+1/k;
printf(“sum=%8.2\n”,s1+s2+s3);
6.6
{inti,j,n;
printf(“水仙花数是:
for(n=100;
1000;
{i=n/100;
j=n/10-i*10;
k=n%10;
If(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printf(“%d”,n);
6.7
{staticintk[10];
inti,j,n,s;
for(j=2;
j<
=1000;
j++)
{n=0;
s=j;
for(i=1;
i<
j;
i++)
if((j%i)==0)
{n++;
s=s-i;
k[n]=i;
if(s==0)
{printf(“%5d是个完数,它的因子是:
”,j);
=n;
i++)printf(“%d”,k[i]);
6.8
{floata=2,b=1,s=0;
intn,t,number=20;
=number;
{s=s+a/b;
t=a;
a=a+b;
b=t;
printf(“sum=%9.6f\n”,s);
6.9
{intn;
floatsn=100,hn=sn/2;
for(n=2;
=10,n++)
{sn=sn+2*hn;
hn=hn/2;
printf(“第10次落地时共经过:
%f米\n”,sn);
printf(“第10次反弹%f米\n”,hn);
6.10
{intday,x1,x2;
day=10;
x2=1;
while(day>
0)
x1=(x2+1)*2;
/*前1天的桃子数是当天桃子数加1后的2倍*/
x2=x1;
day--;
printf(“桃子总数=%d\n”,x1);
6.11
math.h>
{floata,x0,x1;
printf(“inputn\n”);
a);
x0=a/2;
x1=(x0+a/x0)/2;
do{
x0=x1;
}while(fabs(x0-x1)>
=1e-5);
printf(“%5.2f的平方根=%8.5f\n”,a,x1);
6.12
牛顿迭代法又称牛顿切线法。
它采用以下的方法求根:
先任意设定一个与其真实的根接近的值x0作为第一次近似根,由x0求出f(x0),过(x0,f(x0))点做f(x)的切线,交x轴于x1,把它作为第二次近似根;
再由x1求出f(x1),过(x1,f(x1))点做f(x)的切线,交x轴于x2,求出f(x2);
再作切线……如此继续下去,直到足够接近真正的根x*为止。
f’(x0)=f(x0)/(x1-x0)
x1=x0-f(x0)/f’(x0)
这就是牛顿迭代公式。
{floatx,x0,f,f1;
x=1.5;
do{
x0=x;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x=x0-f/f1;
}while(fabs(x-x0)>
printf(方程的根=%6.2f\n”,x);
6.13
二分法的思路如下:
先指定一个区间[x1,x2],如果函数f(x)在此区间是单调变化的,则可以根据f(x1)和f(x2)是否同号来确定方程f(x)=0在区间[x1,x2]内是否有一个实根。
若f(x1)和f(x2)不同号,则f(x)=0在[x1,x2]内必有一个(且只有一个)实根;
如果f(x1)和f(x2)同号,则则f(x)=0在[x1,x2]内无实根,要重新改变x1和x2的值。
当确定f(x)在[x1,x2]内有一个实根后,可采取二分法将[x1,x2]一分为二,再判断在哪一个小区间有实根。
如此不断进行下去,直到小区间足够小为止。
{floatx0,x1,x2,fx0,fx1,fx2;
x1,&
x2);
fx1=x1*((2*x1-4)*x1+3)-6;
fx2=x2*((2*x2-4)*x2+3)-6
}while(fx1*fx2>
0);
x0=(x1+x2)/2;
fx0=x0*((2*x0-4)*x0+3)-6;
if(fx0*fx1<
0){
x2=x0;
fx2=fx0;
else{
x1=x0;
fx1=fx0;
}while(fabs(fx0)>
printf(“x=%6.2f\n”,x0);
6.14
{inti,j,k;
=4;
i++)
{for(j=1;
=4-i;
j++)printf(“”);
for(k=1;
=2*i-1;
k++)printf(“*”);
printf(“\n”);
=3;
=i;
for(k=1;
=7-2*i;
6.15
开始设计程序时,并不知道A、B、C与X、Y、Z中的哪一个进行比赛,可以假设:
A与i比赛,B与j比赛,C与k比赛。
说明:
整个执行部分只有一个语句,所以只在语句的最后有一个分号。
{chari,j,k;
for(i=’X’;
=’Z’;
for(j=’X’;
j++)
if(i!
=j)
for(k=’X’;
k++)
if(i!
=k&
j!
=k)
if(i!
=’X’&
k!
=’Z’)
printf(“A--%c\tB--%c\tC--%c\n”,i,j,k);
第九章指针
9.1
{intn1,n2,n3;
int*p1,*p2,*p3;
n2,&
n3);
p1=&
n1;
p2=&
n2;
p3=&
n3;
n2)swap(p1,p2);
n3)swap(p1,p3);
if(n2>
n3)swap(p2,p3);
%d,%d,%d\n"
n1,n2,n3);
swap(p1,p2)
int*p1,*p2;
{intp;
p=*p1;
*p1=*p2;
*p2=p;
9.2
{char*str1[20],*str2[20],*str3[20];
charswap();
%s"
str1);
str2);
str3);
if(strcmp(str1,str2)>
0)swap(str1,str2);
if(strcmp(str1,str3)>
0)swap(str1,str3);
if(strcmp(str2,str3)>
0)swap(str2,str3);
%s\n%s\n%s\n"
str1,str2,str3);
charswap(p1,p2)
char*p1,*p2;
{char*p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
9.3
{intnum
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第二 版谭浩强 习题 解答