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.1223.关于ASCII码,在计算机中的表示方法准确地描述是。A.使用8位二进制数,最右边一位为1B.使用8位二进制数,最左边一位为1C.使用8位二进制数,最右边一位为0D.使用8位二进制数,最左边一位为04.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________。A.X∧Y=1000B.X∨Y=1111C.X⊕Y=0011D.ˉY=10005.下列叙述中正确的是()。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=()162.(.10111)2=()8=()16=()103.输入三个数,计算并输出三个数的和与三个数的乘积。程序如下:#includevoidmain(){inta,b,c,s,z;printf(Pleaseinputabc:\n);s=a+b+c;printf(%d\n,s);}*4.输入三角形三条边的边长,计算并输出三角形的面积。根据三条边的边长,计算三角形面积的公式如下:()()()2xyzssxsyszs面积其中程序如下:#include#includevoidmain(){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!*****************************解:#includevoidmain(){printf(*****************************\n);printf(MerryChristmas!\n);printf(HappyNewYear!\n);printf(*****************************\n);}2.仿照例编程,输入一个整数,计算这个数的平方。解:#includevoidmain(){inta,z;printf(请输入一个整数:\n);scanf(%d,&a);z=a*a;printf(%d*%d=%d\n,a,a,z);}*3.仿照例编程,输入两个数后,输出其中较小值。解:#includefloatmin(floatx,floaty){floatm;if(xy)m=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的解。解:#includevoidmain(){floata,b,x;printf(请输入a、b:\n);scanf(%f%f,&a,&b);x=-a/b;printf(x=%f\n,x);}*5.仿照例编程,输入圆柱体的半径和高,计算并输出圆柱体的体积。解:#includevoidmain(){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/je2-e2countIntnumber$23next_sizeofIFsum_12_123#NO1:doublefor解:C的用户标识符有:x_1X_2Highe2countIntnumbernext_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=26.设c为字符型变量值为‘A’,a为整型变量值为97,执行语句“putchar(c);putchar(a);”后,输出结果为()。A.AaB.A97C.A9D.aA7.已知字母A的ASCII码值为65,以下语句段的输出结果是()。charc1='A',c2='Y';printf(%d,%d\n,c1,c2);A.输出格式非法,输出错误信息B.65,90C.A,YD.65,898.若要使用输入语句“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.#DEFINEN1010.在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);”的输出结果是。解:$\n2.inti=123;floatx=–;语句“printf(i=%5dx=%\n,i,x);”的输出结果是。解:i=123x=3.charc='a';inta=65;语句“putchar(c+1);putchar(a);”的输出结果是。解:bA4.inta=98;语句“printf(“%d,%c,%o,%x”,a,a+1,a+2,a+3);”的输出结果是。解:98,c,144,655.intk;floatf;语句“scanf(“%3d%*4d%6f”,&k,&f);”执行时输入.43↙则k=,f=。解:k=123f=6.使用pow()函数时,程序的开头必须写一条预处理命令:。解:#include5.填空题。(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的算术表达式。cddcbadcabexxxyba221|)sin(|tan102)(565.312432解:-(a2+b2)×y4的C表达式:-(a*a+b*b)*pow(y,4)x12tan102的C表达式:(sqrt(2)+10*10)/(pow(tan(x),-1)+5.3|)sin(|x的C表达式:sqrt(pow(fabs(sin(x)),)56ex的C表达式:pow(x,6)-exp(5)cddcbadcab221的C表达式:2*a*b+c+d)/(a+2*b-(c+d)/c/d)二、按照要求,写出下列C的表达式。1.写出int类型变量x为“奇数”的表达式。解:x%2==12.Int类型变量x、y、z,写出描述“x或y中有且仅有一个小于z”的表达式。解:xz&&y=z||x=z&&yz3.将double类型变量y保留四位小数的表达式。解:(int)(y*10000+/4.为变量s赋值:取变量x的符号,取变量y的绝对值。解:s=(x=01:-1)*(y=0y:-y)5.条件“-5≤x≤3”所对应的C逻辑表达式。解:-5=x&&x=36.a、b是字符变量,已知a的值为大写字母、b的值为小写字母,写出判断a、b是否为同一字母(不区分大小写)的逻辑表达式解:a+32==b或b-a==321:07.int类型变量a、b均为两位正整数,写出判断a的个位数等于b的十位数、且b的个位数等于a的十位数的逻辑表达式。解:a%10==b/10&&a/10==b%108.写出判断某个人是否是成年人(年龄大于21),且不是老年人(年龄大于65)的逻辑表达式。解:y21&&y=659.写出取变量a、b、c中最大值的条件表达式。解:(aba:b)c(aba:b):c10.若字符变量ch为小写字母,则将其转换为对应的