C语言程序设计第二版习题参考答案.docx
- 文档编号:30586821
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:50
- 大小:70.56KB
C语言程序设计第二版习题参考答案.docx
《C语言程序设计第二版习题参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第二版习题参考答案.docx(50页珍藏版)》请在冰豆网上搜索。
C语言程序设计第二版习题参考答案
C语言程序设计习题参考答案
习题1
一、判断题
1.在计算机中,小数点和正负号都有专用部件来保存和表示。
2.二进制是由0和1两个数字组成的进制方式。
3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。
4.在整数的二进制表示方法中,0的原码、反码都有两种形式。
5.有符号数有三种表示法:
原码、反码和补码。
6.常用字符的ASCII码值从小到大的排列规律是:
空格、阿拉伯数字、大写英文字母、小写英文字母。
解:
1.F2.T3.T4.T5.T6.T
二、单选题
1.在计算机中,最适合进行数值加减运算的数值编码是。
A.原码B.反码C.补码D.移码
2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII码为十进制数。
A.112B.120C.121D.122
3.关于ASCII码,在计算机中的表示方法准确地描述是。
A.使用8位二进制数,最右边一位为1
B.使用8位二进制数,最左边一位为1
C.使用8位二进制数,最右边一位为0
D.使用8位二进制数,最左边一位为0
4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________。
A.X∧Y=1000B.X∨Y=1111C.X⊕Y=0011D.ˉY=1000
5.下列叙述中正确的是()。
A.高级语言就是机器语言
B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序
C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种
D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果
6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。
A.生成可执行文件B.生成目标文件
C.输出运行结果D.自动保存源文件
7.下列叙述中不正确的是()。
A.main函数在C程序中必须有且只有一个
B.C程序的执行从main函数开始,所以main函数必须放在程序最前面
C.函数可以带参数,也可以不带参数。
D.每个函数执行时,按函数体中语句的先后次序,依次执行每条语句
解:
1.C2.C3.D4.B5.B6.B7.B
三、填空题
1.()10=()2=()8=()16
2.(.10111)2=()8=()16=()10
3.输入三个数,计算并输出三个数的和与三个数的乘积。
程序如下:
#include<>
voidmain()
{
inta,b,c,s,z;
printf("Pleaseinputabc:
\n");
s=a+b+c;
printf("%d\n",s);
}
*4.输入三角形三条边的边长,计算并输出三角形的面积。
根据三条边的边长,计算三角形面积的公式如下:
程序如下:
#include<>
#include<>
voidmain()
{
doublex,y,z,s,dime;
scanf("%lf%lf%lf",&x,&y,&z);
dime=sqrt(s*(s-x)*(s-y)*(s-z));
}
解:
1.
2.
3.scanf("%f%f%f",&a,&b,&c);z=a*b*c;printf("%f",z);
4.s=(x+y+2)/2;printf("%f",dim);
四、编程题
1.仿照例,编程序在屏幕上显示:
*****************************
MerryChristmas!
HappyNewYear!
*****************************
解:
#include<>
voidmain()
{printf("*****************************\n");
printf("MerryChristmas!
\n");
printf("HappyNewYear!
\n");
printf("*****************************\n");
}
2.仿照例编程,输入一个整数,计算这个数的平方。
解:
#include<>
voidmain()
{inta,z;
printf("请输入一个整数:
\n");
scanf("%d",&a);
z=a*a;
printf("%d*%d=%d\n",a,a,z);
}
*3.仿照例编程,输入两个数后,输出其中较小值。
解:
#include<>
floatmin(floatx,floaty)
{floatm;
if(x elsem=y; returnm; } voidmain() {floata,b,c,mindata; printf("请输入二个数: \n"); scanf("%f%f",&a,&b); mindata=min(a,b); printf("较小数: %f\n",mindata); } *4.仿照例编程,输入a、b后,输出一元一次方程ax+b=0的解。 解: #include<> voidmain() {floata,b,x; printf("请输入a、b: \n"); scanf("%f%f",&a,&b); x=-a/b; printf("x=%f\n",x); } *5.仿照例编程,输入圆柱体的半径和高,计算并输出圆柱体的体积。 解: #include<> voidmain() {floatr,h,s,v; printf("Pleaseinputrandh: \n"); scanf("%f%f",&r,&h); v=*r*r*h; printf("V=%f\n",v); } 习题2 一、判断题 1.任何变量都必须要定义其类型。 2.C语言的double类型数据在其数值范围内可以表示任何实数。 3.C语言的任何类型数据在计算机内都是以二进制形式存储的。 4.isdigit(‘5’)的结果为0。 5.printf函数中格式符“%c”对应的参数只能是字符类型。 6.按格式符“%d”输出float类型变量时,截断小数位取整后输出。 7.在C语言程序中,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)F 二、指出下列各项中哪些是C语言中的常量,并指出其类型 10,150007–0x3dπ1e0e1o7o8 ‘x’‘xo’sin(3)0xf16‘\a’‘\009’ +2‘\\’‘a’+20x100h012810L 解: 合法的C常量有: 整型常量: 007–0x3d0xf1610L 实型常量: 1e0+2 字符型常量: ‘x’‘\a’‘\\’ 三、指出下列各项中哪些是C语言中的用户标识符 x_1X_2Highprintfβ3DSi/j e2-e2countIntnumber$23next_ sizeofIFsum_12_123#NO1: doublefor 解: C的用户标识符有: x_1X_2Highe2countIntnumber next_IFsum_12 四、单项选择题 1.C语言中,char型数据在内存中的存储形式是()。 A.原码B.反码C.补码D.ASCII码 2.若有定义语句“charc='\72';”则变量c()。 A.包含1个字符B.包含2个字符C.包含3个字符D.定义不合法 3.C语言中的基本数据类型包括()。 A.整型、实型、逻辑型B.整型、实型、字符型 C.整型、逻辑型、字符型D.整型、实型、逻辑型、字符型 4.设c1、c2为字符型变量,执行语句“c1=getchar();c2=getchar();”时,从键盘输入A↙,c1和c2的值分别为()。 A.都是‘A’B.c1是‘A’,c2未输入 C.c1未输入,c2是‘A’D.c1是‘A’,c2是‘\n’ 5.a、b是整型变量,执行语句“scanf("a=%d,b=%d",&a,&b);”,使a和b的值分别为1和2,正确的输入是()。 A.12B.1,2C.a=1,b=2D.a=1b=2 6.设c为字符型变量值为‘A’,a为整型变量值为97,执行语句“putchar(c);putchar(a);”后,输出结果为()。 A.AaB.A97C.A9D.aA 7.已知字母A的ASCII码值为65,以下语句段的输出结果是()。 charc1='A',c2='Y';printf("%d,%d\n",c1,c2); A.输出格式非法,输出错误信息B.65,90 C.A,YD.65,89 8.若要使用输入语句“scanf("%4d%4d%10f",&i,&j,&x);”,为i输入-10,为j输入12,为x输入,则正确的输入形式是()。 A.–↙B.–1012↙ C.–.67↙D.–10,12,↙ 9.能正确地定义符号常量的是()。 A.#definen=10B.#definen10C.#definen10;D.#DEFINEN10 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 五、填空题 1.charch='$';floatx=; 语句“printf("%c%–\\n",ch,x);”的输出结果是。 解: $\n 2.inti=123;floatx=–; 语句“printf("i=%5dx=%\n",i,x);”的输出结果是。 解: i=123x= 3.charc='a';inta=65; 语句“putchar(c+1);putchar(a);”的输出结果是。 解: bA 4.inta=98; 语句“printf(“%d,%c,%o,%x”,a,a+1,a+2,a+3);”的输出结果是。 解: 98,c,144,65 5.intk;floatf; 语句“scanf(“%3d%*4d%6f”,&k,&f);”执行时输入.43↙ 则k=,f=。 解: k=123f= 6.使用pow()函数时,程序的开头必须写一条预处理命令: 。 解: #include<> 5.填空题。 (1)inti=123,j=45; 函数printf("%d,%d\n",i,j);的输出结果是。 解: 123,45 (2)inti=123;floatx=; 语句printf("i=%5dx=%7.4f\n",i,x);的输出结果是。 解: i=123x= (3)floatalfa=60,pi=3 习题3 一、根据下列数学式,写出C的算术表达式。 解: -(a2+b2)×y4的C表达式: -(a*a+b*b)*pow(y,4) 的C表达式: (sqrt (2)+10*10)/(pow(tan(x),-1)+ 的C表达式: sqrt(pow(fabs(sin(x)),) 的C表达式: pow(x,6)-exp(5) 的C表达式: 2*a*b+c+d)/(a+2*b-(c+d)/c/d) 二、按照要求,写出下列C的表达式。 1.写出int类型变量x为“奇数”的表达式。 解: x%2==1 2.Int类型变量x、y、z,写出描述“x或y中有且仅有一个小于z”的表达式。 解: x 3.将double类型变量y保留四位小数的表达式。 解: (int)(y*10000+/ 4.为变量s赋值: 取变量x的符号,取变量y的绝对值。 解: s=(x>=01: -1)*(y>=0y: -y) 5.条件“-5≤x≤3”所对应的C逻辑表达式。 解: -5<=x&&x<=3 6.a、b是字符变量,已知a的值为大写字母、b的值为小写字母,写出判断a、b是否为同一字母(不区分大小写)的逻辑表达式 解: a+32==b或b-a==321: 0 7.int类型变量a、b均为两位正整数,写出判断a的个位数等于b的十位数、且b的个位数等于a的十位数的逻辑表达式。 解: a%10==b/10&&a/10==b%10 8.写出判断某个人是否是成年人(年龄大于21),且不是老年人(年龄大于65)的逻辑表达式。 解: y>21&&y<=65 9.写出取变量a、b、c中最大值的条件表达式。 解: (a>ba: b)>c(a>ba: b): c 10.若字符变量ch为小写字母,则将其转换为对应的大写字母。 解: ch=ch>='a'&&ch<='z'ch-32: ch 三、单项选择题 1.设intx=3,y=4,z=5;,下列表达式中值为0的是()。 A.'x'&&'y'B.x<=yC.x||y+z&&y–zD.! ((x z||1) 2.已知x=10,ch='A',y=0;,则表达式“x>=y&&ch<'B'&&! y”的值是()。 A.0B.1C.“假”D.“真” 3.判断char型变量c为数字字符的正确表达式为()。 A.'0'<=c<='9'B.'0'<=c&&c<='9'C.c>='0'||c<='9'D.c>=0&&c<=9 4.下列运算符中,优先级最低的是()。 A.: B.&&C.==D.*= 5.若有条件表达式“xa++: b--”,则以下表达式中()等价于表达式x。 A.x==0B.x! =0C.x==1D.x! =1 6.有定义intk=4,a=3,b=2,c=1;,表达式“k c a”的值是()。 A.4B.3C.2D.1 7.执行下列程序段后,变量a,b,c的值分别是()。 intx=10,y=9,a,b,c; a=(--x==y++)--x: ++y;b=x++;c=y; A.a=9,b=9,c=9B.a=8,b=8,c=10 C.a=9,b=10,c=9D.a=1,b=11,c=10 8.有定义inta=9;,语句“a+=a–=a+a;”执行后,变量的值是()。 A.18B.9C.–18D.–9 9.设x和y均为int型变量,则语句“x+=y;y=x–y;x–=y;”的功能是()。 A.把x和y按从小到大排列B.把x和y按从大到小排列 C.无确定结果D.交换x和y中的值 10.有定义doublex=1,y;,表达式“y=x+3/2”的值是()。 A.1B.2C.D. 11.设有定义intx;doubley;,则下列表达式中结果为整型的是()。 A.(int)y+xB.(int)x+yC.int(y+x)D.(double)x+y 12.设有整型变量x,下列说法中,错误的是()。 A.“5.0”不是表达式B.“x”是表达式 C.“! x”是表达式D.“sqrt(x)”是表达式 解: (1)D (2)B(3)B(4)D(5)B(6)D(7)B(8)C(9)D(10)C(11)A(12)A 四、填空题。 1.设floatx=,y=;inta=7;,表达式x+a%3*(int)(x+y)%2/4值为。 解: 2.设intx=2,y=3;,执行语句“x*=x+y”后x的值为。 解: 10 3.设intx=17,y=5;,执行语句“x%=x–y”后x的值为。 解: 5 4.设inta=6,b=4,c=2;,表达式! (a-b)+c-1&&b-c/2的值为。 解: 1 5.设inta=2,b=4,x,y;,表达式! (x=a)||(y=b)&&! 的值为。 解: 0 6.判断变量a、b是否绝对值相等而符号相反的逻辑表达式为。 解: a==-b 7.判断变量a、b中必有且只有一个为0的逻辑表达式为。 解: a*b==0&&a+b! =0 8.设intm=2,n=2,a=1,b=2,c=3;执行语句d=(m=a==b)&&(n=b>c);后,m和n的值分别为。 解: m为0,n为2 9.设inta=2;,表达式“a%2! =0”的值为。 解: 0 10.设charc='y';,表达式“c>='a'&&c<='z'||c>='A'&&c<='Z'”的值为。 解: 1 11.写出与代数式(x+2)ex+2对应的C表达式。 解: (x+2)*exp(x+2) 12.设inta=2;执行语句a=3*5,a*4;后a的值为。 解: 15 五、写出下列程序的输出结果。 1. #include<> voidmain() { unsignedk,n; scanf("%u",&n);3c.3f输入矩形的边长,求矩形面积。 解: #include<> voidmain() { doublea,b,s; printf(“请输入矩形的长,宽\n”); scanf(“%lf,%lf”,&a,&b); s=a*b; printf(“矩形面积=%f\n”,s); } 8.已知等差数列的第一项为a,公差为d,求前n项之和,a、d、n由键盘输入。 解: #include<> voidmain() { inta,d,n,sum; printf(“请输入等差数列的首项公差项数\n”); scanf(“%d%d%d”,&a,&d,&n); sum=a*n+n*(n-1)*d/2; printf(“sum=%d\n”,sum); } 9.编写程序,将d天h小时m分钟换算成分钟,输入d、h、m,输出换算结果。 解: #include<> voidmain() { intd,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<> #include<> #definePI voidmain() { doubler,s1,s2; intn; printf(“Inputrn\n”); scanf(“%lf%d”,&r,&n); s1=PI*r*r; s2=n/*r*r*sin(2*PI/n); printf(“圆面积=%f,正内接%d边形面积=%f\n”,s1,s2); } 习题4 一、单项选择题 1.下列语句将小写字母转换为大写字母,其中正确的是()。 A.if(ch>='a'&ch<='z')ch=ch-32;B.if(ch>='a'&&ch<='z')ch=ch-32; C.ch=(ch>='a'&&ch<='z')ch-32: '';D.ch=(ch>'a'&&ch<'z')ch-32: ch; 2.下列各语句中,能够将变量u、s中最大值赋给变量t的是()。 A.if(u>s)t=u;t=s;B.t=s;if(u>s)t=u; C.if(u>s)t=s;elset=uD.t=u;if(u>s)t=s; 3.假设变量x、k都已定义,下列语句片段中,无语法错误的是()。 A.switch(x){ casex>=90: putchar('A'); casex<60: putchar('E'); } B.switch(x){ case1+2: k='A'; defualt: k='E'; case2*4: k='B'; } C.switch(x){ case2+x: k=x-2; case3*x: k=x+3; default: k=0; } D.switch(x){ case: k=*x; case: k=8*x; default: k=0; } *4.与语句while(! s)中的条件等价的是()。 A.s==0B.s! =0C.s==1D.s=0 5.下列语句中,哪一个可以输出26个大写英文字母()。 A.for(a='A';a<='Z';printf("%c",++a)); B.for(a='A';a<'Z';a++)printf("%c",a); C.for(a='A';a<='Z';printf("%c",a++)); D.for(a='A';a<'Z';printf("%c",++a)); 6.判断下面的while循环体的执行次数()。 i=0; k=10; while(i=8)i=k––; A.8次B.10次C.2次D.无数次 解: (1)B (2)B(3)B(4)A(5)C(6)D 二、写出下列程序的输出结果 1.#include<> voidmain() { charx; intn=0,k=0; while((x=getchar())! ='#'){0c .3f 40°F 31In2In3In4In 年信息查询2.元旦是星期几信息查3.程序结束\n”); printf(“请输入年份: \n”); scanf(“%d”,&ye
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 第二 习题 参考答案