《二级C语言选择题.docx》由会员分享,可在线阅读,更多相关《二级C语言选择题.docx(91页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 .下列叙述中正确的是 x 正确答案为DA) C语言编译时不检查语法+B) C语言的子程序有过程和函数两种C) C语言的函数可以嵌套定义D) C语言所有函数都是外部函数2 .以下叙述中正确的是X正确答案为BA) C语言的源程序不必通过编译就可以直接运行B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令C)C源程序经编译形成的二进制代码可以直接运行D) C语言中的函数不可以单独进行编译3 .C语言程序的基本单位是X正确答案为CA)程序行 B)语句 C)函数 D)字符4 .以下叙述中正确的是X 正确答案为AA)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C) main。
2、函数必须放在其它函数之前D)所有被调用的函数一定要在调用之前进行定义5.在一个C程序中 X 正确答案为BA) main函数必须出现在所有函数之前B) main函数可以在任何地方出现C) main函数必须出现在所有函数之后D) main函数必须出现在固定位置5 .以下关于函数的叙述中正确的是X正确答案为BA)每个函数都可以被其他函数调用(包括main瞰)。B)每一个函数都可以被单独编译。C)每个函数都可以单独运行。D)在一个函数内部可以定义另一个函数。6 .C语言中用于结构化程序设计的三种基本结构是X正确答案为AA)顺序结构、选择结构、循环结构B) if、switch、breakC) for w
3、hile、do-while D) if、for、continue7 .结构化程序由三种基本结构组成,三种基本结构组成的算法X 正确答案为AA)可以完成任何复杂的任务B)只能完成部分复杂的任务C)只能完成符合结构化的任务D)只能完成一些简单的任务8 .以下叙述中正确的是X正确答案为AA) C程序中注释部分可以出现在程序中任意合适的地方B)花括号“和“”只能作为函数体的定界符C)构成C程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C语句之间的分隔符,不是语句的一部分9 .以下叙述中错误的是X正确答案为CA) C语句必须以分号结束。B)复合语句在语法上被看作一条语句。C)空语句出现在任何
4、位置都不会影响程序运行。D)赋值表达式末尾加分号就构成赋值语句。10 .一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是 X 正确答案为BA)有零个或多个输入B)有零个或多个输出C)有穷性 D)可行性11 .算法具有五个特性,以下选项中不属于算法特性的是X正确答案为BA)有穷性B)简洁性C)可行性D)确定性12 .以下叙述中正确的是X 正确答案为CA)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出13 .用C语言编写的代码程序 X 正确
5、答案为BA)可立即执行B)是一个源程序C)经过编译即可执行D)经过编译解释才能执行14 .C语言中最简单的数据类型包括X正确答案为BA)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型15 .以下选项中属于C语言的数据类型是 X 正确答案为CA)复数型B)逻辑型C)双精度型D)集合型16 .下列叙述中正确的是X 正确答案为DA) C语言中既有逻辑类型也有集合类型B) C语言中没有逻辑类型但有集合类型C) C语言中有逻辑类型但没有集合类型D) C语言中既没有逻辑类型也没有集合类型17 .以下叙述正确的是X 正确答案为BA)可以把define和if定义
6、为用户标识符B)可以把define定义为用户标识符,但不能把if定义为用户标识符C)可以把if定义为用户标识符,但不能把define定义为用户标识符D) define和if都不能定义为用户标识符18 .下列关于C语言用户标识符的叙述中正确的是 X 正确答案为BA)用户标识符中可以出现在下划线和中划线(减号)B)用户标识符中不可以出现中划线,但可以出现下划线C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头D)用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头19 .以下选项中合法的用户标识符是X正确答案为BA) long B) _2Test C) 3Dmax D) A
7、.dat20 .下列选项中,合法的C语言关键字是 X 正确答案为DA) VAR B) cher C) integer D) default21 .以下有4组用户标识符,其中合法的一组是 X 正确答案为CA) For -sub Case B ) 4d DO SizeC) f2_G3 IF abc D) WORD void define22 .以下不能定义为用户标识符的是X正确答案为DA) scanf B) Void C) _3com_ D) int23 .以下4组用户定义标识符中,全部合法的一组是 X 正确答案为AA) _main enclude sin B) If -max turboC) t
8、xt REAL 3COM D) intk_2_00124 .下列选项中,不能用作标识符的是X正确答案为DA) 1234 B) 1 2C) int 2 D) 2 int25 .以下不能定义为用户标识符的是X正确答案为DA) Main B) _0 C) _int D) sizeof26 .C语言提供的合法的数据类型关键字是X正确答案为BA) Double B) short C) integer D) Char27 .在C语言提供的合法的关键字是 X 正确答案为DA) swicth B) cher C) Case D) default28 .以下叙述错误的是X正确答案为AA)用户所定义的标识符允许使
9、用关键字。B)用户所定义的标识符应尽量作到“见名知意”。C)用户所定义的标识符必须以字母或下划线开头。D)用户所定义的标识符中,大小写字母代表不同标识。全国计算机等级考试二级笔试试卷 (14)若变量已正确定义并赋值,以下符合C语言语法的表达式是A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b(15)下列可用于C语言用户标识符的一组是A) void, define, WORD B) a3_b3, _123,CarC) For, -abc, IF Case D) 2a, DO, sizeof(16) C语言中运算对象必须是整型的运算符是A) %= B)
10、 / C) = D) =(17)若变量a,i已正确定义,且i已正确赋值,合法的语句是A) a= =1 B) +i; C) a=a+=5; D) a=int (i);(18)已知int t=0;while (t=l).)则以下叙述正确的是A)循环控制表达式的值为0 B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对(19)若变量已正确说明为float型,要通过语句scanf ( %f%f%f ,&a,&b,&c);给a赋予10.0, b赋予22.0, c赋予33.0,下列不正确的输入形式是A) 1022回车 33 回车B) 10.0,22.0,33.0v 回车C) 10.022
11、.033.0回车D) 10 22回车 33回车(20)有如下程序:main ()(int x=l,a=0,b=0;switch (x)(case 0: b+;case 1: a+;case 2: a+;b+;)printf (Ma=%d,b=%dnM,a,b) ;该程序的输出结果是A) a=2,b=l B) a=l,b=l C) a=l,b=O D) a=2,b=2(21)有以下程序 main ()inti=Lj=l,k=2;if (j+llk+) &i+) printf (M%d,%d,%dn;i,j,k);执行后输出结果是A) 1,1,2 B) 2,2,1 C) 2,2,2 D) 2,2,
12、3(22)有如下程序 main ()float x=2.0,y;if (x0.0) y=0.0;else if (x6) n; printf (M%d*,n) ; )该程序的输出结果是A) 987 B) 876 C) 8765 D) 9876(24)在下列选项中,没有构成死循环的是A) int i=100;while (1)i=i% 100+1;if (i100) break;)B) for (;);C) intk=10000;dok+;while (k10000);D) int s=36; while (s) -s;(25)设 int x=l,y=l;表达式(!xlly)的值是A) 0 B)
13、 1 C) 2 D) -1(26)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参(27)有以下程序float fun (int x,int y)return (x+y) ; main ()int a=2,b=5,c=8;printf (%3.0fn,fun (int) fun (a+c,b) ,a-c);)程序运行后的输出结果是A)编译出错 B) 9 C) 21 D) 9.0(28)若有以下调用语句,则不正确的fun函数的首部是 main ()in
14、t a 50 ,n;fun (n, &a 9);)A) void fun (int m, int x 0 )B) void fun (int s, int h 41)C) void fiin (int p, int *s)D) void fun (int n, int a)(29) fseek函数的正确调用形式是A) fseek (文件指针,起始点,位移量)B) fseek (文件指针,位移量,起始点)C) fseek (位移量,起始点,文件指针)D) fseek (起始点,位移量,文件指针)(30)若fp是指向某文件的指针,且已读到文件末尾,则函数feof (fp)的返回值是A) EOF B
15、) -1 C) 1 D) NULL(31)若有说明语句:charc=72;则变量cA)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法,c的值不确定(32)若有说明int a 3 4;则a数组元素的非法引用是A) a 0 2*1B) a 1 3C) a 4-2 0D) a 0 4(33)设有以下说明语句struct stuint a;float b; stutype;则下面的叙述不正确的是A) struct是结构体类型的关键字B) struct stu是用户定义的结构体类型C) Stutype是用户定义的结构体类型名D) a和b都是结构体成员名(34)在C语言中,引用数组元素时,其数
16、组下标的数据类型允许是 A)整型常量 B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式(35)若运行时给变量x输入12,则以下程序的运行结果是 main () int x,y;scanf (%d,&x);y=x12?x+10:x-12; printf ( %d n,y);)A) 0 B) 22 C) 12 D) 10 (36)以下说法正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用函数必须在main ()函数中定义C) C语言程序总是从main ()函数开始执行D) C语言程序中的main ()函数必须放在程序的开始部分 (37)表达式0x134x17的值
17、是A) 0x04 B) 0x13 C) 0xE8 D) 0x17(38)有以下程序#define F (X,Y) (X) * (Y) main () int a=3, b=4;printf (%d n, F (a+, b+);)程序运行后的输出结果是A) 12 B) 15 C) 16 D) 20(39)下列程序执行后的输出结果是 void func (int *a,int b ) b 0 =*a+6; main () int a,b 5;a=0; b 0 =3;func (&a,b) ; printf (%d n,b 0);)A) 6 B) 7 C) 8 D) 9(40)若有下面的程序段:ch
18、ar s 口 =china;char *p; p=s;则下列叙述正确的是A) s和p完全相同B)数组s中的内容和指针变量p中的内容相等C) s数组长度和p所指向的字符串长度相等D) *p与s 0相等(41)以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序 void sort (int a ,int n)for (i=0;in-l;i+)for (j=i+l;jn;j+)if (a i a j) t=a i ;a i =a j ;a j =t; ) main ()int aa 10 = 1,2,3,4,5,6,7,8,9,10/;sort (&aa 31 ,5);for (i=0
19、;i10;i+) printf (%d,H,aa Ei);printf (n);)程序运行后的输出结果是A) 1,2,3,4,5,678,9,10,B) 10,9,8,7,6,5,4,3,2,1,C) 1,2,3,8,7,6,5,4,9,10,D) 1,2,10,9,8,7,6,5,4,3,(42)以下程序的运行结果是#include stdio.hmain ()struct dateint year,month,day;today;printf (d nn,sizeof (struct date);)A) 6 B) 8 C) 10 D) 12(43)若有语句int *point,a=4;和p
20、oint=&a;下面均代表地址的一组选项是A) a,point,*&a B) &*a,&a,*pointC) *&point,*point,&a D) &a,&*point,point(44)在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是 A)地址传递 B)单向值传递C)由实参传形参,再由形参传实参 D)传递方式由用户指定(45)已定义以下函数fun (char *p2, char *pl)(while (*p2=*pl) !=0,) pl+;p2+;)函数的功能是A)将pl所指字符串复制到p2所指内存空间B)将pl所指字符串的地址赋给指针p2C)对pl和p2两个指针所指
21、字符串进行比较D)检查pl和p2两个指针所指字符串中是否有、(T(46)若执行下述程序时,若从键盘输入6和8时,结果为 main ()int a,b,s;scanf (d%d”,&a,&b);s=aif (anext=&c; q-next=p-next; D) (*p) .next=q; (*q) .next=&b; 二、填空题(8)下列程序的输出结果是8Lmaim ()char b =Hello you;b 5 =0;printf (%sn,b);)解析:语句b5=0;相当于语句b 5= 0,且0为字符串结束标志,输出时 遇到0就停止输出。(9)当调用函数时,实参是一个数组名,则向函数传递的
22、是【9工解析:在函数中,可以通过指针变量来引用调用函数中对应的数组元素,此操作是通过传 递数组的首地址来实现。(10)以下程序的输出结果是【10】。int a=1234;printf (M%2d n* a);解析:在与格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插 入的宽度小于实际的宽度时,则实际的宽度输出。(11)用高级语言编写的程序称为【11】程序,它可以通过解释程序翻译一句执行一句的 方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。解析:用高级语言编写的程序称为源程序,源程序不能在计算机上直接运行,运行源程序 有两种方式:一种是通过解释程序,对源程序逐句解
23、释执行;另一种是先让编译程序将源程 序一次翻译产生目标程序(目标程序是计算机可直接执行的机器语言程序,它是一种二进制 代码程序),然后执行目标程序。(12)以下程序的输出结果是【121main ()int a=0;a+= (a=8);printf (M%dnn,a) ;解析:赋值表达式的值就是所赋值变量的值,本题中a+=8相当于a=a+8,对表达式逐步进 行求解:a+= (a=8)此时,a的值由于赋值为8,而不是0a+=8a=a+8a=16(13)函数void fun (float *sn, int n)的功能是:根据以下公式计算S,计算结果通过形参指 针sn传回;n通过形参传入,n的值大于等
24、于0。请填空。void fun ( float *sn, int n) float s=0.0, w, f=-1.0;int i=0;for (i=0; ino例如:m=12, n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语 句,将该程序补充完整。#include #include float fun (int m, int n) inti;double p=l .0;for (i=l;i=m;i+) 15;for (i=l;i=n;i+) 16;for (i=l;i=m-n;i+) p=p/i;return p; main () clrscr ();print
25、f (Mp=%fnM,fun (12,8) ;解析:本题中,欲求p的值,需要先求m, n, mn的阶乘值,可用循环语句实现。 (15)该程序运行的结果是【17】。#include#include#define M 100void fiin (int m, int *a, int *n) inti,j=O;fbr (i=l;i=m;i+)if (i%7=0lli%ll=0)a j-H- =i;*n=j;main () int aa M ,n,k;clrscr ();fun (10,aa,&n);for (k=0;kn;k+)if (k+1) %20=0) printf (MnM);else pr
26、intf (4d”,aa k);printf (nnn) ;解析:解答本题的关键是要读懂程序,试题要找出能被7或11整除的所有整数,注意数学 中的“或”和C语言中的“或”的区别,但在此处,if条件语句中用了 “II”运算符,若要 找能同时被7和11整除的所有整数则在if ()中应用“&”运算符。当然,如果m的值输入50,即表达式fun (10,aa,&n);为fun (50,aa,&n);时输入结果为:7 11 14 21 22 28 33 35 42 44 49。(16)下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串123412132,输入字符1,则输
27、出3,请填空。#include #include #define M 81int fun (char *ss, char c) int i=0;for (; 18 ;ss+)if (*ss=c) i+;return i;main () char a M , ch;clrscr ();printf (n nPlease enter a string: H; gets (a);printf (M nPlease enter a char: n) ; ch=getchar ();printf (H nThe number of the char is: %d nM, fun (a,ch) ;解析:从
28、字符串ss中找出子字符串的方法是:从第1个字符开始,对字符串进行遍历;若 ss串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续比较下一个字符; 若比较至字符串的结尾,则跳出循环;若ss串的字符和c串的字符对应不同,继续对ss串 的下一个字符进行处理。本程序是采用逐一比较的方式找出出现的次数。循环的作用是在串 中从左到右逐一走动,if ()的作用是进行判断是否相同,若与c相同则表示又出现一次。(17)下面程序把从终端读入的文本(用作为文本结束标志)输出到一个名为bi.dat的新 文件中,请填空。#include stdio.hFILE *fp; char ch;if (fp=fop
29、en (19) =NULL) exit (0);while (ch=getchar ( ) !=*) fputc (ch,fp);fclose (fp) ;解析:fopen函数的调用方式通常为:FILE *fpfp=fopen (文件名,使用文件方式);(18)设有如下宏定义#define MYSWAP (z,x,y)z=x;x=y;y=z;以下程序段通过宏调用实现变量a, b内容交换,请填空。float a=5,b=16,c;MYSWAP (20 ab);解析:该题考查两个知识点:(1)用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为#define标识符 字 符串(2)在MYSW
30、AP宏定义中,利用中间变量z来交换x和y的值,所以要实现a和b的交 换,只需通过中间变量即可,所以,此处应填c。(2)一、选择题(11)下列叙述中正确的是A) C语言编译时不检查语法B) C语言的子程序有过程和函数两种C) C语言的函数可以嵌套定义 D) C语言的函数可以嵌套调用(12)在C语言中,退格符是A) n B) t C) f D) b(13)以下叙述中正确的是A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C) main ()函数必须放在其他函数之前D)所有被调用的函数一定要在调用之前进行定义(14)在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻
31、辑值“假”。在求逻辑值时,用()表示逻辑表达式值为“真”,又用()表示逻辑表达式值为“假二A) 10 B) 0 1 C)非 0 非 0 D) 1 1(15)在C语言中,运算对象必须是整型数的运算符是A) % B) C) %和 D) *(16)字符型数据在机器中是用ASCII码表示的,字符“5”和“7”在机器中表示为A) 10100011 和 01110111 B) 01000101 和 01100011C) 00110101 和 00110111D) 01100101 和 01100111(17)若已定义:inta=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a=25&b
32、-=2&c?printf( *a=%d,b=%d,c=%d n,a,b,c ) :printf(#a=%d,b=%d,c=%dn, a,b,c);程序输出的结果是A) *a=25,b=13,c=19B) *a=26,b=14,c=19C) #a=25,b=13,c=19D) #a=26,b=14,c=19(18)若有定义:int a=7;float x=2.5,y=4.7;则表达式 x+a%3* (int) (x+y) %2/4 的值是A) 2.500000 B) 2.750000 C) 3.500000 D) 0.000000(19)下列程序段的输出结果是:int a= 1234;float
33、 b= 123.456;double c= 12345.54321;printf ( %2d,%2. lf,%2.1 f,a,b,c );A)无输出 B) 12, 123.5,12345.5C) 1234,123.5,12345.5 D) 1234,123.4,1234.5(20)若运行以下程序时,从键盘输入ADescriptor (表示回车),则下面程序的 运行结果是#include main ()char c;int v0=l,vl=0,v2=0;doswitch (c=getchar ()case a :case A* :case e :case E:case i :case 1 :ca
34、se 1 o :case O:case u :case U :vl+=l;default: v0+= 1 ;v2+= 1; )while (c!= n);printf (nv0=%d,vl=%d,v2=%d nn,v0,vl,v2);)A) v0=7,vl=4,v2=7 B) v0=8,vl=4,v2=8C) v0=ll,vl=4,v2=ll D) v0=13,vl=4,v2=12(21)设有以下程序段int x=O,s=O;while (!x!=0) s+=+x;printf (%dn,s);则 A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次
35、(22)有如下程序main () float x=2.0,y;if (x10.0) y= 1.0/x;else y=1.0;printf (H%fnn,y) ;该程序的输出结果是A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000(23)执行下面的程序段后,变量k中的值为int k=3, s 2;s E0 =k; k=s 1 *10;A)不定值 B) 33 C) 30 D) 10(24)以下程序段的描述,正确的是x=-l;dox=x*x;while (!x);A)是死循环B)循环执行两次C)循环执行一次D)有语法错误(25)以下选项错误的是A) mai
36、n () int x,y,z;x=0;y=x-l; z=x+y;B) main () int x,y,z;x=0,y=x+1;z=x+y;C) main () int x;int int y;x=0,y=x+l; z=x+y;JD) main () int x,y,z;x=0;y=x+l; z=x+y,(26)有如下程序段int a=14,b=15,x;charc=r A;x= (a&b) & (cv B);执行该程序段后,x的值为A) ture B) false C) 0 D) 1(27)下列程序执行后的输出结果是void fund (int i);void func2 (int i);ch
37、ar st 口 =whello,fnend!M;void fund (inti) printf (M%cH,st i);if (i3) i+=2;func2 (i) ;void func2 (int i) printf (n%cn,st i);if (i3) i+=2;funcl (i) ;) main () int i=0; func 1 (i) ; printf (* n) ;A) hello B) hel C) hlo D) him(28)以下函数返回a所指数组中最大值所在的下标值fun (int *a,int n) int i,j=O,p;P=j;for (i=j;ia p) ;ret
38、urn (p) ;)在下划线处应填入的内容是A) i=p B) a p =a i C) p=j D) p=I(29)下面说明不正确的是A) char a 10 = china; B) chara 10 ,*p=a;p=MchinaMC) char *a;a=MchinaM; D) char a 10 ,*p;p=a=MchinaM(30)以下程序的输出结果是#include void prt (int *x, int *y, int *z)printf (H%d,%d,%dnn,+*x,+*y,* (z+) ; main ()int a=10,b=40,c=20;prt (&a,&b,&c)
39、; prt (&a,&b,&c) ;A) 11,42,3112,22,41B) 11,41,2012,42,20C) 11,21,4011,21,21D) 11,41,2112,42,22(31)若有函数内部说明:ima 3 4;则数组a中各元素A)可在程序的运行阶段得到初值0B)可在程序的编译阶段得到初值0C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值0(34)定义如下变量和数组:int k;inta 3 3 =9,8,7,6,5,4,321;则下面语句的输出结果是for (k=0;k3;k+) printf (%d,a k k);A) 75 3 B) 95 1 C) 963 D
40、) 74 1(35)下列程序执行后的输出结果是main () char arr 2 4;strcpy (arrjyou); strcpy (arr 1 /me*);arr 0 3 = &;printf (M%snM,arr) ; ) you&meB) you C) me D) err(36)有以下函数char fun (char *p)return p;该函数的返回值是A)无确切的值 B)形参p中存放的地址值C) 一个临时存储单元的地址D)形参p自身的地址值(37)以下正确的说法是A)定义函数时,形参的类型说明可以放在函数体内 ) return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参类型不一致,以实参类型为准(38)有以下程序intf (intn) if (n=1) return 1;else return f (n-1) +1;main () int i,j=O;for (i=l;i3;i+) j+=