1、 选取题题库1.下列数据构造中,属于非线性构造是()。A) 循环队列B) 带链队列C) 二叉树D) 带链栈1、参照答案:C【解析】树是简朴非线性构造,因此二叉树作为树一种也是一种非线性构造。2.下列数据构造中,可以按照先进后出原则存取数据是()。A) 循环队列B) 栈C) 队列D) 二叉树2、参照答案:B【解析】栈是按先进后出原则组织数据。队列是先进先出原则组织数据3.对于循环队列,下列论述中对的是()。A) 队头指针是固定不变B) 队头指针一定不不大于队尾指针C) 队头指针一定不大于队尾指针D) 队头指针可以不不大于队尾指针,也可以不大于队尾指针3、参照答案:D【解析】循环队列队头指针与队尾
2、指针都不是固定,随着入队与出队操作要进行变化。由于是循环运用队列构造因此对头指针有时也许不不大于队尾指针有时也也许不大于队尾指针。4.算法空间复杂度是指()。A) 算法在执行过程中所需要计算机存储空间B) 算法所解决数据量C) 算法程序中语句或指令条数D) 算法在执行过程中所需要暂时工作单元数4、参照答案:A【解析】算法空间复杂度是指算法在执行过程中所需要内存空间。因此选取A)。5.软件设计中划分模块一种准则是()。A) 低内聚低耦合B) 高内聚低耦合C) 低内聚高耦合 D) 高内聚高耦合5、参照答案:B【解析】普通较先进软件设计,应尽量做到高内聚,低耦合,即削弱模块之间耦合性和提高模块内内聚
3、性,有助于提高模块独立性。6.下列选项中不属于构造化程序设计原则是()。A) 可封装B) 自顶向下C) 模块化D) 逐渐求精6、参照答案:A【解析】构造化程序设计思想涉及:自顶向下、逐渐求精、模块化、限制使用goto语句,因此选取A)。7.软件详细设计生产图如下:该图是()A) NS图B) PAD图C) 程序流程图D) ER图7、参照答案:C【解析】NS图提出了用方框图来代替老式程序流程图,因此A)不对。PAD图是问题分析图,它是继承程序流程图和方框图之后提出又一种重要用于描述软件详细设计图形表达工具,因此B)不对。ER图是数据库中用于表达ER模型图示工具,因此D)不对。依照图中所示表达办法是
4、进行软件详细设计时使用程序流程图。8.数据库管理系统是()。A) 操作系统一某些B) 在操作系统支持下系统软件C) 一种编译系统D) 一种操作系统8、参照答案:B【解析】数据库管理系统是数据库机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上系统软件。9.在ER图中,用来表达实体联系图形是()。A) 椭圆形B) 矩形 C) 菱形D) 三角形9、参照答案:C【解析】在ER图中实体集用矩形,属性用椭圆,联系用菱形。10.有三个关系R、S和T如下:则关系T是由关系R和S通过某种操作得到,该操作为()。A) 选取B) 投影C) 交 D) 并1
5、0、参照答案:D【解析】在关系T 中包括了关系R与S中所有元组,因此进行是并运算。11.计算机高档语言程序运营办法有编译执行和解释执行两种,如下论述中对的是()。A) C语言程序仅可以编译执行B) C语言程序仅可以解释执行C) C语言程序既可以编译执行又可以解释执行D) 以上说法都不对11、参照答案:A【解析】解释程序是将源程序(如BASIC)作为输入,解释一句后就提交计算机执行一句,并不形成目的程序。编译程序是把高档语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言目的程序,然后再让计算机执行这个目的程序,得到计算成果。12.如下论述中错误是
6、()。A) 顾客所定义标记符容许使用核心字B) 顾客所定义标记符应尽量做到见名识意C) 顾客所定义标记符中,大、小写字母代表不同标记D) 顾客所定义标记符必要以字母或下划线开头12、参照答案:A【解析】C语言规定标记符只能由字母、数字和下划线3种字符构成,且第一种字符必要为字母或下划线,排除D);顾客定义标记符中大小写字母之间是有区别并且应尽量做到见名识意,排除选项B)和C);C语言中还规定标记符不能为C语言核心字,故选项A)论述错误,对的答案是选项A)。13.若有阐明语句:char c72;则变量c()。A) 包括1个字符B) 包括2个字符C) 包括3个字符D) 阐明不合法,c值不拟定13、
7、参照答案:A【解析】C语言字符型常量中,容许用一种特殊形式字符常量,就是以一种开头字符。其中,ddd表达用ASCII码(八进制数)表达一种字符,本题中char c2即表达占一种字符变量cASCII码值。14.既有定义int a;double b;float c;char k;,则表达式a/bck值类型为()。A) intB) doubleC) float D) char14、参照答案:B【解析】双目运算中两边运算量类型转换规律:15.如下定义语句中对的是()。A) int ab0;B) char A651,bb;C) float a1,*b&a,*c&b;D) double a0.0;b1.1
8、15、参照答案:B【解析】本题考查变量定义办法。如果要一次进行各种变量定义,则在它们之间要用逗号隔开。因而选项A)和D)错误;在选项C)中,变量c是一种浮点型指针,它只能指向一种浮点型数据,不能指向指针变量b;因此对的答案为B)。16.若在定义语句int a,b,c,*p&c;之后,接着执行如下选项中语句,则能对的执行语句是()。A) scanf(%d,a,b,c);B) scanf(%d%d%d,a,b,c);C) scanf(%d, &p);D) scanf(%d, p);16、参照答案:D【解析】scanf函数中输入项必要是指针,只有选项D)符合这个规定。17.如下程序运营成果是()。i
9、nt k0;void fun(int m)mk;km;printf(m%d k%d ,m,k);main()int i4;fun(i); printf(i%d k%dn,i,k);A) m4k5i5k5 B) m4k4i5k5C) m4k4i4k5D) m4k5i4k517、参照答案:B【解析】由于在main()函数中,变量 i4,因此就调用fun(4),则输出m4 k4。然后变量k增1等于5,变量i增1等于5,因此main()函数printf(i%d k%dn,i,k);语句输出i5 k5。18.在执行下述程序时,若从键盘输入6和8,则成果为()。main()int a,b,s;scanf(
10、%d%d,&a,&b);sa ;if(a0) switch(k) default : break;case 1 : nk;case 2 :case 3 : nk;k;printf(%dn,n);程序运营后输出成果是()。A) 0B) 4C) 6D) 719、参照答案:D【解析】本题考查是switch语句。在switch语句中,表达式值与某一种case背面常量表达式值相等时,就执行此case背面语句,若所有case中常量表达式值都没有与表达式值匹配,就执行default背面语句,各个case和default浮现顺序不影响执行成果。因此在本题中,当k5和k4时候,case都没有与其匹配值,因此执行
11、了default语句;当k3时,执行case 3 : nk;得n3,然后执行default;当k2时,执行case 2 : case 3 : nk;得n5,然后执行default;当k1时,执行case 1 : nk; case 2 : case 3 : nk;使得n加两次k,得到n7。20.有如下程序:#include main() int x;scanf(%d,& x);if(x3); elseif(x!10) printf(%dn,x);程序运营时,输入值在哪个范畴才会有输出成果()。A) 不等于10整数B) 不不大于3且不等10整数C) 不不大于3或等于10整数D) 不大于3整数20、
12、参照答案:B【解析】ifelse控制构造中,else总是与近来未配对if匹配。本题执行过程为:如果输入整数不大于3则不进行任何操作,否则判断与否不等于10,若为真则进行输出。因而程序输出数据为不不大于3且不等于10整数。21.有如下程序:#include main() int a1,b0;printf(%d,bab);printf(%dn,a2*b)程序运营后输出成果是()。A) 0,0B) 1,0 C) 3,2 D) 1,222.有如下程序:main() int num441,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j;for(i0;i4;i) for(
13、j0;ji;j)printf(%4c, );for(j;jb?(bc?1:0):0;功能相似是()。A) if(ab)&(bc)k1;else k0;B) if(ab)(bc)k1;else k0;C) if(ab)k0;else if(bb)k1;else if(bc) k1;else k0;23、参照答案:A【解析】表达式kab?(bc?10)0表达:如果(ab)条件为真,则k取值(bc?10),否则k取值0;当ab状况下,如果bc,则k值为1,否则为0。因此该表达式与选项A)功能相似。24.有如下程序:void ss(char *s,char t)while(*s)if(*st)*sta
14、A;s; main()char str1100abcddfefdbd,cd;ss(str1,c); printf(%sn,str1);程序运营后输出成果是()。A) ABCDDEFEDBDB) abcDDfefDbDC) abcAAfefAbA D) Abcddfefdbd24、参照答案:B【解析】在内存中,字符数据以ASCII码存储,它存储形式与整数存储形式类似。C语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相称于对它们ASCII码进行算术运算,在本题中,s相称于ss1,即让s指向数组中下一种元素。25.既有如下程序段:#include stdio.hmai
15、n()int k3012,324,45,6,768,98,21,34,453,456;int count0,i0;while(ki)if(ki%20|ki%50)count;i; printf(%d,%dn,count,i);则程序段输出成果为()。A) 7,8 B) 8,8 C) 7,10 D) 8,1025、参照答案:D【解析】在C语言中,定义一维数组语句普通形式如下:类型名数组名常量表达式;一维数组引用形式为:数组名下标表达式。count表达能被2整除或被5整除个数,i则计算有多少个数组元素。26.如下程序运营后输出成果是()。#includevoid f(char *s,char *t
16、) char k;k*s;*s*t;*tk;s;t;if(*s)f(s,t);main() char str10welcome,*p;pstrstrlen(str)/21;f(p,p2);printf(%sn,str);A) eelcomw B) weoclmeC) welcome D) emoclew26、参照答案:D【解析】该程序中f函数功能是互换两个位置字符值,f函数共调用3次,依次更改了字符串中l和o、e和m、w和e值,因而更改后字符串值是emoclew。27.设有如下程序段:int x,y;printf(%dn,(x,y);则如下论述中对的是A) 输出值为B) 输出值为C) 运营时产
17、生出错信息D) 输出语句中格式阐明符个数少于输出项个数,不能对的输出27、参照答案:B【解析】(x,y)考查逗号表达式,逗号运算符结合性为从左到右,因而,最后一种表达式值就是此逗号表达式值,因而选项B)对的。28.有如下程序:#include void fun(char*c,int d) *c*c1;dd1;printf(%c,%c,*c,d);main() char ba,aA;fun(&b,a); printf(%c,%cn,b,a);程序运营后输出成果是()。A) b,B,b,AB) b,B,B,AC) a,B,B,aD) a,B,a,B28、参照答案:A【解析】函数fun第一种参数传指
18、针,可以将更改后值传回调用函数,第二个参数传值,不能将更改后值传回调用函数,故选A)。29.有如下程序:#include #include main() char a10abcd;printf(%d,%dn,strlen(a),sizeof(a);程序运营后输出成果是()。A) 7,4B) 4,10C) 8,8D) 10,1029、参照答案:B【解析】strlen()用来返回字符串长度,而sizeof()返回是一种对象或者类型所占内存字节数,即数组所占内存。30.若有定义int a23;,则对a数组第i行第j列(假设i,j已对的阐明并赋值)元素值对的引用为()。A) *(*(ai)j) B)
19、(ai)jC) *(aij)D) *(ai)j30、参照答案:A【解析】本题考查了二维数组元素引用办法。选项A)中ai指向了数组a第i1行,*(ai)则是第i1行第0列地址值,*(ai)j指向了数组a第i1行,j1列,*(*(ai)j)取到是数组aaij元素。31.有如下程序:#include main() char c1,c2,c3,c4,c5,c6;scanf(%c%c%c%c,&c1,&c2,&c3,&c4);c5getchar(); c6getchar();putchar(c1);putchar(c2);printf(%c%cn,c5,c6);程序运营后,若从键盘输入(从第1列开始)1
20、2345678则输出成果是()A) 1267 B) 1256 C) 1278D) 124531、参照答案:D【解析】putchar(c1)输出1,putchar(c2)输出2,printf(%c%cn,c5,c6)输出45。32.如下程序运营成果是()。#include int a1;int f(int c) static int a2;cc1;return(a)c;main() int i,k0;for(i0;i2;i)int a3;kf(a);ka;printf(%dn,k);A) 17 B) 16C) 15D) 1432、参照答案:D【解析】fun函数语句return(a)c;中访问a,
21、是其内部定义静态局部变量,main函数中语句kf(a)访问a是其局部变量,因此两次调用事实上都是调用f(3)。第一次调用时,fun函数中c4,表达式(a)c值为6,a递增为3,k6。第二次调用时,fun函数中c4,表达式(a)c值为7,a递增为4,k6713。语句ka中a是全局变量,因此k13114。33.设有定义:int n10,n2,*p&n2,*q&n1;,如下赋值语句中与n2n1;语句等价是()。A) *p*q;B) pq;C) *p&n1;D) p*q;33、参照答案:A【解析】本题考查是指针变量赋值。题目中各变量定义后,指针变量p指向了变量n2所在存储单元,指针变量q指向了变量n1
22、所在存储单元,要使得n1值赋给n2,可用指针变量q所指向存储单元值赋给指针变量p所指向存储单元,即*p*q。34.设有如下阐明:typedef struct STlong a;int b;char c2;NEW;如下说法对的是()。A) NEW是一种构造体变量 B) NEW是一种构造体类型C) ST是一种构造体类型D) 以上阐明形式非法34、参照答案:B【解析】以上形式定义NEW表达ST构造类型,然后可以用NEW来阐明构造体变量。因而选项B)对的35.有如下程序:#include #include typedef struct char name9; char sex; float score
23、2; STU;void f(STU a)STU bZhao,m,85.0,90.0; int i;strcpy(a.name,b.name);a.sexb.sex;for(i0;i2;i) a.scoreib.scorei;main()STU cQian, f ,95.0,92.0;f(c);printf(%s,%c,%2.0f,%2.0fn,c.name,c.sex,c.score0,c.score1);程序运营成果是()。A) Qian,f,95,92B) Qian,m,85,90C) Zhao,f,95,92D) Zhao,m,85,9035、参照答案:A【解析】本题考查是函数调用时参数
24、传递以及构造体变量引用问题。程序在调用函数f时,传给函数f参数只是构造变量c在栈中一种拷贝,函数f所有操作只是针对这个数据拷贝进行修改,这些都不会影响变量c值。36.有如下程序:#include #define N 4void fun(int aN,int b) int i;for(i0;iN;i) biaii;main() int xN1,2,3,4,5,6,7,8,9,10,yN,i;fun(x,y);for(i0;iN;i)printf(%d,yi);printf(n);程序运营成果是()。A) 1,2,3,4,B) 1,0,7,0,C) 1,4,5,9,D) 3,4,8,10,36、参
25、照答案:B【解析】该题目中fun函数功能是将二维数组a中符合条件值赋给一维数组符合条件元素。主函数功能是将符合条件一维数组元素进行输出。37.有如下程序:#includeint fun(int x,int y) if(x!y)return(xy)/2);else return(x);main() int a4,b5,c6;printf(%dn,fun(2*a,fun(b,c);程序运营后输出成果是()。A) 3B) 6C) 8D) 1237、参照答案:B【解析】本题中对函数fun()进行了嵌套调用。一方面调用fun(5,6),返回值为5,2*a值为8,然后调用fun(8,5),最后输出值为6.
26、38.若x是int型变量,且有下面程序片段:for(x3;x6;x) printf(x%2)?(*%d):(#%dn),x);上面程序片段输出成果是()。A) *3#4*5B) #3*4 #5C) #3*4#5D) *3#4*538、参照答案:B 【解析】& 按位与,如果两个相应二进制位都为1,则该位成果值为1,否则为0。| 按位或,两个相应二进制位中只要有一种为1,该位成果值为1。2二进制为00000010,4二进制为00000100,因此做或运算成果为00000110,该数与5即00000101做与操作成果为00000100,即4。39.有如下程序:#include #define N 5#define M N1#define f(x)(x*M)main()int i1,i2;i1f(2);i2f(11);printf(%d %dn,i1,i2);程序运营成果是()。A) 12 12 B) 11 7 C) 11 11D) 12 740.有如下程序:#includemain() unsigned char a8,c;ca3;printf(%dn,c);程序运营后输出成果是()。A) 32B) 16C) 1D) 040、参照答案:C【解析】本题中将8赋值给字符变量a,则a二进制为00001000,a3位运算是把a向右移动三位,成果为00000001,输出其十进制值1。