C语言程序设计(第二版)习题参考答案1.docx

上传人:暗伤 文档编号:24288182 上传时间:2022-07-04 格式:DOCX 页数:90 大小:186.61KB
返回 下载 相关 举报
C语言程序设计(第二版)习题参考答案1.docx_第1页
第1页 / 共90页
C语言程序设计(第二版)习题参考答案1.docx_第2页
第2页 / 共90页
点击查看更多>>
资源描述

《C语言程序设计(第二版)习题参考答案1.docx》由会员分享,可在线阅读,更多相关《C语言程序设计(第二版)习题参考答案1.docx(90页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C 语言程序设计习题参考答案习 题 1一、判断题1. 在计算机中,小数点和正负号都有专用部件来保存和表示。2. 二进制是由 0 和 1 两个数字组成的进制方式。3. 二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。4. 在整数的二进制表示方法中,0 的原码、反码都有两种形式。5. 有符号数有三种表示法:原码、反码和补码。6. 常用字符的 ASCII 码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。解:1F2T3T4T5T6T二、单选题1. 在计算机中,最适合进行数值加减运算的数值编码是。A. 原码B. 反码C. 补码D. 移码2. 已知英文小写字母m 的

2、 ASCII 码为十进制数 109,则英文小写字母y 的 ASCII 码为十进制数。A. 112B. 120C. 121D. 1223. 关于 ASCII 码,在计算机中的表示方法准确地描述是。A. 使用 8 位二进制数,最右边一位为 1B. 使用 8 位二进制数,最左边一位为 1C. 使用 8 位二进制数,最右边一位为 0D. 使用 8 位二进制数,最左边一位为 04. 设在机器字长 4 位,X0111B,Y1011B,则下列逻辑运算中,正确的是 。 A. XY1000B. XY1111C. XY0011D. Y 10005. 下列叙述中正确的是( )。A高级语言就是机器语言 B汇编语言程序

3、、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序CC 语言因为具有汇编语言的一些特性,所以是汇编语言的一种DC 源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6用 C 语言编写的源程序经过编译后,若没有产生编译错误,则系统将( )。A生成可执行文件B生成目标文件C输出运行结果D自动保存源文件7下列叙述中不正确的是( )。A. main 函数在 C 程序中必须有且只有一个B. C 程序的执行从 main 函数开始,所以 main 函数必须放在程序最前面C. 函数可以带参数,也可以不带参数。D. 每个函数执行时,按函数体中语句的先后次序,依次执行每条语

4、句解:1C2C3D4B5B6B7B三、填空题1(87.625) =() =() =()1028162(1001010111001.10111) =() =() =()2816103输入三个数,计算并输出三个数的和与三个数的乘积。程序如下:#include void main()int a,b,c,s,z;printf(Please input a b c:n); s=a+b+c;printf(%dn,s);*4. 输入三角形三条边的边长,计算并输出三角形的面积。根据三条边的边长,计算三角形面积的公式如下:89面积=其中 s = x + y + z s(s - x)(s - y)(s - z)2

5、程序如下:#include #include void main()double x,y,z,s,dime; scanf(%lf%lf%lf,&x,&y,&z);dime=sqrt(s*(s-x)*(s-y)*(s-z);解:11010111.101127.557.A211271.5612B9.B84793.718753scanf(%f%f%f,&a,&b,&c);z=a*b*c;printf(%f,z);4s=(x+y+2)/2;printf(%f,dim);四、编程题1. 仿照例 1.1,编程序在屏幕上显示:* Merry Christmas!Happy New Year!*解:#incl

6、ude void main()printf(*n); printf(Merry Christmas!n);printf(Happy New Year!n); printf(*n);2. 仿照例 1.2 编程,输入一个整数,计算这个数的平方。解:#includevoid main()int a,z;printf(请输入一个整数:n); scanf(%d,&a);z=a*a; printf(%d*%d=%dn,a,a,z);*3仿照例 1.3 编程,输入两个数后,输出其中较小值。解:#includefloat min(float x, float y)float m;if (xy) m=x; el

7、sem=y; returnm;void main()float a,b,c,mindata; printf(请输入二个数:n); scanf(%f %f,&a,&b); mindata=min(a,b);printf(较小数:%fn,mindata);*4仿照例 1.2 编程,输入 a、b 后,输出一元一次方程 ax+b=0 的解。解:#includevoid main()float a,b,x;printf(请输入a、b:n); scanf(%f %f,&a,&b);x=-a/b; printf(x=%fn,x);*5仿照例 1.2 编程,输入圆柱体的半径和高,计算并输出圆柱体的体积。解:#

8、include void main()float r,h,s,v;printf(Please input r and h:n); scanf(%f %f,&r,&h); v=3.14*r*r*h;printf(V=%fn,v);习 题 2一、判断题1任何变量都必须要定义其类型。2C 语言的 double 类型数据在其数值范围内可以表示任何实数。3C 语言的任何类型数据在计算机内都是以二进制形式存储的。4isdigit(5)的结果为 0。5. printf 函数中格式符“%c”对应的参数只能是字符类型。6. 按格式符“%d”输出 float 类型变量时,截断小数位取整后输出。7. 在 C 语言程

9、序中,ABC 与 abc 是两个相同的变量。8. scanf 函数中的格式符“%d”不能用于输入实型数据。9. 格式符“%f”不能用于输入 double 类型数据。10. 当格式符中指定宽度时,输出的信息完全取决于所指定的宽度。解:(1)T(2)F(3)T(4)F(5)F(6)F(7)F(8)T(9)T(10)F10,1500070x3d1e0e1o7o8xxo1.52e0.5sin(3)0xf16a0091.414E+22.54a+20x100h012810L合法的C 常量有:整型常量:0070x3d0xf1610L实型常量:1e01.414E+2字符型常量:xa二、指出下列各项中哪些是 C

10、 语言中的常量,并指出其类型解:三、指出下列各项中哪些是 C 语言中的用户标识符x_1e2X_2e2HighcountprintfIntnumber3DS$23i/jnext_sizeofIFsum_12_123#NO1:doublefor解:C 的用户标识符有:x_1X_2Highe2countIntnumber next_IFsum_12四、单项选择题1.C 语言中,char 型数据在内存中的存储形式是( )。A原码B反码C补码DASCII 码2若有定义语句“char c=72;”则变量 c()。A包含 1 个字符 B包含 2 个字符C包含 3 个字符 D定义不合法3.C 语言中的基本数据

11、类型包括( )。A整型、实型、逻辑型B整型、实型、字符型 C整型、逻辑型、字符型D整型、实型、逻辑型、字符型4. 设 c1、c2 为字符型变量,执行语句“c1=getchar( );c2=getchar( );”时,从键盘输入 A,c1 和 c2 的值分别为()。A都是ABc1 是A,c2 未输入Cc1 未输入,c2 是ADc1 是A,c2 是n5. a、b 是整型变量,执行语句“scanf(a=%d,b=%d,&a,&b);”,使 a 和 b 的值分别为 1 和 2,正确的输入是()。A1 2B1,2Ca=1,b=2Da=1 b=26. 设 c 为字符型变量值为A,a 为整型变量值为 97,

12、执行语句“putchar(c);putchar(a);”后,输出结果为()。AAaBA97CA9DaA 7已知字母 A 的 ASCII 码值为 65,以下语句段的输出结果是( )。char c1=A,c2=Y; printf(%d,%dn,c1,c2);A输出格式非法,输出错误信息B65,90 CA,YD65,898. 若要使用输入语句“scanf(%4d%4d%10f,&i,&j,&x);”,为 i 输入10,为 j输入 12,为 x 输入 345.67,则正确的输入形式是( )。A1012345.67B10 12 345.67C10001200345.67D10,12,345.679. 能

13、正确地定义符号常量的是( )。A#define n=10B#define n 10C#define n 10; D#DEFINE N 10 10在 C 语言中,int、char、short 三种类型数据在内存中所占的字节数( )。A由用户自己定义 B均为 2 个字节C是任意的D由机器字长决定解:(1) D(2) A(3) B(4) D(5) C(6) A(7) D(8) B(9) B(10) D五、填空题1char ch=$;float x=153.4523;语句“printf(%c%8.2fn,ch,x);”的输出结果是解:$153.45n。2int i=123;float x= 1234.

14、56789;语句“printf(i=%5dx=%7.3fn,i,x);”的输出结果是解:i=123x=-1234.568。3char c=a;int a=65;语句“putchar(c+1);putchar(a);”的输出结果是解:bA。4int a=98;语句“printf(“%d,%c,%o,%x”,a,a+1,a+2,a+3);”的输出结果是解:98,c,144,65。5int k; float f;语句“scanf(“%3d%*4d%6f”,&k,&f);”执行时输入12345678765.43 则 k=,f=。解:k=123f=8765.46使用 pow()函数时,程序的开头必须写一

15、条预处理命令:。解:#include 5填空题。(1)int i=123,j=45;函数printf(%d,%dn,i,j);的输出结果是。解:123,45(2)int i=123; float x=-45.678;语句printf(i=%5dx=%7.4fn,i,x); 的输出结果是。解:i=123x=-45.6780(3)float alfa=60,pi=3习 题 32 + 10 2一、根据下列数学式,写出C 的算术表达式。- (a 2 + b 3 ) y 4x 6 - e 51 ab + c + d22 + 102解:-(a2+b2)y4tan -1 x + p| sin( x ) |3

16、.5的 C 表达式:-(a*a+b*b)*pow(y,4)c + da + 2b -cdtan-1 x + p的 C 表达式:(sqrt(2)+10*10)/(pow(tan(x),-1)+3.141593)| sin(x) |3.5的 C 表达式:sqrt(pow (fabs (sin(x),3.5)x6 - e51的 C 表达式:pow(x,6)-exp(5)ab + c + d2的 C 表达式:(1.0/2*a*b+c+d)/(a+2*b-(c+d)/c/d)c + da + 2b -cd二、按照要求,写出下列C 的表达式。1. 写出int 类型变量x 为“奇数”的表达式。解:x%2=1

17、2. Int 类型变量x、y、z,写出描述“x 或y 中有且仅有一个小于z”的表达式。解:x=z|x=z&y=0?1:-1)*(y=0?y:-y)5. 条件“-5x3”所对应的C 逻辑表达式。解:-5=x&x21&yb?a:b)c?(ab?a:b):c10. 若字符变量ch 为小写字母,则将其转换为对应的大写字母。解:ch=ch=a&ch=z?ch-32:ch三、单项选择题1. 设 int x=3,y=4,z=5;,下列表达式中值为 0 的是()。Ax&yB.x=yCx|y+z&yzD.!(x=y&chB&!y”的值是()。A0B.1C“假”D“真”3. 判断char 型变量c 为数字字符的正

18、确表达式为( )。A0=c=9 B0=c&c=0|c=0&c=94. 下列运算符中,优先级最低的是( )。A?:B&C= =D*=5. 若有条件表达式“x?a+:b-”,则以下表达式中()等价于表达式x。Ax=0Bx!=0Cx=1Dx!=16. 有定义int k=4,a=3,b=2,c=1;,表达式“ka?k:cc);后,m 和 n 的值分别为。解:m 为 0,n 为 29设 int a=2;,表达式“a%2!=0”的值为。解:010设 char c=y;,表达式“c=a&c=A&c=Z”的值为。解:111. 写出与代数式(x+2)ex+2对应的C 表达式。解:(x+2)*exp(x+2)12

19、. 设int a=2;执行语句a=3*5,a*4;后 a 的值为。解:15五、写出下列程序的输出结果。1#include void main()unsigned k,n; scanf(%u,&n);k=n%10*10+n/10;输/入数据为:69printf(n=%dk=%dn,n,k);解:n=69k=96 2#include void main()int x=2,y=3;x*=y+4; printf(%d,%dn,x,y); x/=y=5;printf(%d,%dn,x,y); x-=y%2;printf(%d,%dn,x,y);解:14,32,51,53#include void mai

20、n()int a, b;a=8; b=7;a=(a- =b+)? a%3 : a/3;printf(a=%d b=%dn,a,b);解:a=2 b=8六、程序填空题。1. 以下程序输入三个整数值给a,b,c,程序把b 中的值给a,把c 中的值给b,把a 中的值给c,交换后输出a、b、c 的值。例如输入 1 2 3,输出a=2 b=3 c=1。#include void main() int a,b,c,;printf(“Enter a,b,c:”);scanf(“%d%d%d”,); a=b; b=c;printf(“a=%d b=%d c=%dn”,a,b,c);解: t &a,&b,&c

21、t=a c=t2. 以下程序不借助任何变量把a、b 中的值进行交换。#include void main() int a,b;printf(“Input a,b:”);scanf(“%d%d”,);a+=; b=a-; a- =;printf(“a=%d b=%dn”,a,b);解: &a,&b b b b七、编程题。1. 输入 3 个字符后,按各字符ASCII 码从小到大的顺序输出这些字符。解:#include void main() char c1,c2,c3,t,min,mid,max;c1=getchar();c2=getchar(); c3=getchar(); min=(t=c1c

22、2?c1:c2)c2?c1:c2)c3?t:c3; mid=c1+c2+c3-min-max; putchar(min);putchar(mid); putchar(max);2. 输入两点坐标(x1,y1)、(x2,y2),计算并输出两点间的距离。解:#include #include void main()double x1,y1,x2,y2,d; printf(“请输入两点坐标 (x1,y1),(x2,y2)n”);scanf(“(%lf,%lf),(%lf,%lf)”,&x1,&y1,&x2,&y2);d=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); pri

23、ntf(“两点间距离=%fn”,d);3. 编写程序,计算球体积并输出它的值。要求输入半径值,计算结果保留三位小数。解:#include #include #define PI 3.1415926 void main() double r,gv; printf(“请输入半径值:n”); scanf(“%lf”,&r); gv=4.0/3*PI*pow(r,3);printf(“半径为%f 的球的体积为:%.3fn”,r,gv);4. 输入三角形的底和高,求三角形面积。解 :#include #define PI 3.14159void main()double a,h,s;printf(“请输

24、入三角形的底,高n”); scanf(“%lf,%lf”,&a,&h); s=a*h/2;printf(“三角形面积=%fn”,s);5. 编写程序,输入一个实数后输出该数的绝对值。解:#include void main()double x,y;printf(“请输入一个实数n”); scanf(“%lf”,&x); y=x=0?x:-x; printf(“|%g|=%gn”,x,y);6. 输入梯形的上底、下底和高,求梯形面积。解:#include void main()double a,b,h,s;printf(“请输入梯形的上底,下底,高n”); scanf(“%lf,%lf,%lf”

25、,&a,&b,&h); s=(a+b)*h/2;printf(“ 梯形面积=%fn”,s);7. 输入矩形的边长,求矩形面积。解:#include void main()double a,b,s;printf(“请输入矩形的长,宽n”); scanf(“%lf,%lf”,&a,&b); s=a*b;printf(“ 矩形面积=%fn”,s);8. 已知等差数列的第一项为a,公差为d,求前n 项之和,a、d、n 由键盘输入。解:#include void main()int a,d,n,sum;printf(“请输入等差数列的首项 公差 项数n”); scanf(“%d%d%d”,&a,&d,&

26、n); sum=a*n+n*(n-1)*d/2;printf(“ sum=%dn”,sum);9. 编写程序,将d 天 h 小时m 分钟换算成分钟,输入d、h、m,输出换算结果。解:#include void main()int d,h,m,t;printf(“请输入天 小时 分钟n”); scanf(“%d%d%d”,&d,&h,&m); t=d*24*60+h*60+m;printf(“%d 天%d 小时%d 分钟=%d 分钟n”,d,h,m,t);10. 编写程序,求出给定半径 r 的圆以及内接正 n 边形的面积,输出计算结果。r 和 n 的值由键盘输入。解:#include #incl

27、ude #define PI 3.14159 void main()习 题 4double r,s1,s2; int n;printf(“Input r nn”); scanf(“%lf%d”,&r,&n); s1=PI*r*r; s2=n/2.0*r*r*sin(2*PI/n);printf(“圆面积=%f,正内接%d 边形面积=%fn”,s1,s2);一、单项选择题1. 下列语句将小写字母转换为大写字母,其中正确的是( )。Aif(ch=a&ch=a&ch=a&cha&chs)t=u;t=s;Bt=s;if(us)t=u;Cif(us)t=s;else t=uDt=u;if(us)t=s;

28、 3假设变量x、k 都已定义,下列语句片段中,无语法错误的是( )。A. switch(x)B. switch(x) case x=90:putchar(A); case x60:putchar(E);case 1+2: k=A; defualt: k=E; case 2*4: k=B;C. switch(x)D. switch(x)case 2+x: k=x-2; case 3*x: k=x+3; default: k=0;case 3.5:k=0.5*x;case 7.8:k=8*x; default:k=0;*4与语句while(!s )中的条件等价的是()。As=0Bs!=0Cs=1D

29、s=0 5下列语句中,哪一个可以输出26 个大写英文字母()。Afor(a=A;a=Z;printf(%c,+a); Bfor(a=A;aZ;a+)printf(%c,a); Cfor(a=A;a=Z;printf(%c,a+); Dfor(a=A;aZ;printf(%c,+a);6判断下面的while 循环体的执行次数()。i=0; k=10;while( i=8 )i=k;A8 次B10 次C2 次D无数次解:(1) B(2) B(3) B(4) A(5) C(6) D二、写出下列程序的输出结果1#include void main()there#char x;int n=0,k=0;w

30、hile(x=getchar()!=#) / 运行时输入: a thefthetheswitch(x)case t: k+; break;case h: if(k=1) k+; break; case e: if(k=2) k+; break; default: k=0;*2解:3if(k=3)n+; printf(%dn,n);#include void main( )int k=0; char c=A;do switch (c+) case A: k+; break; case B: k-;case C: k+=2; break; case D: k=k%2; break; case E:

31、 k=k*10; break; default: k=k/3; k+;while(cG);printf(k=%dn, k);*3解:k=8#include #include void main()char a,b,x; int i; dox=getchar();/运/行时输入:2abcD while (isupper(x)=0);for(a=A; a=x; a+)for(b=A; bA+x-a; b+) putchar( ); for(i=1;i=2*(a-A)+1;i+)putchar(a); putchar(n);注:isupper(x)是判断 x 是否大写字母的函数,如果x 是大写字母函

32、数值为 1否则为 0。解:ABBBCCCCCDDDDDDD4#include void main()int i,n;i=2;scanf(%d,&n);while(n1) if(n%i=0)printf(%dt,i); n/=i;elsei+; printf(n);输/入/ 2520解: 2223357三、填空题1. 求 110 的乘积,写作:for(, i=1;i=10;+i)s*=i;解: s=12. 下面程序段执行后,x、y 的值分别为。y=1; x=5;while(x) x-; y+;解: x、y 分别为 0 和 6*3输入若干个以问号结束的字符,同时输出这串字符(不包括问号);whil

33、e(!=?)putchar(ch);解: (ch=getchar()/注/ 意外面的这对括号不能少*4有以下程序片段:s=1.0;for(k=1;k=n; k+) s+=1.0/(k*(k+1);printf(%fn,s);填空,使下程序段与上程序段功能完全相同。s=0.0;k=0;dos+=d;d=1.0/(k*(k+1);while();printf(%fn,s);解: d=1k+k=n5下列程序输出 610000 之间的亲密数对,填空将程序补充完整。若 a、b 是亲密数对, 则 a 的因子和等于 b,b 的因子和等于 a,且 a 不等于 b。#include void main()int

34、 a,b,c,i;for(a=6;a=10000;a+) b=1;for(i=2;i=a/2;i+)if()b+=i;for(i=2;i=b/2;i+) if(b%i=0) c+=i;if(&a!=b) printf(%d%dn,a,b);解:a%i=0c=1;c=a6计算 2+22+222+2222+22+2 的和。#includenvoid main()int s=1,t=1,a,n;scanf(%d&n);for(int i=2;i=n;i+) t=t*10+1;printf(SUM=%dn,s);解:a=2;s+=t;s*=a;四、编程题1. 输入一个实数,输出它的平方根值,如果输入数小于0,则输出“The number is error!” 的提示。解:#include #include void main()doublea,x; printf(“Input data:n”); scanf(“%lf”,&a); if(a=0)x=sqrt(a);printf(“%g 的平方根值为%gn”,a,x);elseprintf(“The number is error!n”);2. 用 if 语句编程序,输入 x 后按下式计算 y 值,并输出结果。x+2*x

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com