习题答案第1章1.1填空题1.1.1应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main。1.1.2一个函数由__函数头__和__函数体__两部分组成。1.1.3在C语言中,输入操作是由库函数__scanf完成的,输出操作是由库函数_printf_完成的。1.1.4通过文字编辑建立的源程序文件的扩展名是_.c__;编译后生成目标程序文件,扩展名是__.obj__;连接后生成可执行程序文件,扩展名是_.exe_;运行得到结果。1.1.5C语言程序的基本单位或者模块是__函数__。1.1.6C语言程序的语句结束符是_;___。1.1.7编写一个C程序,上机运行要经过的步骤:______________________________。1.1.8在一个C语言源程序中,注释部分两侧的分界符分别为_/*__和__*/__。1.1.9C语言中的标识符只能由三种字符组成,它们是字母、数字和下划线。且第一个字符必须为字母或下划线。1.1.10C语言中的标识符可分为关键字、预定义标识符和用户标识符3类。1.2选择题1.2.1一个C程序的执行是从(A)。A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束1.2.2以下叙述不正确的是(C)。A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)在C程序中,注释说明只能位于一条语句的后面D)C程序的基本组成单位是函数1.2.3C语言规定:在一个源程序中,main函数的位置(C)。A)必须在程序的开头B)必须在系统调用的库函数的后面C)可以在程序的任意位置D)必须在程序的最后1.2.4C编译程序是(A)。A)将C源程序编译成目标程序的程序B)一组机器语言指令C)将C源程序编译成应用软件D)C程序的机器语言版本1.2.5要把高级语言编写的源程序转换为目标程序,需要使用(D)。A)编辑程序B)驱动程序C)诊断程序D)编译程序1.2.6以下叙述中正确的是(C)。A)C语言比其他语言高级B)C语言可以不用编译就能被计算机识别执行C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D)C语言出现的最晚,具有其他语言的一切优点1.2.7以下叙述中正确的是(A)。A)C程序中注释部分可以出现在程序中任意合适的地方B)花括号“{”和“}”只能作为函数体的定界符C)构成C程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C语句之间的分隔符,不是语句的一部分1.2.8以下叙述中正确的是(B)。A)C语言的源程序不必通过编译就可以直接运行B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令C)C源程序经编译形成的二进制代码可以直接运行D)C语言中的函数不可以单独进行编译1.2.9用C语言编写的代码程序(B)。A)可立即执行B)是一个源程序C)经过编译即可执行D)经过编译解释才能执行1.2.10以下叙述中正确的是(C)。A)在C语言中,main函数必须位于程序的最前面B)C语言的每行中只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可以发现注释中的拼写错误1.2.11下列4组选项中,均不是C语言关键字的选项是(A)。A)defineB)getcC)includeD)whileIFcharscanfgotypeprintfcasepow1.2.12下列4组选项中,均是C语言关键字的选项是(B)。A)autoB)switchC)signedD)ifenumtypedefunionstructincludecontinuescanftype1.2.13C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符(C)。A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母、数字和下划线中任一种字符1.3编程题1.3.1参照本章例题,编写一个C程序,要求输出如下字符。***************************************************************************WelcometoExpo2010!Shanghai2010#includestdio.hvoidmain(){printf(“***************************************************************************\n”);printf(“WelcometoExpo2010!\n”);printf(“Shanghai2010\n”);printf(“***************************************************************************\n”);}1.3.2设计一程序,输入3个整数,计算并显示输出这3个整数之和。#includestdio.hvoidmain(){inta,b,c;printf(“inputa,b,c:\n”);scanf(“%d%d%d”,%a,%b,%c);printf(“thesumofa,b,cis%5d\n”,a+b+c);}第2章2.1填空题2.1.1C程序中数据有常量和变量之分,其中,用一个标识符代表一个常量的,称为符号常量。C语言规定在程序中对用到的所有数据都必须指定其数据类型,对变量必须做到先定义,后使用。2.1.2C语言中,用关键字float定义单精度实型变量,用关键字double定义双精度实型变量,用关键字char定义字符型变量。2.1.3在C语言中,以16位PC机为例,一个char型数据在内存中所占的字节数为1;一个int型数据在内存中所占的字节数为2,则int型数据的取值范围为-32768~32767。一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为8。单精度型实数的有效位是6-7位,双精度型实数的有效位是15-16位。2.1.4设C语言中的一个基本整型数据在内存中占2个字节,若欲将整数135791正确无误地存放在变量a中,应采用的类型说明语句是longinta=15791;。2.1.5C的字符常量是用单引号括起来的1个字符,而字符串常量是用双引号括起来的字符序列。2.1.6C语言中,用“\”开头的字符序列称为转义符。转义符“\n”的功能是回车换行;转义符“\r”的功能是回车。2.1.7若有定义:charc=‘\010’;则变量c中包含的字符个数为1。2.1.8负数在计算机中是以补码形式表示。2.1.9C语言中,&作为双目运算符是表示的是按位与,而作为单目运算符时表示的是取地址。2.1.10在C语言的赋值表达式中,赋值号左边必须是变量。2.1.11自增运算符++、自减运算符--,只能用于变量,不能用于常量或表达式。++和--的结合方向是“自右左至左”。2.1.12若a是int型变量,则执行下面表达式后a的值为2。a=25/3%32.1.13写出下列数所对应的其它进制数(D对应十进制,B对应二进制,o对应八进制,H对应十六进制)32D=100000B=40O=20H75D=1001011B=113O=4BH2.1.14假设已指定i为整型变量,f为float变量,d为double型变量,e为long型变量,有式子10+'a'+i*f-d/e,则结果为double型。2.1.15若有定义:intx=3,y=2;floata=2.5,b=3.5;则下面表达式的值为1。(x+y)%2+(int)a/(int)b2.1.165/3的值为1,5.0/3的值为1.666667。2.1.17若有以下定义,intm=5,y=2;则执行表达式y+=y-=m*=y后的y值是-16。2.1.18若a是int型变量,则表达式(a=4*5,a+2),a+6的值为26。2.1.19若x和n均为int型变量,且x的初值为12,n的初值为5,则执行表达式x%=(n%=2)后x的值为:0。2.1.20若有定义语句:inte=1,f=4,g=2;floatm=10.5,n=4.0,k;,则执行表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是13.7。2.2选择题2.2.1逗号表达式(a=3*5,a*4),a+15的值是(C)。A)15B)60C)30D)不确定2.2.2若有以下定义和语句:charc1='a',c2='f';printf(%d,%c\n,c2-c1,c2-'a'+'B');则输出结果是:(D)A)2,MB)5,!C)2,ED)5,G2.2.3sizeof(float)是(B)。A)一个双精度型表达式B)一个整型表达式C)一种函数调用D)一个不合法的表达式2.2.4若有以下定义,则能使值为3的表达式是(D)。intk=7,x=12;A)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(k%=5)2.2.5在C语言中,要求运算数必须是整型的运算符是(A)。A)%B)/C)D)!2.2.6下面4个选项中,均是合法整型常量的选项是(A)。A)160B)-0xcdfC)-01D)-0x48a-0xffff01a986,0122e50110xe06680x2.2.7下面4个选项中,均是不合法浮点数的选项是(B)。A)160.B)123C)-.18D)-e30.122e4.2123e4.234E3.e50.01e32.2.8下面正确的字符常量是(C)。A)”C”B)”\\”C)’W’D)’’2.2.9在C语言中,int、char和short三种类型数据在内存中所占用的字节数(D)。A)由用户自己定义B)均为2个字节C)是任意的D)由所用机器的机器字长决定2.2.10假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)后x的值为(B)。A)7B)8C)6D)22.2.11假设所有变量均为整型,则表达式x=(i=4,j=16,k=32)后x的值为(C)。A)4B)16C)32D)522.2.12若有代数式xx103log,则正确的C语言表达式是(D)。A)fabs(x*3+log(x))B)fabs(pow(x,3)+log(x))C)abs(pow(x,3.0)+log(x))D)fabs(pow(x,3.0)+log(x))2.2.13设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是(B)。A)n=(n*100+0.5)/100.0B)m=n*100+0.5,n=m/100.0C)n=n*100+0.5/100.0D)n=(n/100+0.5)*100.02.2.14以下不正确的叙述是(D)。A)在C语言中,逗号运算符的优先级最低B)在C语言中,APH和aph是两个不同的变量C)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放入a中,而b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值2.2.15以下正确的叙述是(D)。A)在C语言中,每行中只能写一条语句B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数C)在C程序中,无论是整数还是实数,都能被准确无误地表示D)在C程序中,%是只能用于整数运算的运算符2.3编程题2.2.1编写一程序,求出给定半径r的圆的面积和周长,并输出计算结果。其中,r的值由用户输入,用实型数据处理。#includestdio.h#definePI3.14159voidmain(){floatr,c,s;printf(inputthe半径);scanf(%f,&r);c=2*PI*r;s=PI*r*r;printf(周长为%5.2f,面积为%5.2f\n,c,s);}2.2.2已知华氏温度和