第一套1.串的长度是()A.串中不同字符的个数B.串中不同字母的个数C.串中所含字符的个数且字符个数大于零D.串中所含字符的个数分析:串的长度指的是串中的字符的个数,且其字符个数可以为零。2.以下不属于对象的基本特点的是()A.分类性B.多态性C.继承性D.封装性分析:对象有如下一些基本特点,即标识惟一性、分类性、多态性、封装性和模块独立性。3.下面不属于软件设计原则的是()A.抽象B.模块化C.自底向上D.信息隐蔽分析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们是抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。4.下列SQL语句中,用于修改表结构的是()A.ALTERB.CREATEC.UPDATED.INSERT分析:SQL语句中凡创建都用CREATE,删除都用DROP,改用ALTER,再跟类型和名字,附加子名。5.关系模型允许定义3类数据约束,下列不属于数据约束的是()A.实体完整性约束B.参照完整性约束C.域完整性约束D.用户自定义的完整性约束分析:关系模型允许定义3类数据约束,它们是实体完整性约束、参照完整性约束及用户自定义的完整性约束。其中前两种完整性约束由关系数据库系统支持,对于用户自定义的完整性约束,则由关系数据库系统提供完整性约束语言,用户利用该语言给出约束条件,运行时由系统自动检查。6.非空循环单链表head的尾结点(由p所指向),满足()A.p-next==NULLB.p==NULLC.p-next=headD.p=head分析:循环链表就是将链表的最后一个结点指向链表头结点(或第一个结点),即p-next=head。7.对建立好程序设计风格,下面描述正确的是()A.程序应简单、清晰、可读性好B.符号名的命名只要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无分析:程序设计应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。8.在软件生产过程中,需求信息的给出是()A.程序员B.项目管理者C.软件分析设计人员D.软件用户分析:软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。9.NULL是指()A.0B.空格C.未知的值或无任何值D.空字符串分析:此题属于记忆性的题目,NULL是指未知的值或无任何值。10.下列说法中,不属于数据模型所描述的内容的是()A.数据结构B.数据操作C.数据查询D.数据约束分析:数据模型所描述的内容3有个部分,它们是数据结构、数据操作和数据约束。其中,数据模型中的数据结构主要描述数据的类型、内容、性质,以及数据库的联系等;数据操作主要描述在相应数据结构上的操作类型与操作方式。11.在C语言中,退格符是()A.\nB.\tC.\fD.\b分析:C语言的转义字符见下表所示。转义字符转义字符的意义\n回车换行\t横向跳到下一制表位置\v竖向跳格\b退格\r回车\f换页\\反斜线符“\”\’单引号符\a鸣铃\ddd1~3位八进制数所代表的字符\xhh1~2位十六进制数所代表的字符12.若已定义:inta=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a=25&&b--=2&&c?printf(″***a=%d,b=%d,c=%d\n″,a,b,c):printf(″###a=%d,b=%d,c=%d\n″,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分析:此题综合考查多种运算符的使用。首先计算表达式a=25&&b--=2&&c的值,很容易看出b--=2的值为假,因此表达式为假;根据三目运算的特点,由于前面的表达式为假,应执行printf(″###a=%d,b=%d,c=%d\n″,a,b,c),应注意a的值依然为25,b的值经过b--运算后改变为13,而c的值仍为19。13.若运行以下程序时,从键盘输入AdescriptorCR(CR表示回车),则下面程序的运行结果是()#includestdio.hmain(){charc;intv0=1,v1=0,v2=0;do{switch(c=getchar()){case′a′:case′A′:case′e′:case′E′:case′i′:case′I′:case′o′:case′O′:case′u′:case′U′:v1+=1;default:v0+=1;v2+=1;}}while(c!=′\n′);printf(″v0=%d,v1=%d,v2=%d\n″,v0,v1,v2);}A.v0=7,v1=4,v2=7B.v0=8,v1=4,v2=8C.v0=11,v1=4,v2=11D.v0=13,v1=4,v2=12分析:本题考查switch语句的掌握。必须掌握以下内容:首先应该明白switch语句的语法格式:switch语句的语法格式为:switch(表达式){case常量表达式1:语句组1;case常量表达式2:语句组2;…case常量表达式n:语句组n;default:语句组n+1;}另外,注意以下几点关于switch语句的重点:①系统在执行时计算开关表达式的值;②根据所得的值在各个case标号表达式中寻找匹配,直到发现与表达式匹配的标号(本中匹配的是case′B′:);③找到匹配后执行后面相应的语句表,顺序往下执行;④如果无相匹配的标号,若存在default标号,则执行该语句标号后面的语句表n+1;当不存在default标号时,不执行switch中的任何一个语句表。一般而言,在多分支结构中总会出现“意外”的情况,这时均可归入default:程序段,作统一的处理。default标号是可选性的,不必每次都有,视需要而定。switch语句中还可以包含switch语句,形成switch的嵌套14.执行下面的程序段后,变量k中的值为()intk=3,s[2];s[0]=k;k=s[1]*10;A.不定值B.33C.30D.10分析:如果定义数组时没有进行初始化,则其各个成员的值不确定,所以k=s[1]*10的值也不定。15.有如下程序段inta=14,b=15,x;charc=′A′;x=(a&&b)&&(c′B′);执行该程序段后,x的值为()A.tureB.falseC.0D.1分析:在C语言中,逻辑运算符中一共有4个,它们分别是!(逻辑非)、||(逻辑或)、&&(逻辑与)、^(异或)。在位运算里面还有&(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,在表达式x=(a&&b)&&(c′B′);中,先判断a&&b条件,逻辑与条件的两边都要保证为1,即a和b都成立,当然c′B′是成立的,显然,该表达式的值为1。16.以下函数返回a所指数组中最大值所在的下标值fun(int*a,intn){inti,j=0,p;p=j;for(i=j;in;i++)if(a[i]a[p])_______return(p);}在下划线处应填入的内容是()A.i=pB.a[p]=a[i]C.p=jD.p=I分析:该题目所要求的是最大数的位置(下标),而不是最大数的数值!因此,在进行逐个比较的过程中,需要记录下的是最大数的下标i,根据给出的程序可以知道,该下标记录存在变量p中,所以,如果a[i]a[p]这一关系成立,应该把i的值赋给p,这样才满足题目的要求。17.有如下程序main(){chars[]=″ABCD″,*p;for(p=s+1;ps+4;p++)printf(″%s\n″,p);}该程序的输出结果是()A.ABCDB.ABCDBCDCDDC.BD.BCDCCDDD分析:本题考查指向字符串的指针的运算方法。指针变量p首先指向字符串中的第一个字符A,执行p=s+1后,p指向字符串中的第二个字符B,然后输出值“BCD”并换行。依次执行循环语句。18.以下正确的说法是()A.定义函数时,形参的类型说明可以放在函数体内B.return后边的值不能为表达式C.如果函数值的类型与返回值类型不一致,以函数值类型为准D.如果形参与实参类型不一致,以实参类型为准分析:本题中的二维数组的每个元素就是一个由三个元素构成的一维数组,根据条件for(k=0;k3;k++)和要求的a[k][k]可以得出本题的答案应该是951。19.结构化程序设计的三种基本逻辑结构是()A.选择结构、循环结构和嵌套结构B.顺序结构、选择结构和循环结构C.选择结构、循环结构和模块结构D.顺序结构、递归结构和循环结构分析:选项A中定义函数时,形参的类型说明应该放在形参表列内说明。老版本C语言中,对形参类型的声明是放在函数定义的第2行,也就是不在第1行的括号内指定形参的类型,而在括号外单独指定。选项B中return后面的值可以是一个表达式。选项D中实参与形参的类型应相同或赋值兼容。如果实参为整型而形参为实型,或者相反,则按不同类型数值的赋值规则进行转换,以形参类型为准。20.设有如下定义strucksk{inta;floatb;}data;int*p;若要使p指向data中的a域,正确赋值语句是()A.p=8a;B.p=data.a;C.p=&data.a;D.*p=data.a;分析:在做本题的时候,我们要特别注意不能将结构体变量作为一个整体进行输入和输出,只能对结构体变量中的各个成员进行输入和输出。引用结构体变量中成员中的方式为:结构体变量名.成员名,指针变量名-成员名,(*指针变量名).成员名。21.在下述程序中,判断ij共执行的次数是()main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(ij){printf(″%d″,s);break;}s+=I;}}A.4B.7C.5D.6分析:本题涉及到break语句,重在循环次数的判定。本题的循环由于无出口,只能借助break语句终止。鉴于题目要求说明判断ij的执行次数,只需考查经过i+=k运算如何累计i的值,i值分别是i=2,4,6,8,10,12时,判断ij为真,程序输出s的值并结束,共循环6次。22.以下程序的输出是()structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0]};main(){p=aaprintf(″%d\n″,++(p-x));}A.10B.11C.51D.60分析:本题中,数组名保存了数组的首地址,也就是数组中第一个元素的地址,执行p=aa;后,p指向aa[0],p-x相当于aa[0].x,也就是50,经过自增运算后,显示结果为51。23.下列数据中,不合法的C语言实型数据是()A.0.123B.123e3C.2.1e3.5D.789.0分析:在C语言中,实数有两种形式表示,即十进制数形式和指数形式,在指数形式中,e3,2.1e3.5,.e3,e等都是不合法的指数形式。再如123e3或123E3都代表123乘以10的3次方。注意,字母e的前面必须有数字,且e的后面必须是整数。24.设变量a是int型f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为()A.intB.floatC.doubleD.不确定分析:根据混合运算规则,如果有一个数据是float型或double型,则其他数据类型先转化为double型,运算的结果最终也是double型。25.设以下变量均为int类型,表达式的值不为7的是()A.(x=y=6,x+y,x+1)B.(x=y=6,x+y,y+1)C.(x=6,x+1,y=6,x+y)D.(y=6,y+1,x=y,x+1)分析:本题是考查逗号表达式的用法。C语言中逗号“,”也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表