《C语言程序设计》课后习题答案第四版谭浩强

发布时间:   来源:文档文库   
字号:

C语言程序设计》课后习题答案第四版谭浩强
1章程序设计和C语言1
1.1什么是计算机程序11.24什么是计算机语言1
1.3C语言的发展及其特点31•也最简单的C语言程序5
1.4.1最简单的C语言程序举例614-2C语言程序的结构101.5运行C程序的步骤与方法121.2程序设计的任务14
1-5#inc1udeintmain(
{printf(H**********************H\n\n
printf(,rreturn0;}
VeryGood!\n\nu;
printf(u**************************\n
1-6^include1ntmain({inta.b,c.max:
printf(Hpleaseinputa,b,c:\nscanf(,r%d,%d,%dM,&a,&b,&c;max=a;if(maxmax=b;if(max
max=c;
printf('*The1argestnumberis%d\n”,max;return0:
}
2章算5—程序的灵魂16
2.1什么是算法162.心简单的算法举例17
2.3算法的特性21.4怎样表示一个算法22.4.1用自然语言表示算法22.4.2流程图表示算法22
2.4.3三种基本结构和改进的流程图26
2.4.4NS流程图表示算法28.4.5用伪代码表示算法312.4b.6用计算机语言表示算法322.5结构化程序设计方法34习题36b
第章最简单的C程序设计——顺序程序设汁373.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量39


C语言程序设计》课后习题答案第四版谭浩强
3.2.2数据类型42
323整型数据44324b字符型数据47b325浮点型数据49326b怎样确左常量的类


C语言程序设计》课后习题答案第四版谭浩强
51
3.2.7运算符和表达式523.3bC语句573b.3.1C语句的作用和分类573.3.生最基本的语句一语句593b.4数据的输入输出65b3.4.1输入输出举例653..2有关数据输入输岀的概念673.4.3printf函数输出数据683.4.4scanf函数输入数据753.4.5字符数据的输入输出78习题82
3-1#inc1ude#includcintmain({floatp,r,n;r=0.1n=10p=pow(l+r,n;
printf(Hp=%f\nM,p;return0;}
3-2-1
include
#includeintmain(
{floatr5,r3,r2,r1,r0,p,pl,p2,p3,p4,p5;p=1000;r5=0.0585r3=0.054;r2=0.0468;rl=0.0414:r0=0.0072;
p1=p*((l+r5*5;p2=p*(l+2*r2*(1+3*r3;
p3=p*(l+3*r3*(l+2*r2;p4=p*pow(1+rL5;5
p5=p*pow(1+r0/4,4*5;print//存活期存款。活期利息每一季度结算一次f(upl=%f\nM»p1printf(Mp2=%f\nH,p2;
printf(Mp3=%f\nH,p3
//输出按第1方案得到的本息和//输出按第2方案得到的本息和//输岀按第3方案得到的本息和

//一次存5年期
//先存2年期,到期后将本息再存3年期//先存3年期,到期后将本息再存2年期//1年期,到期后将本息存再存1年期,连续存


C语言程序设计》课后习题答案第四版谭浩强
printf(-p4=%t\nM,p4;Printf("p5=%f\n".p5;return0;
//输岀按第4方案得到的本息和〃输出按第5方案得到的本息和
3-2-2
#inc1ude#inc1udeintmain(
{doubler5,r3,r2,r1,r0,p,Pl,p2,p3,p4,p5p=l000;r5=0.0585:r3=O.O54;r2=0.0468;r1=0.0414r0=0.0072;

p1=p*((l+r5*5;
p2=p*(1+2*r2*(l+3*r3p3=
p*(1+3*r3*(l+2*r2;p4=p*pow(l+rl,5
5
p5=p*pow(l+r0/4,4*5;,f
//一次存5年期
//先存2年期,到期后将本息再存3年期
//先存3年期,到期后将本息再存2年期//1年期,到期后将本息存再存1年期,连续//存活期存款。活期利息每一季度结算一次//
输出按第1方案得到的本息和
//输出按第2方案得到的本息和//输岀按第3方案得到的本息和
//输出按第4方案得到的本息和
//输出按第5方案得到的本息和
Printf("pl=%f\n,plprintf(Hp2=%f\nH,p2;printf(Hp3=%f\nM,p3;
Hprintf(”p4=%f\n,p4;
M
printf(p5=%f\n”,p5;return0:
323
#inc1ude
#includeh>intmain(
{f1oatr5>r3,r2,rl,r0,p,p1,p2>p3,p4,p5;p=1000;
r5=0.0585;r3=0.054r2=0.0468r1=0.0414;r0=0.0072Pl=p*((l+r5*5;
p2=p*(1+22*(1+33;
//一次存5年期
//先存2年期,到期后将本息再存3年期



C语言程序设计》课后习题答案第四版谭浩强
p3=p*(l+3*r3*(14-2*r2;p4=p*pow(l+r1,5;5
p5=p*pow(1+r0/4,4*5;printf(Hpl=%10.21\nM,pl;print”p2=%102f\n”p2;
printf(Mp3=%10.2AnM,p3print
//存活期存款。活期利息每一季度结算一次
//输出按第1方案得到的本息和
//输岀按第2方案得到的本息和
//输出按第3方案得到的本息和
//先存3年期,到期后将本息再存2年期//1年期,到期后将本息存再存1年期,连续存
f(Mp4=%102f\nH,p4;printf(Hp5=%10//输出按第4方案得到的本息和
//输出按第5方案得到的本息和2f\nH,p5;return0;
33.
#inelude#includeintmain(
{fIoatd=3OOOOO.p=6000,r=0.01,m;m=loglO(p/(pd*r/log10(1+r;printf(Mm=%6.2f\n'\mreturn0;}
3-4
#inc1udeintmain({intcl,c2;c1=197;c2=198;
printfCc1=%c,c2=%c\nH,c1,c2;printf(*'c1=%d>c2=%d\nM,cl,c2;return0:}
3-5
#inc1ude
intmain(



C语言程序设计》课后习题答案第四版谭浩强
{inta.b;floatx,y;charcLc2;
scana=%db=%cT,&a,&b;scanff%eM&x.&y;scanf(11%c%cn,&cL&c2;
printf(Ha=%d,b=%d,x=%f,y=%f5cl=%c,c2=%c\nf\a,b,x,y,c1,c2;return0;}
3-6
#inc1udeintmain(
{charcl=,C\c2='h\c3=i\c4=,n\c5=,af;cl=cl+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;
printf("passworis%c%c%c%c%c\n",cl,c2,c3&4,c5;return0;}3-7
#ineludeintmain(
{f1oath,r,l,s,sq,vq,vz;floatpi=3.141526;printf("请输入圆半径r,圆柱h:”;scanf(M&&h;1=2*pi*rs=r*r*pi;sq=4*pi*r*r;vq=3.0/4.0*pi*r*rvz=pi*r*r*h;Printf(”圆周长为:printf("圆而积为:printf("圆球表面积为:printf("圆球体积为:printf("圆柱体积为:return0:
*r
1=%6.2f;s=%6.2f\nu,ssq=%62f\n”,sq;
v=%6.2f\nM,vq;vz=%6.2f\nM,vz;
//要求输入圆半径r和圆柱髙h//
计算圆周长1〃计算圆面S
//计算圆球表而积Sq〃计算圆球体积vq//计算圆柱体积vz


C语言程序设计》课后习题答案第四版谭浩强

3-8-1

#inc1ude
intmain({
intcLc2:
printf("请输入两个整数c1,c2:"
scanf(”d,%dH
&cl,&c2;printf("字符输岀结果:\n";

printf(M
%c,%c\n",cl,c2;printf(”按ASCII码输岀结果为:pr
intf(M%d,%d\nw
,cl,c2;return0}3-8-2
#include
intmain({
charc1,c2;inti1,i2;

printf("请输入两个字符cl,c2:";
scanf(M
%c,%c&cl,&c2;il=c1;i2=c2;
printf("按字符输岀结果:\n";printf(,r%c,%c\n”il,i2;printf("

按整数输出结果:\n";printf(M%d,%d\nM,cl,c2;
return0
3-8-3#ineludeh>
intmain(
{
charcl,c2intil,i2;

printf("请输入两个整数il,i2:
scanf(u%d,%dH
,&ib&i2;cl=il;
符变量
c2=i2
printf("按字符输出结果:\n"printf(N%c,%c\nnxLc2;
〃整型定义
//圧义字符型变量//泄义整型变量
〃賦值给整型变量
〃左义为字符型
//泄义为整型
〃将整数賦值给字


C语言程序设计》课后习题答案第四版谭浩强
printf(”按整数输出结果:\n”;printf(M%d,%d\ncl,c2;return0;
3-8
#inc1udeintmain(
{
charcl,c2;
printf("请输入两个字符cl,c2:cl=getchar(;c2=getchar(;
Printf("putchar语句输出结果为:”;putchar(c1;putchar(c2printf(H\nH;
printf("printf语句输岀结果为:”;printf(*'%c%c\nH,cl,c2return0}
4章选择结构程序设计854.5选择结构和条件判断85
4.2if语句实现选择结构87
4.2.1if语句处理选择结构举例87b4.2.2if语句的一般形式894.3b关系运算符和关系表达式91
4.3.1关系运算符及其优先次序914b.3.2关系表达式92
4.4逻辑运算符和逻借表达式924b.4.1逻借运算符及其优先次序934.4.爼逻辑表达式944.4.3逻借型变呈:96
4.5条件运算符和条件表达式97b4.6选择结构的嵌套99b4.7switch语句实现多分支选择结构104.8选择结构程序综合举例105b习题1114-4-1
#inc1udeintmain({intac;
printf(请输入三个整数:”:scanf(N%d,%d,%d“,&a.&b.&c;if(a
if(b
printf(Hmax=%d\ir\c;else
M


C语言程序设计》课后习题答案第四版谭浩强
printf("max=%d\n”b;elseif(a
printf(”max=%d\nM,c;e1se
printf(Mmax=%d\n\a;return0;}4-4-2
#includeintmain({intabcJemp.max:
printf("请输入三个整数:"scanf(M%6M%6H&a,&b.&c;temp=(a>b?a:b;*/
max=(temp>c?temp:c:*/
printf("三个整数的最大数是%d\n“,max;return0}
戶将ab中的大者与c比较,取最大者
/#ab中的大者存入temp
4-5-2
ttinc1ude#include#defineM1000intmain({inti,k;
printf("请输入一个小于%d的整数i",Mscanf(H%dH,&iwhile(i>M
{Printf("输入的数不符合要求,请重新输入一个小于%d的整数scanf(M%dJ&i;}
k=sqrt(i
Printf(”d的平方根的整数部分是:%d\n”,i,k;return0;}
4-5
#include#inelude#defineM1000


C语言程序设计》课后习题答案第四版谭浩强
intmain({inii,k;
printf(”请输入一个小于%4的整数i",Mscanf(M%dH,&i;if(i>M
{printf(”输入的数不符合要求,请重新输入一个小于%d的整数i:",卜I;scanf(M%di}
k=sqrt(i;
printf(“d的平方根的整数部分是:%d\n",i.k;return0}
4-6.
#includeintmain({intx,y;
Printf("输入x:";scanf(”dt&xif(x<1
/*x<1*/
{yx;
printf(Hx=%3d,y=x=%d\nM,x,y;}
elseif(x<10/*1=
{y=2*x-1
oprintf(Hx=%d,y=2*x-1=%d\nK,x,y;1sc
/*x>=10
*/
{y=3*x-ll;
Printf(Hx=%d,y=3*x-l1=%d\n\x,y;}
return0}
4-7-1
#includcintmain({
intx,y;
printf(Menterx:11;
*/


C语言程序设计》课后习题答案第四版谭浩强
seanf(H%d,r&xy=-i;if(x!=0if(x>0y=i;e1se
y=o
printf(Hx=%d,y=%d\nMyreturn0
}
4-7-2
#inc1udeintmain({intXty;
printf(Mpleasecnterx:”scanf(H%dM,&x
y=o
if(x>=0
if(x>0y=l;elsey=-l;
printf(Hx=%d,y=%d\n”x,y;return0}
4-8
#includeintmain({floatscore;chargrade
printf(*'请输入学生成绩:”;scanf(M&score;while(score>100lIscore<0o(printf(0\n输入有误,请重输";
*
Canf(H%f\&score;
switch((int(score/10{case10
case9gradeA':break;«case8:grade=B':break
case7:gradc=C;break;case6:grade=*D':break;


C语言程序设计》课后习题答案第四版谭浩强
case5:
case4:case3:mase2:
case1:ncascOgrade=,E,;
}
printf(”成绩是%5.1f,相应的等级是%c\nM,score,grade;return0:}
4-9
#include#inc1udcintmain({
intnum,indivjen,hundred.thousand,ten_thousand,place;位,十位,百位,千位,万位和位数printf(M请输入一个整数(0-99999:J;scanf(”d*'&numif(num>9999
place=5;
elseif(num>999
place=4;
elseif(num>99
place=3;
elseifmum>9
p1ace=2;
elseplace=1;
printf(”位数:%d\nM,place;printf("每位数字为:"ten_thousand=num/10000
thousand=(int(num-ten_thousand*10000/1000;
hundred=(int(num-ten_thousand*10000-1housand*1000/100;
ten=(int(num-ten_thousand*10000-thousand*1000hundrcd*100/10;indiv=(int(numtenJhousand*10000thousand*1000-hundred*100tcn*10;switch(place
{case5:printf(”d.%d,%d,%d,%d,\ten_thousandJhousand,hundredjenJndiv;printf(“\n反序数字为:“;
printf(”d%d%d%d%d\n”indiv,ten,hundredjhousand,ten_thousand;
break
//分别代表个


C语言程序设计》课后习题答案第四版谭浩强
case4:printf(H%d>%d,%d,%dH,thousand,hundredJenundivprintf("\n反序数字:";
printf("%d%d%d%d\nH,indiv,ten>hundred.thousand;break
case3:printf(H%d,%d,%dH,hundred,ten,indiv;Printf(•*\n反序数字为:"
printfC'%d%d%d\nM,indiv.ten,hundred;break;
case2printf(,'%d,%d,\ten»indiv;printf("\n反序数字为:";
printf(v%d%d\n",indiv,ten;break;
case1:printf
printf("\n反序数字为:"printfC1%d\nindiv;break;}return0;
indiv;
4-10-1
#includeintmain({inti;
doublebonus,bonhbon2.bon4,bon6,bonlObon1=100000*0.1;bon2=bonl+l00000*0.075;bon4=bon2+100000*0.05;bon6=bon4+100000*0.03:bon10=bon6+400000*0.015;printf("请输入利润i:";scanf(,,%d,\&iif(i<=100000bonus=i*0.1;elseif(i<=200000
bonus=bon1+(i100000*0.075;elseif(i<=400000bonus=bon2+(i-200000*0.05;e1seif(i<=600000
bonus=bon4+(i-400000*0.03;elseif(i<=1000000
bonus=bon6+(i-600000*0.015elsebonus=bonlO+(i-1000000*0.01
printf(奖金是:%10.2f\ir\bonus;return0
H


C语言程序设计》课后习题答案第四版谭浩强
4-10-2
#includeintmain({inti;
doublebonus,bonl,bon2.bon4,bon6,bon10;intbranchbonl=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*003;bon10=bon6+400000*0.015;Printf("请输入利润i:”;scanfC%d\&i;branch=i/100000;
if(branch>10branch=10;switch(branch
{case0:bonus=i*01;break;
casel:bonus=bon1+(i-100000*0.075;break;case2:
case3:bonus=bon2+(i-200000*0.05:break;case4:
case5:bonus=bon4+(i-400000*0.03break;case6:case7:case8
case9:bonus=bon6+(i600000*0.015;break;case10:bonus=bonl0+(i-1000000*0.01;
}
printf(”奖金是%10.2f\n",bonus;return0:
4-11
#includeintmain({int
b,c,d;
printf("请输入四个数:”;
scanf(*•%d,%d,%d,%d\&a,&b,&c.&d;
printf(na=%d,b=%dtc=%d,d=%d\n,r>a.b,c,d;if(a>b{t=aa=b;b=t;}if(a>c
{t=a;a=cc=t;}if(a>d


C语言程序设计》课后习题答案第四版谭浩强
{t=a;a=dd=t}if(b>c
{t=b;b=c;c=t;}if(b>d
{t=b;b=d:d=t:}if(c>d
{t=c;c=d;d=t;}
printf(”排序结果如下:\n”Printf(“d%d%d%d\nH.ab,c,d;return0;}
4-12#includeintmain({
inth=10;
floatxl=2,y1=2,x2=2,y2=2,x3=2,y3=2,x4=2,y4=-2,x,y,dI,d2.d3d4printf("请输入一个点(x,y:";scanf(H%L%f\&x,&y;
d1=(x-x4*(x_x4+(y-y4*(y-y4d2=(x-xl*(x-xl+(y-yl*(y-yl;d3=(x-x2*(xx2+(y-y2*(y-y2d4=(x-x3*(x-x3+(y-y3*(y-y3;if(d1>\&&d2>l&&d3>l*/
printf("该点髙度为d\n”,h;return0;
&&d4>1
h=0;
/*判断该点是否在塔外/*求该点到各中心点距离*/
5章循环结构程序设计1145b1为什么需要循环控制114
5.2whi1e语句实现循环115b5.3do...while语句实现循环117b5.4fo「语句实现循环12055b循环的嵌套124



C语言程序设计》课后习题答案第四版谭浩强
5.6几种循环的比较125b5.7改变循环执行的状态1255b7.1break语句提前终止循环126
5.7.2continue语句提前结束本次循环1275.7b.3break语句和continue语句的区1285.8b循环程序举例131习题1405-2
#inc1ude#includem8thnintinain(
intsign=l,count=O;统计循环次数doublepi=00,n=lO.term=l.0:代表分母,term代表当前项的值
while(fabs(term>=le810(-6次方
{
pi=pi+term;n=n+2;
sign=-sign;号相反term=sign/n:count4-+}
pi=pi*4;
printf(pi=%10.8f\ntpi;
printf(count=%d\ncount;return0;}5-3
#inc1udeintmain({
intp,r,n,m,temp;
printf("请输入两个正整数nm"scanf(Hif(n{
temp=n;
&n,&m
N
//程序中用到数学函数fabs,应包含头文
//sign用来表示数值的符号,count用来//pi开始代表多项式的值,最后代表nt的值,n//检查当前项terin的绝对值是否大于或等
//把当前项term累加到pi//n+2是下一项的分母
//sign代表符号,下一项的符号与上一项符//求出下一项的值term//count累加1
//多项式的和pi乘以4,才是兀的近似
//输出兀的近似值
//输出循环次数
n=m;m=temp;


C语言程序设计》课后习题答案第四版谭浩强
tn=tn+a/*赋值后的tnia组成数的值宅/
sn=sn+tn;/*赋值后的sn为多项式前i项之和*/a=a*10;
i}
printf(Ma+aa+aaa+...=%d\nH,sn;return0;
5-6
#inc1udeintmain(
{doub1es=0,t=1;intn;
for(n=l;n<=20;n++{t=t*n;s=s+t;}
printf(Ml!+2!+...+20!=%22.15e\n\s;return0;}5-7
#includeintmain({
intnl=100,n2=50,n3=10doublek,sl=0,s2=0,s3=0;for(k=1:k<=n1;k++/*计算1100的和*/
{sl=sl+k;}
for(k=1:k<=n2;k++/*计算150各数的平方和*/{s2=s2+k*kfor(k=1;k<=n3k++/*计算110的各倒数和*/{s3=s3+l/k}
printf(Hsum=%l5.6f\ns1+S2+S3return0;
5-8
}

C语言程序设计》课后习题答案第四版谭浩强
#inc1udeintmain({
inti,jkn;
printf(HparcissusnumbersareH;for(n=100n<1000;n{
i=n/l00;j=n/10-i*10;k=n%l0:
if(n==i*i*i+j*j*j+k*k*kprintf(H%dH,n;}
Printf(M\nM;return0;
5-9-1
#defineM1000#includcvstdio.h>intmain(
intkl9k2>k3,k4,k5,k6.k7,k8,k9,kl0;inti,an,s;for(a=
i++/*a2-1000之间的整数,检查它是否完数*/2;av=M;w
{n=0;/*n用来累计a的因子的个数*/s=a;

/牡义寻找范叶/
/*s用来存放尚未求岀的因子之和,开始时等于a*//*检査
if(a%i=0
i是否a的因子*/
/*如果ia的因子*/
/*n1,表示新找到一个因子*/
/*s减去已找到的因子,s的新值是尚未求出的因子之和*/
/*将找到的因子赋给kl...k9,k10*/
*/
for(i=l;ivai++
#n++;s=s-i;
switch(n{case1
kl=i;break;/*找岀的笫1个因子赋给k1

case2
k2=i;break;/*找出的笫2个因子赋给k2*/
acase3o
k3=i;break/*找出的笫3个因子赋给k3*/case4:
k4=ibreak/*找出的笫4个因子赋给k4*/
case5:
ok5=i;break;case6:
k6=i;break;/*找出的笫6个因子赋给k6
戶找出的笫5个因子赋给k5*/


C语言程序设计》课后习题答案第四版谭浩强
case7:
ocase9:
k9=i;break:
acase10:
klO=i;break;/*找出的笫10个因子赋给klO*/}

if(s==0{
printf(u%d,11sfactorsareaif(n>lprintf(H%d,%dM,k112
*/
if(n>2printf(”,d”,k3;
子,故应再输出一个因子*/
if(n>3printf(j%dn,k4;再输出一个因子*/
if(n>4printfC\%d*\k5;
if(n>5if(n>6if(n>7if(n>8
if(n>9
printf(H\n,r;

k7=i;break/*找出的笫7个因子賦给k7*/k8=i:break/*找岀的笫8个因子賦给k8*/
/*找出的笫9个因子赋给k9*/
case8
/*n>l表示a至少有2个因/*n>2表示至少有3个因/*n>3表示至少有4个因子,故应
/*以下类似*/

printfC,%d”,k6;printfk7;printf(,\%d,\k8;print©%d,k9;printf(\%d\k10
,
,H



}return0;}5-9-2
#includer>intmain({intm.s,i;
for(m=2;ni<1000m++
{s=0
for(i=l;i
if((m%i==0s=s+i;if(s==m
{printf("%djtsfactorsarem;for(i=1;i
oif(m%i==0printf(H%di;
printf(M\nM;


C语言程序设计》课后习题答案第四版谭浩强

}return0;
5-10
#includcvstdio.h>intmain({inti,n=20;
doublea=2>b=Ls=0,tfor(i=1i<=n;i++
{
s=s+a/b:t=a,a=a+b.b=t;
}
printf(Hsum=%l6.1Of\iT,sreturn0
5-11
#inc1udeintmain({
doublesn=l00,hn=sn/2;intn;
for(n=2;n<=10;n++
{
sn=sn+2*hn/*n次落地时共经过的米数*/hn=hn/2;/*}
printf(M10次落地时共经过%f\nJsn;printfC10次反弹%f^\nH,hnreturn0;}5-12
#includeintmain(
intday,xl,x2;day=9x2=1;
n次反跳高度*/

C语言程序设计》课后习题答案第四版谭浩强
while(day>0{xl=(x2+1*2;x2=xl;day;
}
printf(Mtotal=%d\nM,xl;return0;
/*1天的桃子数是第2天桃子数加1后的2.*/
5-13
#include#ineludeintmain(
{
floata,x0,x1;
printf(Henterapositivenumber:M;scanf("%f1,&a;x0=a/2;
x1=(x0+a/x0/2;do
{x0=xl;
xl=(x04-a/x0/2
}whi1e(fabs(x0-xl>=1e-5
printf(HThesquarerootof%52fis%85f\nM>a,x1;return0;
5-14
#include#includeintmain(
{doublex1,x0,f,fl;x1=1.5;do
{x0=xl;
f=((2*x0-4*x0+3*x0-6;fl=(6*xO-8*xO+3;xl=xO-f/fl;
}while(fabs(x1-xO>=1e5;
printf(MTherootofequationis%5.2f\n",x1return0;5-15


C语言程序设计》课后习题答案第四版谭浩强
#ineludeincludeintmain(
{floatxO.xl,x2,fx0,fxl,fx2;do
{printf(Menterxl&x2:Hscanf(H%f
&x2;
fxl=xl*((2*xl~4*xl+3-6fx2=x2*((2*x2-4*x2+3-6;}while(fxl*fx2>0;do
(x0=(xl+x2/2;
fxO=xO*((2*x0-4*x0+3-6if((fxO*fxl<0{x2=x0;fx2=fx0;}else{xl=xO;fxl=fxO;}
}while(fabs(fx0>=1e5;printf(Hx=%6.2f\nM,xOreturn0:
5-16
#inc1udeintmain({intij,k;
for(i=0;iV=3;i++
{for(j=0j<=2-i;jprintf(MH;for(k=0;k<=2*i;k++printf(;printf(n\n,r;}
for(i=0;iv=2;i++{for(j=0;j<=i;j++
printf(nfor(k=0;k<=4-2*i:k++
printf(Wprintf(H\nH;}
rcturn0;


C语言程序设计》课后习题答案第四版谭浩强
}5-17
#includeintmain({
Chari,j,k;
for(i=,x,;i<=,z,i++for(j=zx*jv-zlj++if(i!=j
for(k=x,;k<=,z,;k++if(i!=k&&j!=koif(i!='x‘&&k!
return0:}
&&k!=,z,
oprintf(”A-%c\nB一一%c\nC--%c\n,r,i,j.k;
/*a的对手:jb的对手;kc的对手*/
6章利用数组处理批疑数据1426.1怎样左义和引用一维数组1426.1.1怎样定义一维数组1436.1.2怎样引用一维数组元素144
6.1.3—维数组的初始化145b6.1.4—维数组程序举例1466.心怎样泄义和引用二维数1486b.2.1怎样泄义二维数组149
6.2.2怎样引用二维数组的元素1506..3二维数组的初始化1516.2.4二维数组程序举例1526.3b字符数组1546.3.1怎样定义字符数组154
6.3.2字符数组的初始化155b6.3.3怎样引用字符数组中的元素155b6.3.4字符串和字符串结朿标志1566.3.5b字符数组的输入输出1596.3.6b使用字符串处理函数161^6.3.7字符数组应用举例165b习题1686-1
#incIude#inc1udeintmain({inti,j,n,a[101];for(i=1;i<=100;i++
a[i]=i
a[1]=0;
for(i=2;i
for(j=i+lj<=l00j++{if(a[i]!=0&&a[j]!=0
if(a[j]%a[i]==O

a[j]=0


C语言程序设计》课后习题答案第四版谭浩强
}
printf(*'\n,r;
for(i=2.n=0;i<=100i++{if(a[i]!=0o{printf(H%5dH,a[i];
n++;
if(n==10
{Printf(M\nMn=0:}
}
printf(W;return0;}
62
#includeintmain(
{inti,j,min,temp,a[ll];printf(Menterdata:\nMfor(i=li<=10;i++{printf(ua[%d]=N,i;scanf(dS&a[i]}printf(An
printf("Theorgina1numbers:\nH;for(i=l;i<=10i++printfC%5d\a[i]printfCAn0for(i=1:i<=9;i++{min=i
for(j=i+1;j<=10;j++(a[min]>a[j]min=j
temp=a[i]a[i]=a[min];a[min]=temp;
}
printf(H\nThesortednumbers:\nM;for(i=1;i<=10i++Printf(H%5d\a[i];printf(M\nNreturn0;}


C语言程序设计》课后习题答案第四版谭浩强
6-3
#includeintmain({
inta[3][3],sum=0:intij;
printf(Henterdata\nM;for(i=0;i<3i++for(j=0;j<3;j++seanf(M%3dJ&a[i][j];
for(i=0;i<3i++sum=sum+a[i][i];printf(Msum=%6d\nn»sumreturn0;}6-4
#includeintmain(
{inta[lI]={lA6,9,13,16,19,28.40,100}inttempLtemp2,numbcrxnd,ij;printf(Harraya:\nu;for(i=0;i<10;i++printf(H%5da[i];printf(M\nH;printf(insertdata:N;scanf(”d&number;end=a[9];if(number>end
a10]=numbere1se
{for(i=0;i<10;i++{if(a[i]>nuniber
{templ=a[i];
m[i]=number:



C语言程序设计》课后习题答案第四版谭浩强
for(j=i+l;j<1l;j++{temp2=a[j];aa[j]=temp1:templ=temp2;
0
}
qbreak;
}
}
printf(MNowarraya:\n*';for(i=0;iprintfC%5d”,a[i]printf(W;return0;}
6-5
#include#defineN5intmain(
{inta[N],i,temp;printf(Menterarraya:\nH;
for(i=0;ii++scanfCW&a[i];printf(Harraya:\nMfor(i=0;i
printf(”4d\a[i];for(i=0iVN/2;i++{temp=a[i];a[i]=a[N-i-l];a[Ni1]=temp;}
printf(M\iiNow,arraya:\nM;for(i=0;ii++
priruf(M%4dJa[i];printf(H\nHreturn0
〃循环的作用是将对称的元素的值互换
6-6
#include#defineN10intmain({inti,j,a[N][N];


C语言程序设计》课后习题答案第四版谭浩强
for(i=0;ii++
{a[i][i]=la[i][0]=1;
}
for(i=2ij<=i-lj++
a[i][J]=a[i-l]U-l]+a
for(i=0;ii++{for(j=0;j<=i:j++
printf(M%6d\a[i][j];printf(H\nM}
printf(M\nMreturn0;
;
67
#includeintmain(
{inta[15][15],i,j,k.p,n;p=l;
while(p==l
{printf(Mentern(n=l-15:H;scanf(”cT,&n;if((n!=0&&(nv=15&&(n%2!=0p=0}
for(i=l;i<=n;i++
for(j=1j<=n;j++
a[[j]=0;
j=n/2+l;afor
=1
(k=2;k<=n*n;k++
j=J+1
if((in{i=i+2:
j=j-1:}else{if(i



C语言程序设计》课后习题答案第四版谭浩强
if(j>nj=1}
if(a[i][j]==0a[i][j]=k;eIse{i=i+2J=J-Ha[i][j]=k
}
for(i=l;i<=ni++
{for(j=lj<=n;j++printf(”5d”,a[i][j]printf(u\n°;}return0;
6-8
#include#defincN4
#defineM5intmain({
intiJ,k,a[N][M],max,maxj,flag;printf(Hp1easeinputmatrix:\nH;for(i=0ii++for(j=0jj++scanf("%dH,&a[i][j];for(i=0;ivN;i++{max=a[i][0];maxj=0;for(j=0;jif(a[i][j]>max
{max=a[i][j];maxj=j
}
f1ag=1
for(k=0:kif(max>a[k][maxj]
{f1ag=0
gl0*/
continue;}
if(flag
/*数组为45*/
/*输入数组*/
/*开始时假设a[i][0]最大*//*将列号0赋给maxj保存*/
/*找出第i行中的最大数*/
/*将本行的最大数存放在max*//*将最大数所在的列号存放在maxj*/
/*先假设是鞍点,以f1a呂为1代表*//*将最大数和其同列元素相比/
/*如果max不是同列最小,表示不是鞍点令fla
戶如果f1agl1表示是鞍点*/
/*输出鞍点的值和所在行列号*/
Hprintf("a[%d][%d]=%d\n",i,maxj,max;


C语言程序设计》课后习题答案第四版谭浩强
break;
}if(!flago
/*如果flag0表示鞍点不存在*/
printf(MItisnotexist!\nN;return0:
6-9
#inciudeh>#defineN15intmain(
{intijiumber.top.bottjnid.loca.a[N],f1ag=hsign;charc;printf(Henterdata:\n”seanf(u%d,\&a|O];i=l
while(i
{scanf(M%dM,&a[i];if(a[i]>=a[i-1]
i++
else
printf(11enterthisdataagain\nH}
printf(M\nu;for(i=0;iVN;i++Printf(H%5d\a[printf(v\nuwhi1e(f1ag
{printf("inputnumbertolookfor:”;scanf(H%dH,&number;sign=0;top=0;//top是査找区间的起始位置bott=N-1;
//bo11是査找区间的最末位置
if((numbera[N-1]//要査的数不在査找区间内loca=1://找不到
while((!sign&&(top<=bott
{mid=(bott+top/2;if(number=a[mid]{loca=mid;
printfCHasfound%d,itspositionis%d\numberjoca+1gsign=1;}
表示


C语言程序设计》课后习题答案第四版谭浩强
elseif(numberbott=mid1;elsetop=mid+1;

if(!signllloca==-1
printf(Mcannotfind%d\n-number;;printfCcontinuornot(Y/N?Hscanf(u%c",&c;if(c==,Nllc=,n,
afIag=0;}
return0;
6-10
#ineludeintinain(
{intitj>uppjow.dig,spa,oth;chartext[3][80J;
upp=1ow=dig=spa=oth=0;for(i=0:iV3;i++
{printf(0p1easeinputline%d:\ni+1;gets(text[i]
for(j=0j<80&&textfi][j]!=z\0‘j++{if(text(i][j]>=,A&&2Xt<=Tupp++;
elseif(text(i][j]&&text[i][j]<=fzrlow++;eIseif(text[idig++;
e1seif(text[i][j]==*•
aspa++;
else
aoth-
&&text[i][j]v=9
printK'Anuppercase:%d\n**,uppprintf(M1owercase:%d\nH,1ow;


C语言程序设计》课后习题答案第四版谭浩强
printf(Hdigitprintf(Hspace:%d\nH.dig
printf(*'otherreturn0;:%d\iiM.spa;}
%d\n\oth
6-11
#inc1udeintmain(
{chara[5]=「宅’;*,吆‘严}
intij,kcharspace:for(i=0;i<5:i++{printf(AnprintfCufor(j=l;j<=ij++
printf(u%cM,space;for(k=0k<5k+4-printf(M%c\a|k];
}
printf(H\nM;return0;}
6-12a-c
#includeintmain({intj,n;
charch[80],tran[80];
printf(HinputciphercodeHgets(ch;
printf(u\nciphercodej=0
whi1e(ch[j]!»\0f
{if((ch[j]>='A'&&(ch[j]V='Z'tran[j]=155-ch[j];
elseif((ch[j]>=^&&(ch[j]<=rz/tran[j]=219-ch[j];else
tran[j]=ch(j];j++
n=j
printf(H\noriginaltextH;for(j=O;jvn:j++putchar(tran[j];printf(M\n,r;
:%sM,ch;


C语言程序设计》课后习题答案第四版谭浩强
return0:
6-12b
includeintmain({intj,n:charch[80]
printf(”inputciphercode:\nM;gets(ch;
printf(H\nciphercode:%s\nch;j=O
whi1e(ch[j]!=VT
{if((ch[j]>=Ar&&(ch[j]v=Zch[j]=155ch[j];e1seif((ch[j]>=a,&&(ch[j]<=*zJCh[j]=219-ch[jjelse
ch[j]=ch[j]:j++}
n=j
printf(Horigina1text:*1;for(j=0jputchar(ch[j];printf(,,\nM;return0;
6-13
#ineludeintmain(
{charsl[80],s2[40]inti=Oj=0;
printf(Hinputstringl:"scanf(M%s'\slprintf(”Mputstring2H;scanfC%s\s2;while(si[if\0*i++whi1e(s2[j]!=,\Or
s1[i++]=s2[j++]si[订八0
printf(M\nThenewstringis:%s\nM,s1;return0;


C语言程序设计》课后习题答案第四版谭浩强
6-14
#includeintmain({inti,resu:
charsi[100],s2[100];
printf(Hinputstring1:Ngets(si;
Printf(H\ninputstring2:M;gets(s2;i=0;
while((s1[i]==s2[i]&&(s1[i]!=\0*i++;if[=\(r&&aresu=0else
resu=sl[i]-s2[i];
printf(u\nresuit:%dAnresureturn0;
s2[i]==l\0,
6-15
#include#includcintmain(
{charsl[80],s2[80]inti;
printf(Minputs2:Hscanf("%s*',s2
for(i=0:i<=strlen(s2;i++sl[i]=s2[i]printf(Msl:%s\n\s1;return0
7章用函数实现模块化程序设计1707.
1为什么要用函数1707b.2怎样泄义函数1727b.2.1为什么要左义函数172^7.2.2定义函数的方法1737.3调用函数1747.3.1函数调用的形式174
7.3.2函数调用时的数据传递175b7.3.3函数调用的过程1777.3.4函数的返回值1787b.4对被调用函数的声明和函数原型179
7.5函数的嵌套调用1827.6b函数的递归调用1847.7b数组作为函数参数1927b.7.1组元素作函数实参193
7.7.2数组划作函数参数1947.7.3多维数组名作函数参数197
7.8局部变量和全局变量1997b.8.1局部变量1997b.8.2全局变量200


C语言程序设计》课后习题答案第四版谭浩强
7.9变量的存储方式和生存期2047.9.1b动态存储方式与静态存储方式2047.9b.2局部变量的存储类別205
7.9.3全局变量的存储类别2087.9.4存储类别小结2127.10关于变量的声明和左义2147.11内部函数和外部函数215
7.11.1内部函数2157b.11.2外部函数215习题2187-1-1
#includeintmain({inthcf(int,int;intled(intint,int;intu,v,h,1
scanf(H%d,%d",&u,&v;h=hcf(u,v
printf(HHC.F=%d\nh1=1cd(u,v,h;printf(ML.C.D=%d\nH,l;return0;}
inthcf(intmintv{intt,r;if(v>u
{t=u;u=vv=t;}whi1e((r=u%v!=0
{u=v;v=r}return(v;
intIcd(intu,intv.inth{
return(u*v/h;
7-1-2
#includeh>intHeftLed;intmain(
{voidhef(int,intvoidlcd(int,int;


C语言程序设计》课后习题答案第四版谭浩强
intu.v;
scanf(%d,%dHt&u.&v;hcf(u,v;led(u,v;
printf(HH.C.F=%d\n,\Hcf;printf(”L.C.D=%d\n\Lcd;return0;
voidhcf(intu,intv{intt,r;if(v>u
{t=u;u=vv=t;}
whi1e((r=u%v!=0{u=v:v=r;}Hcf=v}
void1cd(intu,intv{
Lcd=u*v/Hcf;}
7-2
#inc1ude#inc1udefloatxl,x2,disc,p.qintmain(
{voidgreater_than_zero(float,float;voidequaljo_zero(float,float;voidsmailer,than_zcro(float,f1oat;floata,b,c;
printf("inputa>b,c:”scanf
&a,&b,&c;
printf(Hequation:%5.2f*x*x+%5.2f*x+%5.2f=0\nM,a.b,cprintf(Hroot:\nHif(disoO
{
greater_than_zero(a,b;
printf(ux1=%f\t\tx2=%f\nH,x1,x2;}
elseif(disc==0{equal,to_zero(a,b;
printf(11xl=%f\t\tx2=%f\nH,xl,x2}else
disc=b*b-4*a*c;


C语言程序设计》课后习题答案第四版谭浩强
{sma11erjhan_zero(a.b
printf(Mxl=%f+%fi\lx2=%f・%fi\nq,p,q;}return0}
voidgreater_than_zero(floata,floatb{xl=(b+sqrt(disc/(2*a;x2=(-b-sqrt(disc/(2*a}
voidequa1_to_zcro(fioata,f1oatb
{
x1=x2=(-b/(2*a}void{
p=-b/(2*a
q=sqrt(-disc/(2*a;for(i=0;i{for(j=0jj++
printf5d”,array[i]fj];printf(W}
return0;}
voidconvert(intarray[][3]{in(i,j」;
for(i=0ifor(j
=i+l;j{t=array[i][j];
array(i][j]=array[j][i];array[j][i]=t;}}
smaller_than_zero(floata,floatb
#inc1udch>#inc1udeintmain(
{voidinverse(charstr[]charstr[100]


C语言程序设计》课后习题答案第四版谭浩强
printf(Ninputstring:H;seanf(H%s\str;inverse(str;
printf(Ninversestring:%s\nstrreturn0;
voidinverse(charstr[]{chart;inti,j
for(i=0.j=strlen(str;i<(strlen(str/2;i++,j-{t=str[ij;str[i]=str[j-1];str[j-l]=t;
76
#inelude
intmain(
{voidconcatenate(charstringl[bcharstring2[]xharstring[];charsl[100],s2[100],s[l00]
printf("inputstring1:M;scanf(u%sN,si;
printf("inputstring2M;scanf(M%s'\s2;
concatenate(s1,s2,s
printf(H\nThenewstringis%s\nH,sreturn0;}
voidconcatenate(charstring1[J,charstring2[]xharstring[]{inti,j
for(i=O;stringl[i]!=,\0,:i++string[i]=stringl[i]for(j=O;string2[j]!=,\0,;j++
string[i+j]=string2|j];string[i+j]=0}
7-7


C语言程序设计》课后习题答案第四版谭浩强
#includcintmain(
{voidcpy(char[]>char[];charstr[80c[80]
printf(*'inputstringgets(str;cpy(str,c;printf(HThevowe1return0}
voidcpy(chars[],charc[]{inti,j;
for(i=0.j=0s[i]!W;i++
if(s[i]==alls(i]=='A‘IIs(i]=='elIs[i]=='E'IIs[i]==*i'lls[i]==Tlls[i]"oils[i]=OIIs[i]='uWs[i]==TT{cU]=s[i];
j++;
1ettersare:%s\n*\c;
eg\o\
7-8
#include#includeintmain({charstr[80];voidinsert(char[];printf(Minputfourdigitsseanf(M%s*\str;insert(str;return0}
voidinsert(charstr[]{inti
for(i=strlen(stri>0;i-
{str[2*i]=str[i];}
printf(Moutput\n%s\nH,str;}


C语言程序设计》课后习题答案第四版谭浩强
7-9
#include
intletterdigit,space,others:intmain(
{voidcount(char[]chartext[80];
printf(inputstring:\n;gets(textprintf(Hstring:";puts(textletter=0;digit=O;space=0;others=O;count(text
printf('An1etter:%d\ndigit:%d\nspace:%d\nothers:%d\nuJetter,digit,space,others;return0;
voidcount(charstr[]{inti;
for(i=0:str[i]!=A0';i++
if((str[i]>='a‘&&str[i]<=zz,ll(str[i]>=,A'&&str[i]<=zZ1letter++elseif(str[i]>=*0f&&str[i]<=*9r
digil++;elseif(str[i]==32spacc++;else
others++;}7-10
#includeh>#inc1udeintmain(
{inialphabetic(char;intlongest(char[];inti;
charline[100];
printf(Hinputoneline\ngets(1ine;
printf(MThelongestwordis:
for(i=1ongest(linealphabetic(line[i];i++printf(,r%cH,line[i];printf(°\nM;


C语言程序设计》课后习题答案第四版谭浩强
return0;
intalphabetic(charc
{if((o^a*&&c<=,z/l|(cXV&&cv=‘z'return(1elsereturn(0;}
int1ongest(charstring!]
{int1cn=0,i,1ength=O.flag=1,place=0.point;for(i=0i<=str1en(string;i++
if(alphabetic(string[i]
if(flag{point=i;flag=O;e1se1en++
else
{flag=l;
if(len>=length
*lcngth=1en;aplace=point;
len=0;
}return(place
7-11
#include#include#defineN10charstr[N];intmain({voidsort(char[];inti,flag;
for(flag=lflag==l{printf(Hinputstring:\n";scanfC%s
&str;
if(strlen(str>N


C语言程序设计》课后习题答案第四版谭浩强
printf(Mstringtoolong,inputagain!"eIsef1ag=0;}sort(str
printf(Hstringsorted:\nH;for(i=0;iprintf(H%c\str[;printf(H\nN;return0}
voidsort(charstr[]{intijchart:
for(j=lj
for(i=0;(istr[i+1]
{t=str[i];str[i]=str(i+1]str[i+1]=t}
}
7-12
#include#includcintmain(
{floatsolut(floatfIoatb,floatc,f1oatdfloata,b,c,d;printf(Hinputa,b,c,d:'1;scanfC%f,%freturn0;}
f1oatso1ut(floata,floatbJ1oatc,floatd{floatx=l,x0,f,fl;do{x0=x
f=((a*x0+b*x0+c*x0+d;f1=(3*a*x0+2*b*x0+c;x=x0-f/f1;}
&a,&b&c.&d;
printf(Hx=%10.7f\nsohrt(agd;


C语言程序设计》课后习题答案第四版谭浩强
while(fabs(x-x0>=le3;return(x;}
7-13
#inc1udeh>#defineN10#defineM5floatscore[N][M]
floata_stu[N],a_cour[M];intr,c;1floath;floats_var(voidfloathighest(;voidinput-stu(voidvoidaver_stu(void;voidaver.cour(void;input_ski(aver_stu(;aver_cour(;printf(H\nNOavcr\ii
for(i=0;i
{printf(H\nNO%2dM4+l;for(j=0:jvM;j++
printf(”8.2f”score[i][j];printf(11%8.2f\n\a_stu[i];}
printf(H\naverageMfor(j=0;jj++
printf("%8.2fM,a_cour[j]printf(*'\n*'h=highest(
printf(Hhighest%7.2fNO.%2dcourse%2d\n*\h,r,cprintf(Hvariance%8.2f\nM,s_var(return0;}
voidinput_stu(void{inti,j;
for(i=0;ivN;i++

courlcour2cour3cour4cour5
1ntmain({inti,j


C语言程序设计》课后习题答案第四版谭浩强
{printf(,r\ninputscoreofstudent%2d:\nH,i+l;for(j=0jscanf(H%f\&scorc[i][j];
voidaver_stu(void{inti,jfloats;
for(i=0;i
{for(j=0,s=0;jvM:j++s+=score[i][j];a_stu[i]=s/50;voidavcr_cour(void{inti,j;f1oats;
for(j=0;j
for(i=0i[[j];a_cour[j]=s/(floatN}}
floathighcst({floathigh;intitj;
high=score[0][0];for(i=0i
for(j=O;jj++
if(score[i][j]>high{high=score[i][j];
or=i+l;c=j+1:
return(high;}
floats_var(void{inti
floatsumx,sumxnsumx=0.0sumxn=0.0;for(i=0i
{sumx+=a_stu[i]*a_stu[i]sumxn+=astu[i];


C语言程序设计》课后习题答案第四版谭浩强
}
return(sumx/N-(sumxn/N*(sumxn/N;
7-*14
#include#dcfineN10#defineM5floatscore[N][M];
f1oata_stu[N],a_cour[Mlintr,c;intmain({inti,j;floath:
floats_var(voidfloathighest(;
voidinput_stu(void;voidavertstu(void;voidaverseour(voidinput_stu(;aver_stu(aver_cour(;printf(H\iiNO.ver\iiM;
for(i=0;ii++
{primf(AnNO%2dM,i+1;for(j=0;jprintfC'%8.2f\score[i][j];printf(H%8.2f\nM,a_stu[i];}
printf(M\naverage;for(j=0;j
printf(n%8.2fcour[j]
printf(H\nM;h=highest(;
printf(Hhighest:%7.2fNO.%2dcourse%2d\n,\h,r,c;printf(Hvarianee%8.2f\iT,s_var(;return0;}
voidinput_stu(void{inti,j;
cour1cour2cour3cour4cour5a


C语言程序设计》课后习题答案第四版谭浩强
for(i=0i
(printf("inputscoreofstudent%2d\n”,i+l;for(j=0;jj++
scanf(M%fH&score[i][j];
}
voidaver_stu(void{intijfloats
for(i=0;ivN;i
{for(j=0,s=O;jvMjs+=score[i][j];a_stu[i]=s/5.0}}
voidaver^cour(void{inti,j;floats;
for(j=0:jvM;j++(s=0;
for(i=0ii++s+=score[i][j];a_cour[j]=s/(floatN;}}
floathighest({floathigh;inti,j;high=score[0][0];for(i=0;i
for(j=O;jvM;j++if(score[i][j]>high{high=score[i][j]^>r=i+l;-C=j+1}
return(high}
floats_var(void{inti;
floatsumx,sumxnsumx=0.0sumxn=0.0;for(i=0ivN;i++
{sumx+=a_stu[i]*a_stu[i];sumxn+=a_stu[i];}


C语言程序设计》课后习题答案第四版谭浩强
return(sumx/N-(sumxn/N*(sumxn/N;
7-15
#include#includeh>#defineN10intmain(
{voidinput(int[],charname[][8]voidsort(intC],charname[](8];woidsearch(intJnt[],charname[][8]4ntnum[N],number,flag=l,c
charname[N][8]
input(numname;sort(num,name;while(fIag==1
{printf(”\ninputnumbertolookfor:M;scanf(M%d,r,&number;
search(number,nuniname
oprintf(Hcontinueotnot(Y/N?,ragetchar(;
c=getchar(;
if(c==NIlc==,n,
oflag=0;
}return0;
}
voidinput(intnum[],charname[N][8]{inti;
for(i=0;i
{printf(11inputNO.Hscanf&num[i];printf("inputname:M;getchar(;gets(name[i];
voidsort(intnum[],charname[N][8]{inti,j,min.temp1
chartemp2[8]for(i=0;iVNl;i++
{min=i;
for(j=i;j
if(num[min]>num[j]min=j;


C语言程序设计》课后习题答案第四版谭浩强
tenip1=num[i];
strcpy(temp2,name[i];num[i]=num[minJ;
strcpy(name[i],name[min]num[min]=temp1;
strcpy(namefmin],temp2;}
printf(H\nresu1t:\nM;for(i=0;i
printf(H\n%5d%1Osf\num[i]>name[i];}
voidsearch(intn.intnum[],charname[N][8]
{inttop.bott.mid,1oca,sign;
top=0bott=N1;loca=0sign=l
if((nnum[N1]a1oca=1:
while((sign==l&&(top<=bott*mid=(bott+top/2:aif(n==num[mid]
{loca=mid:
aprintf("NO.%d,hisnameis%s.\nn41ame[1oca]a
0
sign=-l
}
ae1seif(n
bott=mid-l;
^else
otop=mid+l
if(sign==lII1oca=1
printf(M%dnotbeenfoundAn”n
}
7-16
#includeh>#defineMAX1000intmain(
{inthtoi(chars[];intcjJIagj1agl;
char([MAX]


C语言程序设计》课后习题答案第四版谭浩强
i=0;
flag=0;flagl=l;
printf(,rinputaHEXnumberM
while((c=getchar(!=,\0*&&i
{if(c>=f0•&&cv=‘91lc>=,a/&&c<=*fIIc>=W&&cv-F(f1ag=1;t[i++]=c;

eIseif(flag{t[i]=A0
printf(Mdecima1number%d\n,\htoi(t;printf(Hcontinueornot?M;c=getchar(if(c=N‘IIc=='n'flag1=0;else
{flag=0;

i=0
printf(H\ninputaHEXnumber:H}}}
return0;
inthtoi(chars[J{inti,n;n=0:
for(i=0;s[i]!=z\0*;i++
{if(s[i]>=f0&&s[i]<=,9rn=n*l6+s[i]-,0,
if(s[i]>=za*&&s[i]<=ffrn=n*16+s[i]az4-10;if(s[&&s[i]<=,F,n=n*164-s[i]9A'+10;}return(n;7-17
#includeintmain(
{voidconvert(intn;
intnumber;
printf(11inputaninteger,rscanf(u%d"&number;printf(Moutput:,r
if(number<0
{putcharf-1;putcharCr;
/*先输出一个'一‘号和空格*/


C语言程序设计》课后习题答案第四版谭浩强
number=number;
}
convert(number;printf(H\nu;return0
voidconvert(intn{inti;
if((i=n/l0!=0
convert(i;
putchar(n%10+*0putchar(32;}
7-18
#includeintmain(
{intsum_day(intmonth,intdayint1eap(intyear;
intyearjnonth,dayJays;
printf(Hinputdate(yeai\month,day:u;scanf(”d,%d,%dH.&year,&month.&day;printf(H%d/%d/%dyear.month.day;days=sum_day(monthrday;if(Ieap(yea"&&month>=3days=days+1;
printf(Histhe%dthdayinthisyear.\nSdaysreturn0;}
intsum_day(intmonth,intday/*函数sum_day:计算日期*/
{intdayjabf13]={0,3L28,31,30,31,30,31,31,30,31,30,31};
inti;
for(i=1;ii++
day+=day_tab[i];return(day;}
int1eap(intyear{intleap:
leap=ycar%4==0&&year%100!=0IIyear%400==0;return(1eap;
/*函数leap:判断是否为闰年*//*累加所在月之前天数*/
/*调用函数sum_day*/
/*调用函数leap*/


C语言程序设计》课后习题答案第四版谭浩强
}
8章善于利用指针220
指针是什么220
8.2指针变量2228b.2.1使用指针变量的例子222^8.2.2怎样圧义指针变量2238b.2.3怎样引用指针变量224
8.2.4指针变量作为函数参数2268b.3通过指针引用数组230
8.3.1数组元素的指针2308.3.N在引用数组元素时指针的运算2318.3b.3通过指针引用数组元233
8.3.4用数组名作函数参数2378.3.5通过指针引用多维数组2458.4通过指针引用字符串255
8.4.1字符串的引用方式2558.4.2^字符指针作函数参数2598b.4.3使用字符指针变量和字符数组的比较263
8.5指向函数的指针266b8.5.1什么是函数指针266
8.5.2用函数指针变量调用函数2668b.5.3怎样左义和使用指向函数的指针变量2688.5.4用指向函数的指针作函数参数270
8.6返回指针值的函数2748.7b指针数组和多重指针2778.7.1什么是指针数组2778.7.2指向指针数据的指针280
8.7.3指针数组作main函数的形参2828b.8动态内存分配与指向它的指针变量2858.8.1什么是内存的动态分配285
882怎样建立内存的动态分配285b8.8.3void指针类型2878.9有关指针的小结288习题2918-1
#inc1udeintmain(
{voidspl,int*p2;intnl,n2,n3;int*pl,*p2,*p3;
printf("inputthreeintegern1.n2,n3scanf(H%d,%d,%d\&nl,&n2&n3;p1=&n1;p2=&n2;p3=&n3if(nl>n2s;if(n1>n3sif(n2>n3s;

本文来源:https://www.2haoxitong.net/k/doc/1ce847f9588102d276a20029bd64783e08127d09.html

《《C语言程序设计》课后习题答案第四版谭浩强.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式