第3章课后练习及作业习题指导(参考答案)作业01C语言基础知识一、选择题1.C语言程序的基本单位是()。A)函数B)过程C)子程序D)子例程2.下列个选项中,合法的C语言关键字是()。A)integerB)sinC)stringD)void3.下列选项中,不是C语言提供的合法关键字的是()。A)switchB)cherC)defaultD)case4.以下选项中合法的用户标识符是()。A)intB)a#C)5memD)_2435.C语言程序一行写不下时,应该()。A)用回车换行B)在任意空格处换行C)用分号换行D)用逗号换行6.在C程序中,可以作为用户标识符的一组标识符是()。A)voiddefineWORDB)as_b3_224ElseC)switch—wercaseD)4bDOSIG7.在C语言中,下列合法的字符常量是()。A)’\039B)’\x76’C)’ab’D)’\o’8.以下说法正确的是()。A)C语言程序是从第一个定义的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序是从main()函数开始执行的D)C语言程序中的main()函数必须放在程序的开始部分9.()是构成C语言程序的基本单位A)函数B)变量C)子程序D)语句10.一个C语言程序总是从()开始执行的A)主过程B)主函数C)子程序D)主程序11.以下叙述不正确的是()A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main()函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面12.C语言规定:在一个源程序中,main()函数的位置()A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后13.以下叙述正确的是()A)在C程序中,main()函数必须位于程序的最前面B)C程序中的每行中只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误14.C语言中标识符只能由字母、数字和下划线3种字符组成,且第一个字符()A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母、数字和下划线中任意一种字符二、填空题1.一个C语言编写的程序是从main函数开始执行的。2.结构化程序所规定的3种基本控制结构是顺序结构、选择结构和循环结构。3.C语言的标识符可分为保留字、用户定义标识符和预定义标识符3类。4.在C语言中,整数可用十进制、八进制和十六进制三种。5.一个C语言程序的开发过程包括:编辑、编译、连接和运行4步。6.一个C源程序中至少应包括一个main函数。7.在一个C源程序中,注释部分两侧分界符分别为/*和*/。8.C语言中的标识符只能由3种字符组成,它们是字母、数字和下划线。9.C程序执行过程生成的3种文件及扩展名为.c、.obj和.exe。作业02数据类型及运算一、选择题1.C语言中简单数据类型有()。A)整型、实型、逻辑型B)整型、字符型、逻辑型C)整型、实型、字符型D)整型、实型、字符型、逻辑型2.以下选项中正确的整型常量是()。A)-37B)32,758C)326D)6.3.以下选项中合法的C语言字符常量是()。A)‘\t’B)”A”C)67D)A4.以下选项中不正确的实型常量是()。A)123B)1e4C)3.640E-1D)0.355.不合法的十六进制数是()。A)0xffB)0X11C)0x1gD)0Xabc6.以下选项中合法的C语言赋值语句是()。A)a=b=34B)a=34,b=34C)--iD)m=(int)(x+y);7.在C语言中,char型数据在内存中是以()形式储存的。A)原码B)补码C)ASCII码D)反码8.以下()是不正确的转义字符A)‘\\’B)‘\”C)‘020’D)’\0’9.若有代数式3ae/bc,则不正确的C语言表达式是()。A)a/b/c*e*3B)3*a*e/b/cC)3*a*e/b*cD)a*e/c/b*310.在C语言中,要求参加运算的数必须是整数的运算符是()。A)%B)/C)!D)**11.若已定义x和y为double类型,则表达式“x=1,y=x+3/2“的值是()。A)1B)2C)2.0D)2.512.若变量已正确定义并赋值,符合C语言语法的表达式是()。A)a=a+1B)a=7+b+c,a++C)int(12.3/4)D)a=a+7=c+b13.若a为整型变量,则下列语句()。a=-2L;printf(“%d\n”,a);A)赋值不合法B)输出值为-2C)输出值不为确定值D)输出值为214.对于条件表达式(M)?(a++):(a--),其中表达式M等价于()。A)M==0B)M==-1C)M!=0D)M!=115.若有定义:intx=3,y=2;floata=2.5,b=3.5;则下面表达式的值为()。(x+y)%2+(int)a/(int)bA)1.0B)1C)2.0D)216.若x和n均是int型变量,且x初值为12,n初值为5,则执行下面表达式后x值为()。x%=(n%=2)A)0B)1C)2D)317.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为()。A)7B)8C)9D)1018.设intx=1,y=1;表达式(!x||y--)的值是()。A)0B)1C)2D)-119.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()。A)1B)2C)2.0D)2.520.若变量a,i已正确定义,且i已正确赋值,则合法的语句是()。A)i=int(a)B)++i;C)a=a++=5D)a=int(i)21.若执行以下程序段后,c3的值是()。intc1=1,c2=2,c3;c3=1.0/c2*c1;A)0B)0.5C)1D)222.能正确表示逻辑关系”a≥10或a≤0”的C语言表达式是()。A)a=10ora=0B)a=0|a=10C)a=10&&a=0D)a=10||a=023.若变量x、y、z均为double类型且已经正确赋值,不能正确表示x/(y×z)的C语言表达式是()。A)x/y*zB)x*(1/(y*z))C)x/y*1/zD)x/y/z24.设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为()。A)不定值B)4C)3D)125.设a、b、c、d、m、n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=ab)&&(n=cd)运算后,n的值为()。A)0B)1C)2D)326.假定w、x、y、z、m均为int型变量,有如下程序段:w=1;x=2;y=3;z=4;m=(wx)?w:x;m=(my)?m:y;m=(mz)?m:z;则该程序运行后,m的值是()。A)4B)3C)2D)127.已知inti;floatf;正确的语句是()。A)(intf)%i;B)int(f)%i;C)int(f%i);D)(int)f%i;28.已知intj,i=1;,执行语句j=-i++;后,j的值是()。A)1B)2C)-1D)-229.已知inta=4,b=5;,则执行表达式a=ab后,变量a的值为()。A)0B)1C)4D)530.判断char类型数据c1是否为大写字母的最简单且正确的表达式为()。A)’A’=c1=’Z’B)(c1=’A’)&(c1=’Z’)C)(‘A’=c1)AND(‘Z’=c1)D)(c1=’A’)&&(c1=’Z’)二、填空题1.若a是int型变量,则执行表达式a=25/3%3后a的值是2。2.若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n++后x的值为10,n的值为6。3.若x和y都是double型变量,且x初值为3.0,y初值为2.0,则表达式pow(y,fabs(x))的值为8.0。4.表达式pow(2.8,sqrt(double(x))值的数据类型为double。5.若a是int型变量,则表达式(a=4*5,a*2),a+6的值为26。6.若有定义intm=5,y=2;则执行表达式y+=y-=m*=y后y的值为-16。7.已知inta=15,b=240;则表达式(a&b)&b||b的结果为1。8.表达式8.0*(1/2)的值为0.0。9.字符串“ab\034\\\x79”的长度为5。10.若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为1。11.若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为6,b值为4,c值为2。12.若有定义:charc=’\010’;则变量c中包含的字符个数为1。13.若i为int整形变量且赋值为6,则运算i++后表达式的值为6变量i的值是7。14.若二进制a是00101101,若想通过异或运算a^b使a的高4位取反,低4位不变,则二进制b是11110000。15.表达式3&4的值为0,表达式3|4的值为7,表达式3&&4的值为1。三、读程序写结果1.如下程序的运行结果是(33)。#includestdio.hvoidmain(){inty=3,x=3,z=1;printf(“%d%d\n”,(++x,y++),z+2);}2.以下程序的输出结果是(6)。#includestdio.hvoidmain(){inta=5,b=4,c=6,d;printf(“%d\n”,d=ab?(ac?a:c):(b));}3.在C语言中,如果下面的变量都是int类型,则输出的结果是(7)。sum=pad=5;pad=sum++,pad++,++pad;printf(“%d\n”,pad);4.以下程序的输出结果是(9,10)。#includestdio.hvoidmain(){inti=010,j=10;printf(“%d,%d\n”,++i,j--);}作业03基本语句一、选择题1.若有说明:doublea;则正确输入语句是()。A)scanf(“%if”,a)B)scanf(“%lf”,&a)C)scanf(“%if”,&a)D)scanf(“%lo”,&a)2.合法的C语言赋值语句是()。A)a=b=58B)k=int(a+b)C)a=58,b=58D)--i;3.若变量已确定定义,以下程序段输出结果是()。x=5.16894;printf(“%f\n”,(int)(x*1000+0.5)/(float)(1000)”);A)输出格式说明与输出项不匹配,输出无定值B)5.170000C)5.168000D)5.1690004.若有以下程序其输出结果是()。inta=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf(“%d,%d,%d\n”,a,b,c);A)3,0,-10B)0,0,5C)-10,3-10D)3,0,35.以下程序其输出结果是()。#includestdio.hvoidmain(){inta=2,b=5;printf(“a=%%d,b=%%d\n”,a,b);}A)a=%2,d=%5B)a=2,b=5C)a=%%d,b=%%5D)a=%d,b=%d6.以下程序段输出结果是()。floata=3.1415;printf(“|%6.0f|\n”,a,b);A)|3.1415|B)|3.0|C)|3|D)|3.|7.以下程序段输出结果是()。floata=57.666;printf(“*%010.2f*\n”,a);A)*0000057.66B)*57.66*C)*00000.57.67*D)*57.57*8.若变量c定义为float型,当从终端输入283.1900后按回车,能给变量c赋以283.19的输入语句是()。A)scanf(“%f”,c);B)scanf(“%8.4f”,&c);C)scanf(“%d”,&c)D)scanf(“%8f”,&c);9.若有以下定义语句,则输出结果是