第一部分 C语言理论基础.doc
第一部分 C语言理论基础(1)算法具有五个特性,以下选项中不属于算法特性的是 A)有穷性B)简洁性C)可行性D)确定性(2) 以下叙述中正确的是 A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出(3) 用C语言编写的代码程序A) 可立即执行 B) 是一个源程序C) 经过编译即可执行 D) 经过编译解释才能执行 (4) 结构化程序由三种基本结构组成,三种基本结构组成的算法A) 可以完成任何复杂的任务 B) 只能完成部分复杂的任务C) 只能完成符合结构化的任务 D) 只能完成一些简单的任务 (5) 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是A) 有零个或多个输入 B) 有零个或多个输出 C) 有穷性 D) 可行性(6) 以下叙述中正确的是A) C语言的源程序不必通过编译就可以直接运行B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令C) C源程序经编译形成的二进制代码可以直接运行D) C语言中的函数不可以单独进行编译(7) 以下叙述中正确的是A) C语言比其他语言高级B) C语言可以不用编译就能被计算机识别执行C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D) C语言出现的最晚,具有其他语言的一切优点(8) C语言中用于结构化程序设计的三种基本结构是A) 顺序结构、选择结构、循环结构 B) if、switch、breakC) for、while、do-while D) if、for、continue(9) 结构化程序设计所规定的三种基本控制结构是A) 输入、处理、输出 B) 树形、网形、环形C) 顺序、选择、循环 D) 主程序、子程序、函数(10) 要把高级语言编写的源程序转换为目标程序,需要使用A) 编辑程序 B) 驱动程序 C) 诊断程序 D) 编译程序答案:1) B 2) C 3) B 4) C 5) B 6) B 7) C 8) A 9) C 10) D 第二部分 C语言基本语法知识 一、选择题(1)以下叙述中错误的是 A)用户所定义的标识符允许使用关键字 B)用户所定义的标识符应尽量做到“见名知意” C)用户所定义的标识符必须以字母或下划线开头 D)用户定义的标识符中,大、小写字母代表不同标识(2)以下叙述中错误的是 A)C语句必须以分号结束 B)复合语句在语法上被看作一条语句 C)空语句出现在任何位置都不会影响程序运行 D)赋值表达式末尾加分号就构成赋值语句(3)以下不能正确计算代数式 值的C语言表达式是A)1/3*sin(1/2)*sin(1/2) B)sin(0.5)*sin(0.5)/3C)pow(sin(0.5),2)/3 D)1/3.0*pow(sin(1.0/2),2)(4)以下能正确定义且赋初值的语句是A)int n1=n2=10; B)char c=32;C)float f=f+1.1; D)double x=12.3E2.5;(5)设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是 A)k=k>=k B)-k+ C)k%int(f) D)k>=f>=m(6)有以下程序段 int k=0,a=1,b=2,c=3; k=a<b ? b:a; k=k>c ? c:k;执行该程序段后,k的值是A)3 B)2 C)1 D)0(7)以下选项中可作为C语言合法常量的是 A)-80.B)-080C)-8e1.0D)-80.0e(8).以下不能定义为用户标识符的是 A)MainB)_0C)_intD)sizeof(9)以下选项中,不能作为合法常量的是 A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0(10)有以下程序main() int m=12,n=34; printf("%d%d",m+,+n); printf("%d%dn",n+,+m);程序运行后的输出结果是 A)B)C)D)(11)若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a<b?a:c<d?c:d的值 A)1 B)2 C)3 D)4(12)下列选项中,不能用作标识符的是A) _1234_ B) _1_2 C) int_2_ D) 2_int_(13)有以下程序main() int m=3,n=4,x; x=-m+; x=x+8/+n; printf("%dn",x);程序运行后的输出结果是A) 3 B) 5 C) -1 D) -2(14)以下符合C语言语法的实型常量是A) 1.2E0.5 B) 3.14.159E C) .5E-3 D) E15(15) 以下4组用户定义标识符中,全部合法的一组是A) _main B) If C) txt D) int enclude -max REAL k_2 sin turbo 3COM _001(16) 若以下选项中的变量已正确定义,则正确的赋值语句是A) x1=26.8%3 B) 1+2=x2 C) x3=0x12 D) x4=1+2=3;(17) 设有以下定义int a=0; double b=1.25;char c=A;#define d 2则下面语句中错误的是A) a+; B) b+ C) c+; D) d+; (18)设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式 计算结果不相符的是A) (a+B) *h/2 B) (1/2)*(a+B) *hC) (a+B) *h*1/2 D) h/2*(a+B)(19) 以下叙述中正确的是A) C程序中注释部分可以出现在程序中任意合适的地方B) 花括号“”和“”只能作为函数体的定界符C) 构成C程序的基本单位是函数,所有函数名都可以由用户命名D) 分号是C语句之间的分隔符,不是语句的一部分(20) 以下选项中可作为C语言合法整数的是A) 10110B B) 0386 C) 0Xffa D) x2a2(21) 以下不能定义为用户标识符的是A) scanf B) Void C) _3com_ D) int(22) 设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是A) x=x*100+0.5/100.0; B) x=(x*100+0.5)/100.0;C) x=(int)(x*100+0.5)/100.0; D) x=(x/100+0.5)*100.0;(23)下列关于C语言用户标识符的叙述中正确的是A) 用户标识符中可以出现在下划线和中划线(减号)B) 用户标识符中不可以出现中划线,但可以出现下划线C) 用户标识符中可以出现下划线,但不可以放在用户标识符的开头D) 用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头(24)下列关于单目运算符+、-的叙述中正确的是A) 它们的运算对象可以是任何变量和常量B) 它们的运算对象可以是char型变量和int型变量,但不能是float型变量C) 它们的运算对象可以是int型变量,但不能是double型变量和float型变量D) 它们的运算对象可以是char型变量、int型变量和float型变量(25) 以下选项中合法的实型常数是A) 5E2.0 B) E-3 C) .2E0 D) 1.3E(26) 以下选项中合法的用户标识符是A) long B) _2Test C) 3Dmax D) A.dat(27) 以下非法的赋值语句是A) n=(i=2,+i); B)j+; C) +(i+1); D)x=j>0;(28) 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是A)6. B)6 C) 5. D) 6.(29) 与数学式子 对应的C语言表达式是A) 3*xn(2*x-1) B) 3*x*n(2*x-1)C) 3*pow(x,n)*(1/(2*x-1) D) 3*pow(n,x)/(2*x-1)(30) 若有以下程序:main() int k=2,i=2,m;m=(k+=i*=k);printf(“%d,%dn”,m,i);执行后的输出结果是A) 8,6 B) 8,3 C) 6,4 D) 7,4(31) 以下选项中,与k=n+完全等价的表达式是A) k=n,n=n+1 B) n=n+1,k=n C) k=+n D) k+=n+1(32) 若有定义:int a=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为A) 1.4 B) 1 C) 2.0 D) 2(33) 以下选项中不属于C语言的类型的是A) signed short imt B) unsigned long intC) unsigned int D) long short(34) 以下叙述正确的是A) 可以把define和if定义为用户标识符B) 可以把define定义为用户标识符,但不能把if定义为用户标识符C) 可以把if定义为用户标识符,但不能把define定义为用户标识符D) define和if都不能定义为用户标识符(35) 在C语言中,合法的长整型常数是A) OL B) C) & D) 216D(36) 以下有4组用户标识符,其中合法的一组是A) For B) 4d C) f2_G3 D) WORD-sub DO IF voidCase Size abc define(37) 假定x和y为 double型,则表达式x=2,y=x+3/2的值是A) 3. B) 3 C) 2. D) 3.(38) 以下合法的赋值语句是A) x=y=100 B) d-; C) x+y; D) c=int(a+b);(39) 设正x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是pprintf(”%d,%dn”,x-,-y);A) 10,3 B) 9.3 C) 9.2 D)10.2(40) 以下程序的输出结果是main() int a=3;printf(“%dn”,(a+a-=a*a) );A) 6 B)12 C) 0 D) -12(41) 以下所列的C语言常量中,错误的是A) 0xFF B) 1.2e0.5 C) 2L D) 72(42) 下列选项中,合法的C语言关键字是A) VAR B) cher C) integer D) default(43) 以下变量x.、y、z均为double类型且已正确赋值,不能正确表示数学式子 的C语言表达式是A) x/y*z B) x*(1/(y*z) C) x/y*1/z D) x/y/z(44) 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是A) -3 B) 9 C) -12 D) 6(45) 若变量已正确定义并赋值,下面符合C语言语法的表达式是A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b(46) C语言中运算对象必须是整型的运算符是A) %= B) / C) = D) =(47) 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是A) 1 B) 2 C) 2.0 D) 2.5(48) 若变量a、iI已正确定义,且i已正确赋值,合法的语句是A) a=1 B) +i; C) a=a+=5; D) a=int(i);(49) 若有以下程序段,int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是A) 0 B) 0.5 C) 1 D) 2(50) 设有 int x=11; 则表达式 (x+ * 1/3) 的值是 A) 3 B) 4 C) 11 D) 12(51) 下列程序的输出结果是 A) 3 B) 3.2 C) 0 D) 3.07 main() double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf("%d n", d*y); (52) 下列变量定义中合法的是A) short _a=1-.le-1; B) double b=1+5e2.5;C) long do=0xfdaL; D) float 2_and=1-e-3;(53) 以下选项中属于C语言的数据类型是A) 复数型 B) 逻辑型 C) 双精度型 D) 集合型(54) 在C语言中,不正确的int类型的常数是A) 32768 B) 0 C) 037 D) 0xAF(55) 设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为A) 4 B) 16 C) 32 D) 52(56) 设有如下的变量定义: int i=8, k, a, b; unsigned long w=5; double x=1, 42, y=5.2;则以下符合C语言语法的表达式是A) a+=a-=(b=4)*(a=3) B) x%(-3);C) a=a*3=2 D) y=float(i)(57) 假定有以下变量定义: int k=7,x=12;则能使值为3的表达式是A) x%=(k%=5) B) x%=(k-k%5) C) x%=k-k%5 D) (x%=k)-(k%=5)(58) 设x和y均为int型变量,则以下语句:x+=y,y=x-y;x-=y;的功能是A) 把x和y按从大到小排列 B) 把x和y按从小到大排列C) 无确定结果 D) 交换x和y中的值(59) 以下程序的输出结果是A) 10 10 B) 12 12 C) 11 10 D) 11 13 main() int a=12,b=12; printf("%d,%dn",- -a,+ +b); (60) 在C语言提供的合法的关键字是A) swicth B) cher C) Case D) default(61) 若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是A)1 B)2 C)2.0 D)2.5(62) C语言提供的合法的数据类型关键字是A) Double B) short C) integer D) Char(63) 在C语言中,合法的长整型常数是A) 0L B) C) 0. D) 2.1869e10(64) 若有说明和语句: int a=5; a+; 此处表达式a+的值是A) 7 B) 6 C) 5 D) 4(65) C语言中最简单的数据类型包括A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型(66) C语言中,运乍对象必须是整型数的运算符是A) % B) C) %和 D) * *(67) 设有如下定义: int x=10,y=3,z; 则语句printf("%dn",z=(x%y,x/y); 的输出结果是A) 1 B) 0 C) 4 D) 3(68) 以下程序的输出结果是main() int x=10,y=10;printf("%d %dn",x-,-y); A) 10 10 B) 9 9 C) 9 10 D) 10 9(69) 下列语句中符合C语言语法的赋值语句是A) a=7+b+c=a+7; B) a=7+b+=a+7; C) a=7+b,b+,a+7 D) a=7+b,c=a+7;(70) 在C语言中,要求运算数必须是整型的运算符是A) % B) / C) < D) !(71) 请选出可用作C语言用户标识符的一组标识符A) void B) a3_b3 C) For D) 2adefine _123 -abc DOWORD IF Case sizeof(72) 设 int a=12,则执行完语句 a+=a-=a*a后,a的值是A) 552 B) 264 C) 144 D) -264(73) C语言程序的基本单位是A) 程序行 B) 语句 C) 函数 D) 字符(74) 请选出合法的C语言赋值语句A) a=b=58 B) i+; C) a=58,b=58 D) k=int(a+b);(75)在C语言中,如果下面的变量都是int类型,则输出的结果是 。sum=pad=5; pAd=sum + + ,pAd + + , + + pAd;printf("%dn",pad);A) 7 B) 6 C) 5 D) 4(76)以下程序的输出结果是 。# include <stdio.h>main() int i=010 , j = 10;printf("%d,%dn",+ +i , j - -); A) 11,10 B) 9,10 C) 010,9 D) 10,9二、填空题(1)语句:x+;+x; x=x+1;x=l+x; ,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同) 【1】 。(2) 若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是 2 。c=(a-=(b-5);c=(a)+(b=3);(3) 设x和y均为int型变量,且x=1,y=2,则以下表达式的值为【3】 。1.0+x/y(4) 数学式子 写成C语言表达式是 【4】 。(5) 设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句:a*=16+(b+)-(+c);后,a的值是 【5】 。答案:一、填空题01) A 02) C 03) A 04) B 05) C 06) B 07) A 08) D 09) B 10) A11) A 12) D 13) D 14) C 15) A 16) C 17) D 18) B 19) A 20) C21) D 22) C 23) B 24) D 25) C 26) B 27) C 28) D 29) C 30) C31) A 32) B 33) D 34) B 35) A 36) C 37) D 38) B 39) D 40) D41) B 42) D 43) A 44) C 45) B 46) A 47) C 48) B 49) A 50) A51) C 52) A 53) C 54) A 55) C 56) A 57) D 58) D 59) D 60) D61) C 62) B 63) A 64) C 65) B 66) A 67) D 68) D 69) D 70) A71) B 72) D 73) C 74) B 75) C 76) B 二、填空题(1)x+=1(2)3(3)1.0(4)pow(sin(x),2) * (a+b)/(a-b) 或 sit(x) * sit(x) * (a+b)/(a-b)(5)28