




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、谭浩强C程序设计(第二版)习题 解答第一章1.5请参照本章例题,编写一个 C程序,输出以下信息:*VeryGood!*1.6编写一个C程序,输入a、b、c3个值,输出其中最大者。第三章3.3请将下面各数用八进制和十六进制(补码)表示:(1)10(2)32( 3)75(4)-617( 5)-111(6)2483 ( 7)-28654( 8)210033.5字符常量与字符串常量有什么区别?3.6写出以下程序运行的结果。main () char c1= ' a' ,c2= ' b' ,c3= ' c' ,c4= ' 101 ' ,c5=
2、 ' 116 'printf(“a%cb%ctc%ctabcn ”,c1,c2,c3);printf( “tb%c%c”,c4,c5);3.7要将” China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母” A”后面第4个字母是” E”,用” E”代替” A”。因 此,” China”应译为” Glmre”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为C'、 h'、 i '、 n'、 a',经过运算,使c1、c2、 c3、c4、c5 分别变为'G、' I、
3、9; m'、' r '、' e',并输出。3.8例3.6能否改成如下:main ()in t c1,c2;c1=97;c2=98;printf(“ %c%cn ,c1,c2);printf(“ %d%dn ,c1,c2);3.9求下面算术表达式的值。(1) x+a%3*(int)(x+y)%2/4设 x=2.5,a=7,y=4.7(2) (float)(a+b)/2+(int)x%(int)y设 a=2,b=3,x=3.5,y=2.53.10写出程序运行结果main () int i,j,m, n;i=8;j=10;m=+l;n=j+;printf(“
4、d,%d,%d,%”,i,j,m,n);3.12写出下面表达式运算后 a的值,设原来a=12。设a和已定义为整型变量。(1)a+=a(2)a-=2 a*=2+3 a/=a+a(5)a%=(n%=2), n 的值等于 5a+=a-=a*=a第四章4.3 C语言为什么要把输入输出的功能作为函数,而不作为语言的基本部分?4.4 若 a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274, n=128765, c仁'a' c2=' b'。想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设 计输出)。要求输出的结果如下:aF 3口口 b=
5、4口口 c= 5x=1.200000,y=2.400000,z=-3.600000x+y=D3.60 y+z=-1.20 z+x=-2.40u= 51274口 n=口 128765c1 = ' a' or 97(ASCII)c2=' b' or 97(ASCII)4.5请写出下面程序的输出结果:#include "stdio.h"main () int a=5,b=7;float x=67.8564,y=-789.124;char c='A'long n=1234567;un sig ned u=65535;prin tf(&
6、quot;%d%dn",a,b);prin tf("%3d%3dn",a,b);prin tf("%f,%fn",x,y);prin tf("%-10f,%-10fn",x,y);prin tf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3fn",x,y,x,y,x,y);prin tf("%e,%10.2en",x,y);prin tf("%c,%d,%o,%xn",c,c,c,c);prin tf("%ld,%lo,%xn",
7、n,n,n);prin tf("%u,%o,%x,%dn",u,u,u,u);prin tf("%s,%5.3sn","COMPUTER","COMPUTER");4.8设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、 圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小 数点后2位数字。请编程序。4. 9输入一个华氏温度,要求输出摄氏温度。公式为5c -(F 32)输出要有文字说明,取2位小数。94. 10编程序,用getchar函数读入两个字符给 c1、c2,然后分
8、别用putchar 函数和printf函数输出这两个字符。并思考以下问题:(1) 变量c1、c2应定义为字符型或整型?抑二者皆可?(2) 要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf 函数?(3) 整型变量与字符变量是否在任何情况下都可以互相代替?如char c1,c2;与int c1,c2;是否无条件地等价?第五章5.3写出下面各逻辑表达式的值。设 a=3,b=4,c=5。(1)a+b>c&&b= =c(3) !(a>b)&&!c|1(5) !(a+b)+c-1 &&b+c/25.45.5有3
9、个整数a、b、c,有一函数:x(x2x3x(2) a|b+c&&b-c(4) !(x=a)&&(y=b)&&0由键盘输入,输出其中最大的数。1)1(1 x 10),写一程序,输入x,输出y值。11(x10)给出一百分制成绩,要求输出成绩等级A'、B'、C'、D'、'E'。A', 8089 分为B', 7079 分为C,6069 分为D,60 分以5.690分以上为'下为E'5.8企业发放的奖金根据利润提成。利润I低于或等于10万元的,奖金可提10%利润高于10万元,低
10、于20万元(100000<I < 200000)时,低于10万元的部分 按10%提成,高于10万元的部分,可提成7.5%; 20万元<1 <40万元时,低于 20万元的部分仍按上述办法提成(下同),高于20万元的部分按5%§成;40万 元<1 < 60万元时,高于40万元的部分按3%提成;60万元<1 < 100万元时,高 于60万元的部分按1.5%提成;I>100万元时,超过100万元的部分按1勉成。 从键盘输入当月利润I,求应发奖金总数。要求:(1)用if语句编程序;(2)用switch语句编程序。5.9输入4个整数,要求按由
11、小到大的顺序输出。5.10 有 4 个圆塔,圆心分别为(2, 2),(-2,2),(-2,-2 ),(2,-2 ),圆半 径为1。这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该 点的建筑高度(塔外的高度为零)。22m和 n,6.1输入两个正整数m和 n,求其最大公约数和最小公倍数。英文字母、空格、数字和其他字符的个数。:26.2输入一行字符,分别统计出其中祕亠"掾蚪宀丛06.3求Sn a aa aaa aa a之值,其中a是一个数字 例如:2+22+222+2222+22222(此时 n=5), n 由键盘输入。206.4 求 n!(即求 1! +2! +3! +4
12、! + +20!)。n 110100506.5 求 k k2n 1k 16.6打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数 字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。6.7 一个数如果恰好等于它的因子之和,这个数就称为“完数” 。例如,6的因 子为1、2、3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完 数,并按下面格式输出其因子:6 its factors are 1,2,36.8有一分数序列2 3 5 8 13 211,2,3,5, 8 ,13,求出这个数列的前20项之和。6.9 一球从100m高度自由落下,每
13、次落地后反跳回原来高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?6.10猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾, 又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后 每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩下一个桃子了。求第一天共摘了多少桃子。6.11用迭代法求x ,.a。求平方根的迭代公式为xn1 1 (xn皂)2Xn5 要求前后两次求出的x的差的绝对值小于10。(可不做)6.12用牛顿迭代法求下面方程在1.5附近的根。(可不做)322x -4x +3x-6=06.13用二分法求下面方程在(-1
14、0,10)之间的根。(可不做) 2x3-4x 2+3x-6=06.14打印出以下图案。6.15两个乒乓球队进行比赛,各出 3人。甲队为A B、C3人,乙队为X、Y、 Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程序找出3对赛手的名单。C程序设计习题解答1.5mai n() printf("*n");prin tf("n");printf("Very Good!n");prin tf("n");printf("*n");1.6mai n() int
15、 a,b,c,max;prin tf("i nput a,b,c:n");sca nf("%d,%d,%d",&a,&b,&c);max=a;if(max<b) max=b; if(max<c) max=c; prin tf("max=%d",max);第二章习题解略第第三章要点:1、C语言的数据类型P38图2、常量、变量的约定及各类数据常量、变量使用的约定。3.3、(10)、(32)、(75)3、运算符及表达式的约定和应用。难点:自加、自减的用法及其运算后的值。 逗号运算符及逗号表达式的用法10=
16、(12) 8=(a) 1610=(40) 8=(20) 1610= (113) 8=(4b) 16、(-617)10=( 176627)8=(fd97) 16、(-111)10=(177621) 8=(ff91) 16、(2483)10=( 4663)8=(9B3) 16、(-28654) 10=(110022)8=(9012)16(8)、(21003) 10=(51013) 8=(520B)163.4略3.5字符常量是一个字符,用单引号括起来。字符串常量是由0个或若干个字符 组合而成,用双引号把它们括起来,存储时自动在字符串最后加一个结束符号0。3.6运行结果为:aabb cc abcAN3
17、.7main () char c1= ' C' ,c2= ' h' ,c3= ' i ' ,c4= ' n' ,c5= ' a'c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(“密码是 c%c%c%c%”nc1,c2,c3,c4,c5);3.8可以。因为在可输出的字符范围内,用整型和用字符型作用相同3.9(1) 2.5(2) 3.53.10结果为:9,11,9,103.12(1)2 4(2)10(3)6 0(4)0(5)0(6)0第三早第四章要点:1、C语句分类2、赋值语句的用法3、数据输
18、入输出的语句的用法。特别注意格式输入、输出语句的用法,要看到 语句能写出输入、输出结果,给出输入、输出结果能写出语句。4、顺序程序的概念、结构。4.3 不把输入输出作为C语言提供的语句的目的是使 C语言编译系统简单,因 为将语句翻译成二进制的指令是在编译阶段完成的,没有输入输出语句就是可 以避免在编译阶段处理与硬件有关的问题,可以使编译系统简化,而且通用性强,可移植性好,对各种型号的计算机都适用,便于在各种计算机上实现。4.4mai n() int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;
19、u=51274; n=128765;c1 = ' a' ;c2= ' b'printf( “ n ” );printf(“ a=%2d b=%2d c=%2dn”,a,b,c);printf(“ x=%8.6f,y=%8.6f,z=%9.6fn ”,x,y,z);printf( “x+y=%5.2f y+z=%5.2f z+x=%5.2fn”,x+y,y+z,z+x);printf( “ u=%6ld n=%9ldn ” ,u,n);printf(“ c1=' %C or %d(ASCII)n ” ,c1,c1);printf(“ c2=' %c
20、 or %d(ASCII)n ”,c2,c2);4.557 5口 767.856400,-789.12400067.856400 ,-789.124000 67.86, -789.12,67.8564,-789.1240, 67.856400,-789.124000 6.785640e+01, -7.89e+02A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTE口 COM4.8#include "stdio.h"#defi ne PI 3.1416void mai n()float h,r,l,s,sq,vq
21、,vz;printf("input r, hn");sca nf("%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; vz=PI*r*r*h;prin tf("l=%6.2fn",l);prin tf("s=%6.2fn",s);prin tf("sq=%6.2fn",sq);prin tf("sv=%6.2fn",vq);prin tf("sz=%6.2fn&quo
22、t;,vz);4. 9main () float c,f;printf(“请输入一个华氏温度:n ”);scanf( “f”,&f);c=(5.0/9.0)*(f-32);printf(“摄氏温度为:5.2n” ,c);4. 10#include“ stdio.h ”main () char c1,c2;printf( “ in put c1,c2n” );scanf(%c,%c ”,&c1,&c2); putchar(cl);putchar(c2);printf(“ n ” );printf(“ %c%cn ,c1,c2);第5章第五章要点:1、关系运算符和关系运算式
23、;2、逻辑运算符和逻辑运算式、;3、IF语句的三种形式;4、条件运算符;5、switch语句的用法;5.3(1)0( 2) 1( 3) 1(4)0( 5)15.4main()int a,b,c,t,max;printf( “ in put a,b,c:”);scanf( “d,%d,%d,&a,&b,&c); t=(a>b)?a:b;max=(t>c)?t:c;printf( “ max=%d ,max);5.5mai n() float x,y;printf( “ in put x: ” );sca nf( “ f”,&x);if (x<1)
24、y=x;else if (x<10) y=2*x-1; else y=3*x-11;printf(“x=%f, y=%fn ”,x,y);5.6mai n() int score,t,logic;char grade; logie=1; while(logic) prin tf(“ in put score:” );scanf(“%d,&score);“error ” );if (score>100|score<0) pri ntf( else logic=0; printf(“n ” );break;'B' ;break;'C' ;b
25、reak;'D' ;break;if (score= =100) t=9; else t=(i nt)(score/10); switch(t) case 9: grade= ' A' case 8: grade= case 7: grade= case 6: grade= case5: case4: case3: case2: case1: case0: grade= ' E'else if (I<=1e6)bon us=bo n6+(i-600000)*0.015;5.8(1)用mai n() long i;float bon us,b
26、o n1,bo n2,bo n4 ,bo n6,bo n10; bo n仁 100000*0.1;bon 2=bo n1+100000*0.075;bon 4=bo n2+200000*0.05;bon 6=bo n4+200000*0.03;bon 10=b on6+40000*0.015;scanf(%ld ”,&i);if (i<1e5) bonu s=i*0.1;if语句/*/*/*/*/*利润为10万元时的奖金 利润为20万元时的奖金 利润为40万元时的奖金利润为60万元时的奖金*/*/*/*/利润为100万元时的奖金*/else if (i<=2e5)bon u
27、s=bo n1+(i-100000)*0.075;else if (I<=4e5)bon us=bo n2+(i-200000)*0.05;else if (I<=6e5)bon us=bo n4+(i-400000)*0.03;else bo nus =bo n10+(i-100000)*0.01;printf(“ bonus=%10.2f”,bonus);用switch 编写mai n() long i;float t, bonu s,bo n1,bo n2,bo n4 ,bo n6,bo n10;in t c;bo n仁 100000*0.1;bon 2=bo n1+1000
28、00*0.075;bon 4=bo n2+200000*0.05;bon 6=bo n4+200000*0.03;bon 10=b on6+40000*0.015;scanf(%ld ”,&i);c=i/100000;if( c>10) c=10;switch(c) case 0: bonu s=i*0.1; break;case 1: bon us=b on 1+(i-100000)*0.075; break; case 2:case 3: bon us=bo n2+(i-200000)*0.05; break;case 4:case 5: bon us=bo n4+(i-40
29、0000)*0.03; break; case 6:case 7:case 8:case 9: bon us=b on 6+(i-600000)*0.015; break; case 10: bonus=bon 10+(i-1000000)*0.01;printf(“ bonus=%10.2f” ,bonus);5.9mai n() int t,a,b,c,d;scanf(“ d,%d,%d,%”,&a,&b,&c,&d);printf( “ na=%d,b=%d,c=%d,d=%dn ,a,b,c,d);if (a>b) t=a;a=b;b=t;if (
30、a>c) t=a;a=c;c=t;if (a>d) t=a;a=d;d=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( “ %d %d %d %dn ,a,b,c,d);5.10mai n() int h=10;float X,y,x0=2,y0=2,d1,d2,d3,d4;prin tf(“ in put x,y: ” );scanf( “ f,%f”,&x,&y); d1=(x-x0)*(x-x0)+(y-y0)*(y-y0); d2=(x-x0)
31、*(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>1 &&d3>1 &&d4>1) h=0; printf( “ h=%d ,h)第6章要点:1、实现循环的语句。2、几种循环的比较3、读程序写结果。常见问题的程序设计。6.1#i nclude<stdio.h> mai n()int a,b, n1, n2,t;printf( “ in put a,bn ”); s
32、canf( “%d,%d,&n 1,&n2); if(n 1>n2) t=n1;n1=n2;n2=t; a=n 2;b=n1;while(b!=0)t=a%b; a=b; b=t; printf( printf(“最大公约数为:dn” ,a); “最小公倍数为:%dn, n1*n 2/a);6.2#i nclude<stdio.h>#i nclude <stdio.h>mai n() char c;int letters=0,space=0,digit=0,other=0; printf(“输入一行字符:n ”);while(c=getchar(
33、)!=' n ');if(c>= ' a' &&c<= z' |c>= ' A &&c<= Z' ) letters+; else if(c='' ) space+;else if(c>=' O' &&c<= 9' ) digit+;else other+;printf(“ l%d,%d,%d,%dn” ,letters,space,digit,other);6.3#i nclude<stdio.h>ma
34、i n()int a,n,coun t=1,s n=O,t n=O;scanf( “d,%d”,&a,&n);printf(“ a=%d n=%dn ,a,n);while(co unt<=n)tn=tn+a;sn=sn+tn;a=a*10;+co unt; “ ”printf( “a+aa+aaa+=%dn”,sn);6.4#i nclude<stdio.h>mai n() float n, s=0,t=1;for (n=1; n<=20; n+)t=t* n;s=s+t;printf( “ 1!+2!+3!+ +20!=%en” ,s);6.5#i
35、nclude<stdio.h>mai n()int n1=100 ,n 2=50 ,n 3=10;float k;float s1=0,s2=0,s3=0;for(k=1;k<=n1;k+) s1=s1+k;for(k=1;k<=n2;k+) s2=s2+k*k;for(k=1;k<=n3;k+) s3=s3+1/k;printf(“sum=%8.2r”,s1+s2+s3);6.6#i nclude<stdio.h>mai n()int i,j, n;printf(“水仙花数是:”);for (n=100; n<1000; n+) i=n/100
36、;j=n/10-i*10;k=n%10; lf(i*100+j*10+k=i*i*i+j*j*j+k*k*k) printf(“ %d ,n);printf( “ n ” );6.7#i nclude<stdio.h>mai n() static int k10;int i,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;kn =i;if (s=0)printf (“%5d是个完数,它的因子是:” ,j);for (i=1;i<=n;i+) printf(“%d ,ki);
37、prin tf("n"); 6.8#i nclude<stdio.h>mai n() float a=2,b=1,s=0;int n ,t ,nu mber=20;for (n=1; n<=nu mber; n+) s=s+a/b;t=a; a=a+b; b=t;printf( “sum=%9.6fn” ,s);6.9#i nclude<stdio.h>mai n() int n;float sn=100,h n=sn/2;for (n=2 ;n<=10, n+)sn=sn+2*h n;hn=h n/2;printf( “第10次落地时共
38、经过:f米n ”,sn);printf( “第 10 次反弹 %f米n ”,hn);6.10#i nclude<stdio.h>mai n() int day,x1,x2;day=10;x2=1;while(day>0)x仁(x2+1)*2;/*前1天的桃子数是当天桃子数加1后的2倍*/x2=x1;day-;printf( “桃子总数=%dn” ,x1);6.11#i nclude<stdio.h>#in clude <math.h>mai n() float a,x0,x1;prin tf( “ in put nn ”);scanf( “%f”,&a
39、mp;a);x0=a/2;x仁(x0+a/x0)/2;do x0=x1;x( x0+a/x0)/2;while( fabs(x0-x1)>=1e-5);printf( “ %5.2f 的平方根=%8.5fn ” ,a,x1);6.12牛顿迭代法又称牛顿切线法。它采用以下的方法求根:先任意设定一个与其真实的根接近的值Xo作为第一次近似根,由Xo求出f(x 0),过(Xo, f(X 0)点做f(x) 的切线,交x轴于X1,把它作为第二次近似根;再由X1求出f(x 1),过(X1, f(x 1) 点做f(x)的切线,交X轴于X2,求出f(x 2);再作切线如此继续下去,直到 足够接近真正的根X为止。f ' (x o)=f(x o)/(x 1-X 0)Xi= X 0- f(x 0)/ f ' (x 0)这就是牛顿迭代公式。#in clude<math.h>main () float x,x0,f,f1;x=1.5;dox0=x;f=(2*x0-4)*x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 节日灯供货合同协议
- 融资业务咨询合同协议
- 舞蹈教师劳动合同协议
- 衢州方木买卖合同协议
- 蓝牙音响包销合同协议
- 衣服材料收购合同协议
- 苗木种植收购合同协议
- 英文礼品制作合同协议
- 苹果果园转让合同协议
- 舞蹈学校员工合同协议
- 湖南能源集团有限公司招聘笔试题库2025
- 沪科版2025年八年级(下)期中数学试卷(一)(考查范围:第16~18章)
- 智能座舱试题解析及答案
- 生态管理考试题及答案
- 2025春季学期国开电大本科《人文英语3》一平台在线形考综合测试(形考任务)试题及答案
- 脱敏算法在医疗健康领域的应用-全面剖析
- 三人养殖合作合同范本与三人合伙协议书8篇
- 龙门吊安装、拆卸工程安全监理实施细则
- GB/T 25020.1-2025电气化铁路接触网支柱第1部分:钢支柱
- 新能源汽车维修技术论文
- 2025年正式的劳动合同模板
评论
0/150
提交评论