《C语言考试23页word.doc》由会员分享,可在线阅读,更多相关《C语言考试23页word.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流C语言考试【精品文档】第 23 页C语言程序设计课程考试题库第一章 C语言概述 一、单项选择题1、C 语言规定,必须用( )作为主函数名。A.Function B.include C.main D.stdio答案:C2、( )是C 程序的基本构成单位。 A.函数 B.函数和过程 C.超文本过程 D.子程序 答案:A3、在 C 语言中,每个语句和数据定义是用( )结束。A.句号 B.逗号 C.分号 D.括号 二、判断题1、一个 C 程序可以包含任意多个不同名的函数,但有且仅有一个主函数。( )答案:正确2、C 语言规定: 在一个源程序中, main函数的位
2、置必须在最开始。( )答案:错误3、在 C 程序中语句是以分号结束的。( ) 答案:正确第二章 程序的灵魂算法 一、单项选择题1、一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是( )。A.有0个或多个输入 B.有0个或多个输出 C.有穷性 D.可行性答案:B2、以下叙述中正确的是( )。A. C语言比其它语言高级。B. C语言可以不用编译就能被计算机识别执行。C. C语言以接近英语国家的自然语言和数学语言作为语言的表达形式。D. C语言出现的,具有其它语言的一切优点。答案:C3、以下叙述正确的是( )。A. C语言的源程序不必通过编译就可以直接运行。B. C语言中的每
3、条可执行语句最终都将被转换成二进制的机器指令。C. C语言源程序经编译形成的二进制代码可以直接运行。D. C语言中的函数不可以单独进行编译。答案:B答案:B二、判断题1、C语言的书写格式不会影响程序的可读性。( )答案:错误2、C 语言程序实现与其他高级语言一样也要经过编辑、编译连接和运行这样的三步曲。( )答案:正确3、健壮的算法不会因为非法输入而出现莫名其妙的状态。( )答案:正确第三章 数据类型 运算符与表达式 一、单项选择题1、下列字符串是标识符的是( )。A._HJ B.9_student C.long D.LINE 1 答案:A2、( )不是 C 语言提供的合法关键字。 A.swi
4、tch B.print C.case D.default 答案:B3、判断字符型变量 ch 为小写字母的表达式是( )。 A.a=ch=a)&(ch=a)|(ch=a)&(ch5?4:2 答案:B6、能正确表示 x 的取值范围在0,100和-10,-5内的表达式是( )。 A.(x=-5)&(x=100) B.(x=-10)&(x=0)&(x=-10)&(x=0)&(x=100) D.(x=-5)&(x=100) 答案:B7、10+a+1.5-567.345/b的结果是( )型数据。 A.long B.double C.int D.unsigned float 答案:B8、设 a、b 和 c
5、是 int 型变量,且 a=2,b=4,c=6,则下面表达式中值为 0 的是( ) 。 A.a+ b B.a=b C.a|b+c&b-c D.!( (a=y=z,应使用C 语言表达式( ) 。 A. (x=y)&(y=z) B. (x=y)AND(y=z) C. (x=y=z) D. (x=y)&(y=z) 答案:A3、若已定义 int a=25,b=14,c=19;以下三项运算符(?:)所构成的语句的执行结果是( )。 a+=25&b-=2&c+?printf(*a=%d,b=%d,c=%dn,a,b,c):printf(#a=%d,b=%d,c=%dn,a,b,c) A. (*a=25,b
6、=14,c=19) B. (*a=26,b=13,c=19) C. (#a=25,b=14,c=19) D. (#a=26,b=13,c=19)答案:D4、以下程序的输出结果是( )。 main() int i=010,j=10,k=0x10; printf(%d,%d,%dn,i,j,k); A.8,10,16 B.8,10,10 C.10,10,10 D.10,10,16 答案:A5、以下程序的输出结果是( )。 #include main() printf(%dn,NULL); A.不确定的值 B.0 C.-1 D.1 答案:B6、以下程序的输出结果是( )。main() char c1
7、=6,c2=0; printf(%c,%c,%d,%dn,c1,c2,c1-c2,c1+c2); A.因输出格式不合法,输出出错信息 B.6,0,6,102 C.6,0,7,6 D.6,0,5,7 答案:B7、设有如下定义:int x=10,y=3,z; 则语句 printf(%dn,z=(x%y,x/y);输出结果是( )。 A.3 B.0 C.4 D.1 答案:A8、以下程序的输出结果是( )。main() int x=10,y=10; printf(%d %dn,x-,-y); A.10 10 B.9 9 C.9 10 D.10 9 答案:D9、下面程序的输出结果( )。main() i
8、nt x; x=-3+4*5-6;printf(%d,x); x=3+4%5-6;printf(%d,x); x=-3*4%6/5;printf(%d,x); x=(7+6)%5/2;printf(%d,x); A.11 1 0 1 B.11 -3 2 1 C.12 -3 2 1 D.11 1 2 1 答案:A10、以下程序的输出结果是( )。 main() int a=-1,b=4,k; k=(+a=0)&!(b-5) printf(“%d”,x); else printf(“%dn”,x-); A.7 和 5 B.6 和 3 C.7 和4 D.6和 4 答案:A3、在C 的 if语句中,可
9、用作判断的表达式是( ) 。 A.关系表达式 B.逻辑表达式 C.算术表达式 D.任意表达式 答案:D4、假定所有变量均已正确说明,下列程序段运行后 x 的值是( )。 a=b=c=0;x=35; if(!a) x=-1; else if(b); if(c) x=3; else x=4; A.34 B.4 C.35 D.3 答案:B5、若有以下变量定义: float x; int a,b; 则正确的 switch 语句是( )。 A.switch(x) case 1.0:printf(*n); case 2.0:printf(* *n); B.switch(x) case 1,2:printf
10、(*n); case 3:printf(* *n); C.switch(a+b) case 1:printf(*n); case 2*a:printf(* *n); D.switch(a+b) case 1:printf(*n); case 1+2:printf(* *n); 答案:D6、在 C 语言中,多分支选择结构语句为switch(c) case 常量表达式 1:语句 1; case 常量表达式 n-1:语句 n-1; default 语句 n; 其中括号内表达式 c 的类型( )。 A.可以是任意类型 B.只能为整型 C.可以是整型或字符型 D.可以为整型或实型 答案:C7、当 a =
11、 1, b = 3 , c = 5, d = 4时, 执行完下面程序段后 x的值为( )。 if ( a b ) if ( c d ) x = 1 ; else if ( a c ) if ( b d ) x =2 ; else x = 3 ; else x = 6 ; else x = 7 ; A.1 B.2 C.3 D.6 答案:A二、判断题1、条件表达式不能取代一般if的语句。( )答案:错误2、在 if语句中,if子句与 else 子句都可以单独使用,构成了 if语句的两种缺省形式。( )答案: 错误3、在C语言中,逗号既可以作为运算符,也可以作为分隔符。( )答案:正确4、在 if语
12、句中,不可以没有 else 子句。 ( ) 答案:错误5、在switch语句中,每一个的case常量表达式的值可以相同。( )答案:错误6、在C 语言的 if语句中,用作条件判断的表达式只能是关系和逻辑表达式。( ) 答案:错误7、在C 语言中 break 和 continue 都是循环中途退出语句,其中 break 语句用来跳出一层循环结构;continue 语句用来结束一次循环。( ) 答案:正确第六章 循环结构程序设计 一、单项选择题1、while 循环语句中,while 后一对圆括号中表达式的值决定了循环体是否进行,因此,进入 while 循环后,一定有能使此表达式的值变为( ),否则
13、,循环将会无限制地进行下去。 A.0 B.1 C.成立 D.2 答案:A2、在 do-while 循环中,循环由 do 开始,用 while 结束,必须注意的是:在 while表达式后面的( )不能丢,它表示 do-while 语句的结束。A.0 B.1 C.; D., 答案:C3、for 语句中的表达式可以部分或全部省略,但两个( )不可省略。但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。 A.0 B.1 C.; D., 答案:C4、程序段如下 int k=1; while(!k=0) k=k+1;printf(%dn,k); 说法正确的是( ) 。 A.whi
14、le 循环执行 2 次 B.循环是无限循环 C.循环体语句一次也不执行 D.循环体语句执行一次 答案:B5、以下 for循环是( )。 for(a=0,b=0;(b!=123)&(a=4);a+) A.无限循环 B.循环次数不定 C.执行 4次 D.执行 5 次 答案:D6、在下列程序中,while的循环次数是( ) 。 main( ) int i=0; while(i10) if(i1) continue; if(i= =5) break; i+; A.1 B.10 C.6 D.死循环、不能确定次数 答案:D7、执行下面的程序后,a 的值为( )。main() int a,b; for(a=
15、1,b=1;a=20)break; if(b%3=1) b+=3; continue; b-=5; A.7 B.8 C.9 D.10 答案:B8、以下程序的输出结果( ) 。 main() int x=3; do printf(%3d,x-=2); while(-x); A.1 B.3 0 C.1 -2 D.死循环 答案:A9、以下能正确计算 12310的程序段是( )。 A.do i=1;s=1; s=s*i; i+; while(i=10); B.do i=1;s=0; s=s*i; i+; while(i=10); C.i=1;s=1; do s=s*i; i+; while(i=10)
16、; D.i=1;s=0; do s=s*i; i+; while(i=10); 答案:C10、下面有关 for循环的正确描述是( )。 A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判断表达式 C.在 for循环中,不能用 break 语句跳出循环体 D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 答案:D二、判断题1、do-while循环的while后的分号可以省略。( )答案:错误2、在多层循环中, 一个break语句只向外跳一层。( ) 答案:正确3、do-while循环至少要执行一次循环语句。( )答案:正确4、C语言中whil
17、e和do-while循环的主要区别是while语句的循环体至少会被执行一次,而 do-while语句的循环体则可能一次也不执行。( ) 答案:错误5、for语句作为循环控制语句时,其括号内各个表达式及其后的分号都可缺省。( ) 答案: 错误6、C语言的三种循环不可以互相嵌套。( )答案:错误7、continue 只能用于循环体中。( )答案:正确第七章 数组 一、单项选择题1、定义如下变量和数组: int i; int x33=1,2,3,4,5,6,7,8,9; 则下面执行语句的结果为( ) 。 for(i=0;i3;i+) printf(“%3d”,xi2-i); A.1 5 9 B.1
18、4 7 C.3 5 7 D.3 6 9 答案:C2、在C 语言中,引用数组元素时,其数组下标的数据类型允许是( )。 A.整型常量 B.整型常量或整型表达式 C.整型表达式 D.任何类型的表达式 答案:B3、以下对一维整型数组 a的正确说明是( )。 A.int a(10); B. int n; scanf(“%d”,&n); int an; C. int n=10,an; D. #define SIZE 10 int aSIZE; 答案:D4、若有说明语句:char c= 64 ;则变量 C 包含( )。 A.1 个字符 B.2 个字符 C.3 个字符 D.说明不合法,C 值不确定。 答案:
19、A5、判断字符串a和b是否相等,应当使用( )。 A.if (a= =b) B.if (a=b) C.if (strcpy(a,b) D.if(strcmp(a,b) 答案:D6、下面程序的运行结果是( ) 。 main() int a6,i; for(i=1;i3)%5; printf(%2d,ai); A.-4 0 4 0 4 B.-4 0 4 0 3 C.-4 0 4 4 3 D.-4 0 4 4 0 答案:C7、若有说明:int a34 = 0;则下面正确的叙述是( )。A.只有元素 a00可以得到初值 0 B.此说明语句不正确 C.数组 a 中每个元素均可得到初值 0 D.数组 a
20、每个元素均可得到初值,但值不一定为 0 答案:C8、下面几个字符串处理表达式中能用来把字符串str2复制到字符串str1后的是( )。 A.strcat(str1,str2) ; B.strcat(str2,str1); C.strcpy(str1,str2) ; D.strcmp(str1,str2); 答案:C9、若有二维数组 amn,则数组中 aij之前的元素的个数为( )。 A.j*m+i B.i*n+j C.i*m+j+1 D.i*n+j+1 答案:D10、设有 char str10,下列语句正确的是( )。 A.scanf(%s,&str); B.printf(%c,str); C
21、.printf(%s,str0); D.printf(%s,str); 答案:D二、判断题1、字符串可以用来给数组赋值,在 C 程序的执行语句中可以直接用字符串给数组名赋值。 ( ) 答案:错误2、数组名也可作为函数参数使用,此时数组名代表数组的起始地址。( ) 答案:正确3、数组在定义时没有必要指定数组的长度,其长度可以在程序中根据元素个数再决定。( ) 答案:错误4、数组首地址不仅能通过数组中第一个元素的地址表示,也可以通过数组名来表示。( ) 答案:正确5、C 语言中 , 字符串常量存放在字符数组中要有一个结束符 , 该结束符是0 。( )答案:错误6、在对数组全部元素赋初值时,不可以省
22、略行数,但能省略列数。( )答案:错误 7、数组名能与其它变量名相同,数组名后是用方括号括起来的常量表达式,不能用圆括号。( )答案:正确第八章 函数 一、单项选择题1、以下函数定义正确的是( )。 A.double fun(int x, int y) B.double fun(int x; int y) C. double fun(int x, int y) ; D.double fun(int x , y) 答案:A2、C 语言规定,简单变量作实参,它与对应形参之间的数据传递方式是( )。 A.地址传递 B.单向值传递 C.双向值传递 D.由用户指定传递方式 答案:B3、以下关于C语言程序
23、中函数的说法正确的是( ) 。 A.函数的定义可以嵌套,但函数的调用不可以嵌套; B.函数的定义不可以嵌套,但函数的调用可以嵌套; C.函数的定义和调用均不可以嵌套; D.函数的定义和点用都可以嵌套。答案:B 4、一个数据类型为 void 的函数中可以没有 return 语句,那么函数的被调用时( )。 A.没有返回值 B.返回一个系统默认值 C.返回值由用户临时决定 D.返回一个不确定的值 答案:D5、以下说法不正确的是( )。 A.实参可以是常量、变量或表达式 B.形参可以是常量、变量或表达式 C.实参可以是任意类型 D.形参应与其对应的实参类型一致 答案:B6、以下函数的功能是:通过键盘
24、输入数据,为数组中的所有元素赋值。 #define N 10 void arrin(int xN) int i=0; while(iN) scanf(%d,_); 在下划线处应填入的是 ( )。 A.x+i B.&xi+1 C.x+(i+) D.&x+i 答案:C7、下列说法正确的是( )。 A.一个函数的函数体必须要有变量定义和执行部分,二者缺一不可 B.一个函数的函数体必须要有执行部分,可以没有变量定义 C.一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数 D.以上都不对 答案:C8、若用数组名作为函数调用的实参,传递给形参的是( ) 。A.数组的首地址 B.数组第一个元素的值
25、 C.数组中全部元素的值 D.数组元素的个数 答案:A9、如果在一个函数中的复合语句中定义了一个变量,则该变量( ) 。A.只在该复合语句中有效 B.在该函数中有效 C.在本程序范围内有效 D.为非法变量 答案:A10、有以下程序 void f(int x,int y) int t; if(xy) t=x; x=y; y=t; main() int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf(%d,%d,%dn,a,b,c); 执行后输出的结果是 。A.3,4,5 B.5,3,4 C.5,4,3 D.4,3,5 答案:C二、判断题1、C 程序可以由若
26、干个源文件组成,因此最小的功能单位是源文件,最小编译单位的是函数。( ) 答案:错误2、C 程序中函数不可以嵌套定义但可以嵌套调用。( )答案: 正确3、在函数内的复合语句中定义的变量在本函数范围内有效。( ) 答案:错误4、C 语言规定,简单变量做实参时,与其对应的形参之间是单向的值传递。( )答案: 正确5、数组名也可作为函数参数使用,此时是地址传递。( ) 答案:正确6、C 语言本身没有输入输出语句,输入输出操作都是通过调用库函数来实现的。( ) 答案:正确7、函数形参的存储单元是动态分配的。( )答案:正确第九章 预处理命令 一、单项选择题1、C 语言中,宏定义有效范围从定义处开始,到
27、源文件结束处结束,但可以用( )来提前解除宏定义的作用。 A.# ifdef B.endif C.# undefine D.# undef 答案:D2、以下不正确的叙述是( )。 A.预处理命令都必须以“#”号开始 B.在程序中凡是以“#”号开始的语句行都是预处理命令行 C.C 语言在执行过程中对预处理命令行进行处理 D. # define ABCD是正确的宏定义答案:C 3、在文件包含预处理语句(# include)的使用形式中,当之后的文件名用“” (双引号)括起时,寻找被包含文件的方式是( ) 。 A.直接按系统设定的标准方式搜索目录 B.先在源程序所在目录搜索,再按系统设定的标准方式搜
28、索 C.仅仅搜索源程序所在目录 D.仅仅搜索当前目录 答案:B二、判断题1、预处理命令的前面必须加一个“#”号。( )答案:正确 2、宏替换不占用运行时间。( )答案:正确3、C语言的编译系统对宏命令的处理是在对源程序中其它语句正式编译之前进行的。( )答案:正确第十章 指针 一、单项选择题1、变量的指针,其含义是指该变量的。 A.值 B.地址 C.名 D.一个标志 答案:B2、设有说明 int (*ptr)M;其中 ptr是( )。A.M 个指向整型变量的指针 B.指向 M 个整型变量的函数指针 C.一个指向具有 M 个整型元素的一维数组的指针 D. 具有 M 个指针元素的一维指针数组,每个
29、元素都只能指向整型量 答案:C3、如下程序的执行结果是 ( )。 # include main() static int a =1,2,3,4,5,6; int *p; p=a; *(p+3)+=2; printf(“%d,%dn”,*p,*(p+3); A.1,3 B.1,6 C.3,6 D.1,4 答案:B4、若有以下定义,则对 a数组元素的正确引用是( )。 int a5, *p=a; A.*&a5 B.a+2 C.*(p+5) D.*(a+2) 答案:D5、若有定义: int a23;则对 a 数组的第i行第j列(假设 i,j 已正确说明并赋值)元素值的正确引用为( )。 A.* (*
30、 (a +i) +j ) B. (a+i)j C.* (a+i+j) D.* (a +i)+j 答案:A6、设有下面的程序段: char s =“china”; char *p; p=s; 则下列叙述正确的是( )。 A.s 和 p 完全相同 B.数组 s 中的内容和指针变量 p 中的内容相等 C.s 数组长度和 p 所指向的字符串长度相等 D.*p与s0相等 答案:D7、若有下列说明和语句:int a45, (*p)5; p = a;则对a 数组元素的正确引用是 ( )。 A.p+1 B.*(p+3) C.*(p+1)+3 D.*(*p+2) 答案:B二、判断题1、在定义指针型变量时指定的基
31、类型为该指针变量所能指向的变量类型。( ) 答案:正确2、指针变量,只能作为函数的形参,不可以作函数的实参。( )答案:正确3、由于指针变量存储的是地址,指针变量被定义之后可以指向任一类型的变量。( ) 答案:错误第十一章 文件 一、单项选择题1、若用 fopen( )函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开模式是( )。 A. “ab+” B. “wb+” C. “rb+” D. “ab” 答案:B2、若 fp 是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是( )。 A.EOF B.0 C.非零值 D.NULL 答案:C3、以下叙述中不正确的是( ) 。 A.C 语言中的文本文件以 ASCII 码形式存储数据 B.C 语言中对二进制位的访问速度比文本文件快 C.C 语言中,随机读写方式不使用于文本文件 D.C 语言中,顺序读写方式不使用于二进制文件 答案:D二、判断题1、文件指针用于指向文件,文件只有被打开后才有对应的文件指针。( )答案:正确2、文件指针和位置指针都是随着文件的读写操作在不断改变。( ) 答案:错误 3、以“r”方式打开一个文件时,文件指针指向文件首。( )答案: 正确 1一 月二 月三 月产品名称数量金额利润产品名称数量金额利润产品名称数量金额利润