书签 分享 收藏 举报 版权申诉 / 113
上传文档赚钱

类型《C语言程序设计》课后习题答案解析(第四版)谭浩强.docx

  • 上传人(卖家):最好的沉淀
  • 文档编号:5716837
  • 上传时间:2023-05-05
  • 格式:DOCX
  • 页数:113
  • 大小:76.93KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《C语言程序设计》课后习题答案解析(第四版)谭浩强.docx》由用户(最好的沉淀)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    C语言程序设计 语言程序设计 课后 习题 答案 解析 第四 谭浩强
    资源描述:

    1、WORD 格式可编辑第 1 章程序设计和 C 语言 11.1 什么是计算机程序 11.2 什么是计算机语言 1 1.3C 语言的发展及其特点 31.4 最简单的 C 语言程序 51.4.1 最简单的 C 语言程序举例 6 1.4.2C 语言程序的结构 101.5 运行 C 程序的步骤与方法 121.6 程序设计的任务 141-5 #include int main ( )printf (*nn); printf(VeryGood!nn);printf (*n); return 0;1-6 #include int main()int a,b,c,max;printf(please input

    2、a,b,c:n); scanf(%d,%d,%d,&a,&b,&c); max=a;if (maxb) max=b;if (maxc) max=c;printf(The largest number is %dn,max); return 0;第 2 章算法程序的灵魂 162.1 什么是算法 16专业知识整理分享WORD 格式可编辑2.2 简单的算法举例 172.3 算法的特性 212.4 怎样表示一个算法 222.4.1 用自然语言表示算法 222.4.2 用流程图表示算法 222.4.3 三种基本结构和改进的流程图 262.4.4 用 NS 流程图表示算法 282.4.5 用伪代码表示算法

    3、 312.4.6 用计算机语言表示算法 322.5 结构化程序设计方法 34 习题 36第章最简单的C 程序设计顺序程序设计 373.1 顺序程序设计举例 373.2 数据的表现形式及其运算 393.2.1 常量和变量 393.2.2 数据类型 423.2.3 整型数据 443.2.4 字符型数据 473.2.5 浮点型数据 493.2.6 怎样确定常量的类型 513.2.7 运算符和表达式 52 3.3C 语句 573.3.1 C 语句的作用和分类 573.3.2 最基本的语句赋值语句 593.4 数据的输入输出 653.4.1 输入输出举例 653.4.2 有关数据输入输出的概念 673.

    4、4.3 用 printf 函数输出数据 683.4.4 用 scanf 函数输入数据 753.4.5 字符数据的输入输出 78 习题 823-1#include #include int main()float p,r,n; r=0.1;n=10;p=pow(1+r,n); printf(p=%fn,p); return 0;专业知识整理分享WORD 格式可编辑3-2-1#include #include int main()float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;r5=0.0585; r3=0.054; r2=0.0468; r1=0.04

    5、14; r0=0.0072;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);/ 存活期存款。活期利息每一季度结算一次printf(p1=%fn,p1);/ 输出按第 1 方案得到的本息和printf(p2=%fn,p2);/ 输出按第 2 方案得到的本息和printf(p3=

    6、%fn,p3);/ 输出按第 3 方案得到的本息和printf(p4=%fn,p4);/ 输出按第 4 方案得到的本息和printf(p5=%fn,p5);/ 输出按第 5 方案得到的本息和return 0;3-2-2#include #include int main()double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072;p1=p*(1+r5)*5);/ 一次存 5 年期p2=p*(1+2*r2)*(1+3*r3);/ 先存 2 年期,到期后将本

    7、息再存 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);/ 存活期存款。活期利息每一季度结算一次printf(p1=%fn,p1);/ 输出按第 1 方案得到的本息和printf(p2=%fn,p2);/ 输出按第 2 方案得到的本息和printf(p3=%fn,p3);/ 输出按第 3 方案得到的本息和printf(p4=%fn,p4);/ 输出按第 4 方案得到的本息和printf(p5

    8、=%fn,p5);/ 输出按第 5 方案得到的本息和return 0;3-2-3#include #include int main()float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072;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)

    9、;/ 存 1 年期,到期后将本息存再存 1 年期,连续存 5 次p5=p*pow(1+r0/4,4*5);/ 存活期存款。活期利息每一季度结算一次printf(p1=%10.2fn,p1);/ 输出按第 1 方案得到的本息和printf(p2=%10.2fn,p2);/ 输出按第 2 方案得到的本息和printf(p3=%10.2fn,p3);/ 输出按第 3 方案得到的本息和printf(p4=%10.2fn,p4);/ 输出按第 4 方案得到的本息和printf(p5=%10.2fn,p5);/ 输出按第 5 方案得到的本息和return 0;3-3.#include #include i

    10、nt main()float d=300000,p=6000,r=0.01,m;m=log10(p/(p-d*r)/log10(1+r); printf(m=%6.2fn,m);return 0;WORD 格式可编辑3-4#include int main()int c1,c2; c1=197; c2=198;printf(c1=%c,c2=%cn,c1,c2); printf(c1=%d,c2=%dn,c1,c2); return 0;3-5#include int main()int a,b; float x,y; char c1,c2;scanf(a=%d b=%d,&a,&b); sc

    11、anf(%f %e,&x,&y);scanf(%c%c,&c1,&c2); printf(a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn,a,b,x,y,c1,c2); return 0;3-6#include int main()char c1=C,c2=h,c3=i,c4=n,c5=a; c1=c1+4;c2=c2+4; c3=c3+4; c4=c4+4; c5=c5+4;printf(passwor is %c%c%c%c%cn,c1,c2,c3,c4,c5); return 0;专业知识整理分享WORD格式可编辑3-7#include int main ()float

    12、 h,r,l,s,sq,vq,vz; float pi=3.141526;printf(请输入圆半径r,圆柱高h);scanf(%f,%f,&r,&h);/要求输入圆半径 r 和圆柱高hl=2*pi*r;/计算圆周长 ls=r*r*pi;/计算圆面积 ssq=4*pi*r*r;/计算圆球表面积 sqvq=3.0/4.0*pi*r*r*r;/计算圆球体积 vqvz=pi*r*r*h;/计算圆柱体积 vz printf(圆周长为:l=%6.2fn,l);printf(圆面积为:s=%6.2fn,s); printf(圆球表面积为:sq=%6.2fn,sq); printf(圆球体积为:v=%6.2

    13、fn,vq); printf(圆柱体积为:vz=%6.2fn,vz); return 0;3-8-1#include int main()int c1,c2;/整型定义printf(请输入两个整数c1,c2:); scanf(%d,%d,&c1,&c2); printf(按字符输出结果:n); printf(%c,%cn,c1,c2);printf(按 ASCII 码输出结果为:n); printf(%d,%dn,c1,c2);return 0;3-8-2#include int main()char c1,c2;/定义字符型变量int i1,i2;/定义整型变量printf(请输入两个字符c

    14、1,c2:); scanf(%c,%c,&c1,&c2);专业知识整理分享i1=c1;/赋值给整型变量i2=c2;printf(按字符输出结果:n); printf(%c,%cn,i1,i2); printf(按整数输出结果:n); printf(%d,%dn,c1,c2); return 0;3-8-3#include int main()char c1,c2;/定义为字符型int i1,i2;/定义为整型printf(请输入两个整数i1,i2:); scanf(%d,%d,&i1,&i2);c1=i1;/将整数赋值给字符变量c2=i2;printf(按字符输出结果:n); printf(%

    15、c,%cn,c1,c2); printf(按整数输出结果:n); printf(%d,%dn,c1,c2); return 0;3-8#include int main()char c1,c2;printf(请输入两个字符c1,c2:); c1=getchar();c2=getchar();printf(用 putchar 语句输出结果为:); putchar(c1);putchar(c2); printf(n);printf(用 printf 语句输出结果为:); printf(%c %cn,c1,c2);return 0;第 4 章选择结构程序设计 854.1 选择结构和条件判断 854.

    16、2 用if 语句实现选择结构 874.2.1 用 if 语句处理选择结构举例 87 4.2.2if 语句的一般形式 894.3 关系运算符和关系表达式 914.3.1 关系运算符及其优先次序 914.3.2 关系表达式 924.4 逻辑运算符和逻辑表达式 924.4.1 逻辑运算符及其优先次序 934.4.2 逻辑表达式 944.4.3 逻辑型变量 964.5 条件运算符和条件表达式 974.6 选择结构的嵌套 994.7 用switch 语句实现多分支选择结构 1024.8 选择结构程序综合举例 105 习题 1114-4-1#include int main()int a,b,c;prin

    17、tf(请输入三个整数:); scanf(%d,%d,%d,&a,&b,&c); if (ab)if (bc) printf(max=%dn,c);elseprintf(max=%dn,b); else if (ac)printf(max=%dn,c); else printf(max=%dn,a);return 0;4-4-2#include int main() int a,b,c,temp,max;printf(请输入三个整数:); scanf(%d,%d,%d,&a,&b,&c);temp=(ab)?a:b;/*将 a 和 b 中的大者存入temp 中*/max=(tempc)?temp

    18、:c;/*将 a 和b 中的大者与c 比较,取最大者*/ printf(三个整数的最大数是%dn,max);return 0;4-5-2#include #include #define M 1000int main()int i,k;printf(请输入一个小于%d 的整数i:,M); scanf(%d,&i);while (iM)printf(输入的数不符合要求,请重新输入一个小于%d 的整数i:,M); scanf(%d,&i);k=sqrt(i);printf(%d 的平方根的整数部分是:%dn,i,k); return 0;4-5#include #include #define M

    19、 1000int main()int i,k;printf(请输入一个小于%d 的整数i:,M); scanf(%d,&i);if (iM)printf(输入的数不符合要求,请重新输入一个小于%d 的整数i:,M); scanf(%d,&i);k=sqrt(i);printf(%d 的平方根的整数部分是:%dn,i,k); return 0;4-6.#include int main() int x,y;printf(输入x:);scanf(%d,&x);if(x1)/* x1 */ y=x;printf(x=%3d,y=x=%dn ,x,y);elseif(x10)/* 1=x=10*/ y

    20、=3*x-11;printf(x=%d,y=3*x-11=%dn,x,y);return 0;4-7-1#include int main()int x,y; printf(enter x:);scanf(%d,&x); y=-1;if(x!=0) if(x0)y=1;elsey=0;printf(x=%d,y=%dn,x,y); return 0;4-7-2#include int main()int x,y;printf(please enter x:);scanf(%d,&x); y=0;if(x=0) if(x0) y=1;elsey=-1; printf(x=%d,y=%dn,x,y

    21、); return 0;4-8#include int main() float score; char grade;printf(请输入学生成绩:);scanf(%f,&score);while (score100|score0)printf(n 输入有误,请重输);scanf(%f,&score);switch(int)(score/10)case 10:case 9: grade=A;break;case 8: grade=B;break;case 7: grade=C;break;case 6: grade=D;break;case 5:case 4:case 3:case 2:cas

    22、e 1:case 0: grade=E;printf(成绩是 %5.1f,相应的等级是%cn ,score,grade); return 0;4-9#include #include int main()int num,indiv,ten,hundred,thousand,ten_thousand,place;/分别代表个位,十位,百位,千位,万位和位数printf(请输入一个整数(0-99999):); scanf(%d,&num);if (num9999)place=5;elseif (num999) place=4;elseif (num99) place=3;elseif (num9)

    23、place=2; else place=1;printf(位数:%dn,place); printf(每位数字为:); 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-hun

    24、dred*100-ten*10); switch(place)case 5:printf(%d,%d,%d,%d,%d,ten_thousand,thousand,hundred,ten,indiv); printf(n 反 序 数 字 为 :); printf(%d%d%d%d%dn,indiv,ten,hundred,thousand,ten_thousand); break;case 4:printf(%d,%d,%d,%d,thousand,hundred,ten,indiv); printf(n 反 序 数 字 为 :); printf(%d%d%d%dn,indiv,ten,hun

    25、dred,thousand); break;case 3:printf(%d,%d,%d,hundred,ten,indiv); printf(n 反 序 数 字 为 :); printf(%d%d%dn,indiv,ten,hundred); break;case 2:printf(%d,%d,ten,indiv); printf(n 反 序 数 字 为 :); printf(%d%dn,indiv,ten); break;case 1:printf(%d,indiv); printf(n 反序数字为:); printf(%dn,indiv); break;return 0;4-10-1#i

    26、nclude int main()int i;double bonus,bon1,bon2,bon4,bon6,bon10; bon1=100000*0.1;bon2=bon1+100000*0.075; bon4=bon2+100000*0.05; bon6=bon4+100000*0.03; bon10=bon6+400000*0.015;printf(请输入利润i:);scanf(%d,&i); if (i=100000)bonus=i*0.1; else if (i=200000)bonus=bon1+(i-100000)*0.075; else if (i=400000)bonus=

    27、bon2+(i-200000)*0.05; else if (i=600000)bonus=bon4+(i-400000)*0.03; else if (i=1000000)bonus=bon6+(i-600000)*0.015; elsebonus=bon10+(i-1000000)*0.01; printf(奖金是: %10.2fn,bonus); return 0;4-10-2#include int main()int i;doublebonus,bon1,bon2,bon4,bon6,bon10; intbranch;bon1=100000*0.1;bon2=bon1+100000*

    28、0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+400000*0.015;printf(请输入利润i:);scanf(%d,&i); branch=i/100000;if (branch10)branch=10; switch(branch)case 0:bonus=i*0.1;break;case 1:bonus=bon1+(i-100000)*0.075;break; case 2:case 3: bonus=bon2+(i-200000)*0.05;break;case 4:case 5: bonus=bon

    29、4+(i-400000)*0.03;break;case 6:case 7:case 8:case 9: bonus=bon6+(i-600000)*0.015;break;case 10: bonus=bon10+(i-1000000)*0.01;printf(奖金是 %10.2fn,bonus); return 0;4-11#include int main()intt,a,b,c,d;printf( 请 输 入 四 个 数 :); scanf(%d,%d,%d,%d,&a,&b,&c,&d); printf(a=%d,b=%d,c=%d,d=%dn,a,b,c,d); if (ab) t

    30、=a;a=b;b=t; if (ac) t=a;a=c;c=t; if (ad) t=a;a=d;d=t; if (bc) t=b;b=c;c=t; if (bd) t=b;b=d;d=t; if (cd) t=c;c=d;d=t;printf(排序结果如下: n);printf(%d%d%d%dn,a,b,c,d); return 0;4-12#include int main()inth=10;float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;printf(请输入一个点(x,y):);scanf(%f,%f,

    31、&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 (d11 & d21 & d31 & d41)h=0;/*判断该点是否在塔外*/ printf(该点高度为 %dn,h);return 0;第 5 章循环结构程序设计 1145.1 为什么需要循环控制 1145.2 用while 语句实现循环 1155.3 用dowhile 语句实现循环 1175.4

    32、 用for 语句实现循环 1205.5 循环的嵌套 1245.6 几种循环的比较 1255.7 改变循环执行的状态 1255.7.1 用 break 语句提前终止循环 1265.7.2 用 continue 语句提前结束本次循环 127 5.7.3break 语句和continue 语句的区别 1285.8 循环程序举例 131 习题 1405-2#include #include / 程序中用到数学函数fabs,应包含头文件math.n int main()int sign=1,count=0;/ sign 用来表示数值的符号,count 用来统计循环次数double pi=0.0,n=1.

    33、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;/ 求出下一项的值termcount+;/ count 累加 1pi=pi*4;/ 多项式的和pi 乘以 4,才是的近似值printf(pi=%10.8fn,pi);/ 输出的近似值p

    34、rintf(count=%dn,count);/ 输出循环次数return 0;5-3#include int main()intp,r,n,m,temp;printf(请输入两个正整数n,m:);scanf(%d,%d,&n,&m); if (nm)temp=n; n=m; m=temp;p=n*m; while(m!=0)r=n%m; n=m; m=r;printf(它们的最大公约数为:%dn,n); printf(它们的最小公约数为:%dn,p/n); return 0;5-4#include int main()char c;int letters=0,space=0,digit=0,

    35、other=0;printf(请输入一行字符:n); while(c=getchar()!=n)if (c=a & c=A & c=0 & c=9) digit+;elseother+;printf( 字 母 数 :%dn空 格 数 :%dn 数:%dn,letters,space,digit,other);return 0;5-5#include int main()inta,n,i=1,sn=0,tn=0; printf(a,n=:);scanf(%d,%d,&a,&n); while (i=n)tn=tn+a; /*赋值后的tn 为i 个 a 组成数的值*/ sn=sn+tn; /*赋值

    36、后的sn 为多项式前i 项之和*/ a=a*10;+i;printf(a+aa+aaa+.=%dn,sn); return 0;5-6#include int main()double s=0,t=1; int n;for (n=1;n=20;n+)数 字 数:%dn其 它 字 符t=t*n; s=s+t; printf(1!+2!+.+20!=%22.15en,s);return 0;5-7#include int main()int n1=100,n2=50,n3=10;double k,s1=0,s2=0,s3=0;for (k=1;k=n1;k+)/*计算 1 到 100 的和*/s1

    37、=s1+k;for (k=1;k=n2;k+)/*计算 1 到 50 各数的平方和*/s2=s2+k*k;for (k=1;k=n3;k+)/*计算 1 到 10 的各倒数和*/s3=s3+1/k; printf(sum=%15.6fn,s1+s2+s3); return 0;5-8#include int main()int i,j,k,n;printf(parcissus numbers are ); for (n=100;n1000;n+)i=n/100; j=n/10-i*10; k=n%10;if (n=i*i*i + j*j*j + k*k*k) printf(%d ,n);pri

    38、ntf(n); return 0;5-9-1#define M 1000/*定义寻找范围*/ #include int main()int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10; int i,a,n,s;for (a=2;a=M;a+)/* a 是 2-1000 之间的整数,检查它是否完数 */n=0;/* n 用来累计a 的因子的个数 */s=a;/* s 用来存放尚未求出的因子之和,开始时等于a */ for (i=1;i1)printf(%d,%d,k1,k2);/* n1 表示a 至少有 2 个因子 */if (n2)printf(,%d,k3);/* n2表示至少有 3 个因子,故应再输出一个因子 */if (n3)printf(,%d,k4);/* n3表示至少有 4 个因子,故应再输出一个因子 */if (n4)printf(,%d,k5);/* 以下类似 */ if (n5)printf(,%d,k6);if (n6)printf(,%d,k7);if (n7)printf(,%d,k8);if (n8)printf(,%d,k9);if (n9)printf(,%d,k10); printf(n);return

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《C语言程序设计》课后习题答案解析(第四版)谭浩强.docx
    链接地址:https://www.163wenku.com/p-5716837.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库