1、二级 C语言笔试-241 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.有下列程序:# includestdio.hmain()int a=6,b=7,m=1;switch(a%2)case 0:m+;break;case 1:m+;switch(b%2)default:m+;case 0:m+;break;printf(“%d/n“,m);(分数:2.00)A.3B.2C.4D.12.若有以下程序:int a=1,b=2;a=ab:b=ba:则执行以上语句后 a和 b的值分别是( )。(分数:2.00)A.a=1,b=2B.a=3,b=
2、1C.a=3,b=2D.a=2,b=13.有以下程序:# include strintg.hmain()char p20=a,b,c,d),q=“abc“,r=“abcde“;strcpy(p+strlen(q),r);strcat(p,q);printf(“%d%d/n“ ,sizeof(p),strlen(p);程序运行后的输出结果是( )。(分数:2.00)A.20 9B.9 9C.20 11D.11 114.下面程序的运行结果是( )。# includestdio.hvoid del(char*s)int i,j;char*a:a=s;for(i=0,j=0;ai!=/0 ;i+)if
3、(ai=0ai=9)Sj=ai;j+;sj=/0;main()char*s=“aa89gggh“;de1(s);printf( “/n%s“ ,s);(分数:2.00)A.1B.2C.3D.45.下述程序用来输出两个字符串前 7个字符中对应相等的字符及其位置号,则程序空白上应该填写的是( )。# includestdio.hmain()char s1=“chinese“,s2=“japanese“;int i:for(i=0;s1i!=/0s2i!=/0;i+)if(s1i=s2ii7)_;(分数:2.00)A.putchar(s2i); putchar(i)B.puts(s1i,i)C.pr
4、intf(“%c%d/n“,s2i,i)D.printf(“%c“,s1i); printf(“%d/n“,i)6.执行语句 printf(“%u/n“,+12345)的输出结果是( )。(分数:2.00)A.12345B.0C.-1D.非定值7.若有“double a;”,则正确的输入语句是( )。(分数:2.00)A.scanf(“%1f“,a);B.scanf(“%f“,a);C.scanf(“%1f“,a);D.scanf(“1e“, -a);8.执行语句“for(i=1;i+4;);”后,变量 i的值是( )。(分数:2.00)A.3B.4C.5D.不定9.下列工具中为需求分析常用工
5、具的是( )。(分数:2.00)A.PADB.BFDC.N-SD.DFD10.对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。(分数:2.00)A.125B.n/2C.nD.n+111.以下程序运行后,输出结果是( )。# includestdio.h# define PT 5.5#define S(x) PT*x*xmain()int a=1,b=2;printf(“%4.1f/n“,S(a+b);(分数:1.00)A.49.5B.9.5C.22.OD.45.012.下列程序的运行结果是( )。main()int x=1,y=3,a=0;while(x+!=(y-=1)
6、a+=1;if(yx) break;printf(“%d,%d,%d/n“,x,y,a);(分数:1.00)A.2,3,2B.2,3,1C.1,3,3D.3,1,213.有以下程序:# includestdio.hmain()int x=4,y;doy=x;if(!y)printf(“x“);elseprintf(“y“);x-:while(x);程序的输出结果是( )。(分数:1.00)A.xyyxB.yyyyC.yyxxD.yxyx14.设有定义:“int a;float b;”执行“scanf(“%2d%f“,a,b);”语句时,若从键盘输入876543.0回车,a 和 b的值分别是(
7、)。(分数:1.00)A.876和 543.000000B.87和 6.000000C.87和 543.000000D.76和 543.00000015.设有如下关系表:则下列操作中正确的是( )。(分数:1.00)A.T=RSB.T=RSC.T=RSD.T=R/S16.当执行以下程序段时( )。x=-1;dox=x*x;while(!x);(分数:1.00)A.循环体将执行一次B.循环体将执行两次C.循环体将执行无限次D.系统将提示有语法错误17.若有下列定义,则对 a数组元素地址的正确引用是( )。int a5,*p=a;(分数:1.00)A.p+5B.*a+1C.-a+1D.a018.下
8、列选项不符合良好程序设计风格的是( )。(分数:1.00)A.源程序要文档化B.数据说明的次序要规范化C.避免滥用 goto语句D.模块设计原则是高耦合、高内聚19.在下列语句中,其含义为“q 是一个函数指针,该指针指向整型数据”的定义语句是( )。(分数:1.00)A.int*q;B.int(*q)();C.int*q;D.int*q();20.有以下程序:void sort(int a,int n)int i,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(aiaj)t=ai;ai=aj;aj=t;)main()int aa10=1,2,3,4,5,6,7,8
9、,9,10,1;sort(aa+2,5);for(i=0;i10;i+) printf(“% d,“ ,aai);printf(“/n“);程序运行后的输出结果是( )。(分数:1.00)A.1,2,3,4,5,6,7,8,9,10B.1,2,7,6,3,4,5,8,9,10C.1,2,7,6,5,4,3,8,9,10D.1,2,9,8,7,6,5,4,3,1021.有以下程序,其中函数 f的功能是将多个字符串按字典顺序排序( )。# includestring.hvoid f(char*p,int n)char*t;int i,j;for(i=0;in-1;i+)for(j=i+1;jn;j
10、+)if(strcmp(pi,pj0)t=pi;pi=pj;pj=t;)main()char *p5=“abc“ ,“aabdfg“ ,“abbd“, “dcdbe“, “cd“);f(p,5);printf(“%d/n“,strlen(p1);程序运行后的输出结果是( )。(分数:2.00)_22.交换两个变量的值,不允许用临时变量,应该使用下列( )位运算符。(分数:2.00)A.B.-C.|D.23.若变量 a.b.x.i都已正确定义并赋值,则以下符合 C语言语法的表达式是( )。(分数:2.00)A.a+=a-=(b=4)*(a=3)B.x%(-3);C.a=a*3=2D.y=floa
11、t(i)24.下列特征中不是面向对象方法的主要特征的是( )。(分数:2.00)A.多态性B.继承C.封装性D.模块化25.有以下程序:# includestdio.hmain()int i=0,a=0;while(i20)for(;)if i%10)=0) break;elsei-:i+=11:a+=i;printf(“%d/n“ ,a);程序的输出结果是( )。(分数:2.00)A.62B.63C.33D.3226.下列叙述中不正确的是( )。(分数:2.00)A.在 C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B.在 C的函数中,最好使用全局变量C.外部变量可以在
12、函数之间传递数据D.自动变量实质上是一个函数内部的局部变量27.下列程序的输出结果是( )。char*point(char*pt);main()char b4=a,c,s,f),*pt=b;pt=point(pt);printf(“%c/n“,*pt);point(char*p)p+=3;return p;(分数:2.00)A.sB.cC.fD.a28.当输入为”hello?”时,下面程序的执行结果是( )。# includestdio.hmain()char c;c=getchar();while(c!=?)putchar(c);break;(分数:2.00)A.RvfsuB.hC.?D.h
13、ello29.设计软件结构是软件生命周期的( )。(分数:2.00)A.软件定义期B.软件开发期C.软件维护期D.以上 3个都不是30.下列关于栈的描述中错误的是( )。(分数:2.00)A.栈是先进先出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入删除操作中,不需要改变栈底指针31.有下列程序:main()int x=5;do(printf(“%d“,x-=4);while(!(-x);程序的输出结果是( )。(分数:2.00)A.1B.2 0C.1-4D.死循环32.定义下列结构体(联合)数组:struct stchar name15;int age;a10=“ZHAO“ ,1
14、4,“WANG“ ,15,“LIU“ ,16, “ZHANG“ ,17);执行语句 printf(”%d,%c”,a2.age,*(a3.name+2)的输出结果为( )。(分数:2.00)A.15,AB.16,HC.16,AD.17,H33.利用 fseek函数可实现的操作是( )。(分数:2.00)A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确34.下列叙述中错误的是( )。(分数:2.00)A.一种数据的逻辑结构可以有多种存储结构B.数据的存储结构与数据的处理效率无关C.数据的存储结构与数据的处理效率密切相关D.数据的存储结构在计算机中所占的空间不一
15、定是连续的35.有以下程序:main()int k=s;while(-k)printf(“%d“,k-=3);printf(“/n“);执行后的输出结果是( )。(分数:2.00)A.1B.2C.4D.死循环36.若输入“abcdef”“abdef”,下述程序的输出结果为( )。# includestdio.h# includestring.hmain()int n;char s120 ,s220,*p1,*p2;scanf(“%s“ ,s1);scanf(“%s“ ,s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf(”%d/n“ ,n);(分数:2.00)A.-1
16、B.0C.“abcdef“D.“abdef“37.以下程序输出结果是( )。main()int m=5;if(m+5)printf(“%d/n“,m);else printf(“%d/n“ ,m-);(分数:2.00)A.7B.6C.5D.438.若有定义:“int*p,x=0,*p,p=x;”,则语句“printf(“%d/n“,*p);”的输出结果是( )。(分数:2.00)A.随机值B.0C.x的地址D.p的地址39.若有定义语句:“char s10=“1234567/0/0“;”,则 strlen(s)的值是( )。(分数:2.00)A.7B.8C.9D.1040.下列选项中不会引起二
17、义性的宏定义是( )。(分数:2.00)A.#define S(x) x*xB.#define S(x) (x)*(x)C.#define S(x) (x*x)D.#define S(x) (x)*(x)二、填空题(总题数:14,分数:30.00)41.树中度为零的结点称为 1。(分数:2.00)填空项 1:_42.在面向对象方法,类之间共享属性和方法的机制称为 1。(分数:2.00)填空项 1:_43.软件是程序、数据和 1 的集合。(分数:2.00)填空项 1:_44.若 x和 a均是 int型变量,则计算 x=(a=4,6*2)后的 x值为 1。(分数:2.00)填空项 1:_45.下列
18、程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。int n=0,c;c=getchar();while(c!=/n)if(_)n+:(分数:2.00)填空项 1:_46.下列程序的输出结果是_。main()int i=0,a=0;while(120)for(;)if(i%10)=0)break;else i-;i+=11;a+=i;printf(“%d/n“ ,a);(分数:2.00)填空项 1:_47.下列程序的运行结果是_。# includestdio.hlong func(int x)long p;if(x=0|x=1)return(1);p=x*func(x-1
19、);return(p);main()printf(“%d/n“,func(4);(分数:2.00)填空项 1:_48.设有下列程序:# includestdio.h# includestring.hmain()int i;char s10,t10;gets(t);for(i=0;i2;i+)gets(s);if(strcmp(t,s)0) strcpy(t,s);printf(“%s/n“ ,t);程序运行后,从键盘上输入CR代表回车符):DEFCRBADEFMCRQTHKGCR则程序运行后的结果是_。(分数:2.00)填空项 1:_49.数据库保护分为安全性控制、 1、并发性控制和数据的恢复
20、。(分数:2.00)填空项 1:_50.下列程序的输出结果是_。# includestring.hmain()char b30,*chp;strcpy(b0,“CH“);strcpy(b1,“DEF“);strcpy(b2,“ABC“);printf(“%s/n“,b);(分数:2.00)填空项 1:_51.有以下程序,若运时从键盘输入:18 ,11回车,则程序的输出结果是_。main()int a,b;printf(“Enter a,b:”);scanf(“%d,%d“,a, b);while(a!=b)while(ab)a-=b;while(ba)b-=a;printf(“%3d%3d/n
21、“ ,a,b);(分数:2.00)填空项 1:_52.在使用 putchar和 getchar函数处理字符时,必须在程序的开头出现包含头文件的命令行是 1。(分数:2.00)填空项 1:_53.下列程序的运行结果是_。# includestdio.hmain()int k=4,m=3,p;p=func(k,m);printf(“%d“,p);p=func(k,m);printf(“%/n“,p);int fun c(a,b)static int m=0 ,1=2;i+=m+1;m=i+a+b;return(m);(分数:2.00)填空项 1:_函数 f(x)=x2+1,通函数 f(x)的累加求
22、 f(0)+f(1)+f(2)+f(10);main()printf(“The sum=d/n“,SumFun(10);SumFun(int n)int x,s=0;for(x=0;x=n,x+)s+=f(_);return s:f(int x)return_;(分数:4.00)填空项 1:_填空项 1:_二级 C语言笔试-241 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.有下列程序:# includestdio.hmain()int a=6,b=7,m=1;switch(a%2)case 0:m+;break;case 1:m+;sw
23、itch(b%2)default:m+;case 0:m+;break;printf(“%d/n“,m);(分数:2.00)A.3B.2 C.4D.1解析:解析 本题考查 switch语句及 break的用法。第一个 switch语句,因为 a=6,a%2=0,所以执行“case 0,m+;”将 m加 1,遇到 break语句跳出 switch语句,结束循环。不执行下面的 switch。2.若有以下程序:int a=1,b=2;a=ab:b=ba:则执行以上语句后 a和 b的值分别是( )。(分数:2.00)A.a=1,b=2B.a=3,b=1 C.a=3,b=2D.a=2,b=1解析:解析
24、本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为 0,相异则结果为 1。b=2 的二进制为 00000010,a=1 的二迸制为 00000001,a=ab=00000011,转化为十进制后为 3,b=ba=0000001000000011=00000001,即 1.3.有以下程序:# include strintg.hmain()char p20=a,b,c,d),q=“abc“,r=“abcde“;strcpy(p+strlen(q),r);strcat(p,q);printf(“%d%d/n“ ,sizeof(p),strlen(p);程序运行后的输出
25、结果是( )。(分数:2.00)A.20 9B.9 9C.20 11 D.11 11解析:解析 在主函数中,首先定义一个包含 20个元素的字符数组 p,执行语句“strcpy(p+strlen(q),r);”,数组 p的内容变为(a,b,c,a,b,c,d,e,/0,/0,/0,/0,/0,/0,/0,/0,/0,/0,/0,/0),执行语句“strcat(p,q);”,数组 p的内容变为(a,b,c,a,b,c,d,e,a,b,c,/0,/0,/0,/0,/0,/0,/0,/0,/0),函数 sizeof(p)是求数组 p的大小,返回 20,而函数 strlen(p)是计算以 p所指起始地址
26、的字符串的长度,这一长度不包括串尾的结束标志 0,所以函数返回 11。4.下面程序的运行结果是( )。# includestdio.hvoid del(char*s)int i,j;char*a:a=s;for(i=0,j=0;ai!=/0 ;i+)if(ai=0ai=9)Sj=ai;j+;sj=/0;main()char*s=“aa89gggh“;de1(s);printf( “/n%s“ ,s);(分数:2.00)A.1B.2 C.3D.4解析:解析 本题中 del(char*s)函数实现的功能是:逐个读入 s数组中的字符,如果遇到数字,则将数字存在 s中,遇到非数字字符则跳过。所以最后输
27、出的应该是字符串 s中所有的数字的个数。5.下述程序用来输出两个字符串前 7个字符中对应相等的字符及其位置号,则程序空白上应该填写的是( )。# includestdio.hmain()char s1=“chinese“,s2=“japanese“;int i:for(i=0;s1i!=/0s2i!=/0;i+)if(s1i=s2ii7)_;(分数:2.00)A.putchar(s2i); putchar(i)B.puts(s1i,i)C.printf(“%c%d/n“,s2i,i) D.printf(“%c“,s1i); printf(“%d/n“,i)解析:解析 本题考查输出函数 putc
28、har的功能是把字符输出到标准输出设备;puts 是把指向的字符串输出到标准输出设备。6.执行语句 printf(“%u/n“,+12345)的输出结果是( )。(分数:2.00)A.12345 B.0C.-1D.非定值解析:解析 “%u“表示输出无符号的整数(如果输出值前有符号,将自动转化为相应的无符号数输出)。7.若有“double a;”,则正确的输入语句是( )。(分数:2.00)A.scanf(“%1f“,a);B.scanf(“%f“,a);C.scanf(“%1f“,a);D.scanf(“1e“, -a); 解析:解析 本题考查 scanf()函数的调用形式是:scanf(格式
29、字符串,输入项地址表)。“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。8.执行语句“for(i=1;i+4;);”后,变量 i的值是( )。(分数:2.00)A.3B.4C.5 D.不定解析:解析 for 循环结束时,i+的值应为 4,i 自加后此时应为 5,故选择 C选项。9.下列工具中为需求分析常用工具的是( )。(分数:2.00)A.PADB.BFDC.N-SD.DFD 解析:解析 需求分析常用的工具有 4种:数据流图(DFD)、数据字典(DD)、判断树和判定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析
30、的工具。10.对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。(分数:2.00)A.125B.n/2C.n D.n+1解析:解析 对长度为 n的线性表进行顺序查找时,从表中的第一个元素开始,给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找完成。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素中的所有元素进行比较,因此比较次数为 n。11.以下程序运行后,输出结果是( )。# includestdio.h# define PT 5.5#define S(x) PT*x*xmain()int a=1,b=2;printf(“%4.1
31、f/n“,S(a+b);(分数:1.00)A.49.5B.9.5 C.22.OD.45.0解析:解析 本题考查函数调用,由于 a+b没有被括起来所以 S(a+b)=PT*a+b*a+b=5.5*1+2*1+2=9.5,故选择 B。12.下列程序的运行结果是( )。main()int x=1,y=3,a=0;while(x+!=(y-=1)a+=1;if(yx) break;printf(“%d,%d,%d/n“,x,y,a);(分数:1.00)A.2,3,2B.2,3,1C.1,3,3D.3,1,2 解析:解析 本题考查 while循环。第一次循环,y=y-1,y=2 循环条件成立,x=1,x
32、+后值为 1,x 自加变成 2,进入循环a=a+1=1,判断 if语句条件是否成立,yx 不成立,接着执行下一次循环。第二次循环,x=2,y-1=1,循环条件成立,进入循环,a=a+1=2,判断 if语句的控制条件是否成立,yx 成立,执行 break语句退出循环。结果为 D13.有以下程序:# includestdio.hmain()int x=4,y;doy=x;if(!y)printf(“x“);elseprintf(“y“);x-:while(x);程序的输出结果是( )。(分数:1.00)A.xyyxB.yyyy C.yyxxD.yxyx解析:解析 本题考查 do-while语句和
33、if.else语句。do-while 语句的功能是先执行循环体再判断条件,所以,先判断 if语句的条件,y=-4,!y 为逻辑 0,条件不成立,执行下面的 else语句,输出 y,然后将 x的值减 1,x=3 条件不成立,执行下面的 else语句,输出 y,然后将 x的值减 1,x=2,满足while循环条件,继续循环。第三次循环:先判断 if语句的条件,y=2,!y 为逻辑 0,条件不成立,执行下面的 else语句,输出 y,然后将 x的值减 1,x=1,满足 while循环条件,继续循环。第四次循环:先判断 if语句的条件,y=-1,!y 为逻辑 0,条件不成立,执行下面的 else语句,
34、输出 y,然后将 x的值减1,x=0,不满足 while循环条件,结束循环。所以 B正确。14.设有定义:“int a;float b;”执行“scanf(“%2d%f“,a,b);”语句时,若从键盘输入876543.0回车,a 和 b的值分别是( )。(分数:1.00)A.876和 543.000000B.87和 6.000000 C.87和 543.000000D.76和 543.000000解析:解析 本题考查 scanf函数,输入格式符%2d%f 表示只接收了字符其中 a输入的值为 2位的十进制整数,即 87,然后将紧接着的 6赋给 b,因为 b的值为单精度数 6,即 6.000000
35、,故选择 B选项。15.设有如下关系表:则下列操作中正确的是( )。(分数:1.00)A.T=RSB.T=RS C.T=RSD.T=R/S解析:解析 关系代数中的集合运算分 4种:有并、差、交和笛卡尔。并();差(-),R 和 S的差是由属于 R但不属于 S的元组构成的集合;交():由既属于 R又属于 S的元组构成的集合;笛卡尔积();对两个关系 R和 S进行合并操作,产生的关系中元组个数为两个关系中元组个数之积。根据关系T中的元组可知,T 关系是关系 R和关系 S进行合并操作所得到的。16.当执行以下程序段时( )。x=-1;dox=x*x;while(!x);(分数:1.00)A.循环体将
36、执行一次 B.循环体将执行两次C.循环体将执行无限次D.系统将提示有语法错误解析:解析 do-while 的功能是先执行一次循环体,再判断条件是否成立,当 x=-1时,执行 do语句,x=x*x=1,接着执行 while后的表达武,其值为 O,退出循环,因此循环体只执行了一次。17.若有下列定义,则对 a数组元素地址的正确引用是( )。int a5,*p=a;(分数:1.00)A.p+5B.*a+1C.-a+1D.a0 解析:解析 本题考查数组元素的地址的引用 A中,p+5 引用的是 a5的地址,而数组 a只有 5个元素,即 a0、a1、a2、a3、a4,所以引用错误(注:数组元素下标从 0开
37、始);B 中,*a+1 指的是将数组 a的第一个元素加 1;选项 C中,不存在,这种引用方式,D 中,a0引用的是数组的首地址。18.下列选项不符合良好程序设计风格的是( )。(分数:1.00)A.源程序要文档化B.数据说明的次序要规范化C.避免滥用 goto语句D.模块设计原则是高耦合、高内聚 解析:解析 在程序设计中对于软件设计中的模块设计要保证高内聚和低耦合,源程序要有文档说明,同时对程序中数据的说明要规范化。而 goto语句破坏程序的结构,要尽量避免使用。所以 D不正确。19.在下列语句中,其含义为“q 是一个函数指针,该指针指向整型数据”的定义语句是( )。(分数:1.00)A.in
38、t*q;B.int(*q)(); C.int*q;D.int*q();解析:解析 本题考查是指针函数。其定义的基本格式为:类型说明符(*函数名)()。“类型说明符”表示返回的指针值指向的数据类型。20.有以下程序:void sort(int a,int n)int i,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(aiaj)t=ai;ai=aj;aj=t;)main()int aa10=1,2,3,4,5,6,7,8,9,10,1;sort(aa+2,5);for(i=0;i10;i+) printf(“% d,“ ,aai);printf(“/n“);程序运行
39、后的输出结果是( )。(分数:1.00)A.1,2,3,4,5,6,7,8,9,10B.1,2,7,6,3,4,5,8,9,10C.1,2,7,6,5,4,3,8,9,10 D.1,2,9,8,7,6,5,4,3,10解析:解析 sort 函数是将数组按从大到小的顺序排序,主函数中调用了 sort函数,sort(aa+2.5)表示从数组 aa中下标为 2的元素开始下标为 6的 5个元素按从大到小的顺序排序,其他元素不变。注意,数组下标从 0开始。21.有以下程序,其中函数 f的功能是将多个字符串按字典顺序排序( )。# includestring.hvoid f(char*p,int n)ch
40、ar*t;int i,j;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(strcmp(pi,pj0)t=pi;pi=pj;pj=t;)main()char *p5=“abc“ ,“aabdfg“ ,“abbd“, “dcdbe“, “cd“);f(p,5);printf(“%d/n“,strlen(p1);程序运行后的输出结果是( )。(分数:2.00)_解析:解析 函数 voidf的功能是将字符指针数组*p中的每个字符串按照从小到大的顺序排序。在主函数 main()中,调用 f(p,5)后,字符指针数组*5中的字符串按照字典顺序从小到大排列为如下形式,即*p5=“aa
41、bdfg“,“abbd“,“abc“,“cd“,“dcdbe/22.交换两个变量的值,不允许用临时变量,应该使用下列( )位运算符。(分数:2.00)A.B.- C.|D.解析:解析 按逻辑位运算特点:用按位与运算将特定位清为 O或保留特定位;用按位或运算将特定的位置为 1;用按位异或运算将某个变量的特定位翻转或交换两个变量的值。23.若变量 a.b.x.i都已正确定义并赋值,则以下符合 C语言语法的表达式是( )。(分数:2.00)A.a+=a-=(b=4)*(a=3) B.x%(-3);C.a=a*3=2D.y=float(i)解析:解析 取余运算符%两边都应是正数,赋值语句左边必须是变量
42、不能是表达式,强制转换语句强制类型应加括号,而非加在变量上。24.下列特征中不是面向对象方法的主要特征的是( )。(分数:2.00)A.多态性B.继承C.封装性D.模块化 解析:解析 面向对象设计方法是使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。25.有以下程序:# includestdio.hmain()int i=0,a=0;while(i20)for(;)if i%10)=0) break;elsei-:i+=11:a+=i;printf(“%d/n“ ,a);程序的输出结果是( )。(
43、分数:2.00)A.62B.63C.33D.32 解析:解析 本题考查 while循环。当 i20 时,进入 while循环体,循环体内的 for循环实现的功能是 i%10=0,也就是说当 i值为 0或者 10的倍数的时候,跳出循环执行 i+=11;a+=i;若 i值不是 10的倍数,则一直执行 for循环 i-。当 i=0时,执行 i+=11;a+=i;i=11,a=11,判断 i=10时,跳出 for循环,执行 i+=11;a+=i;i=21,a=32;判断 1=2120,不符和题意结束循环。26.下列叙述中不正确的是( )。(分数:2.00)A.在 C语言中调用函数时,只能把实参的值传送
44、给形参,形参的值不能传送给实参B.在 C的函数中,最好使用全局变量 C.外部变量可以在函数之间传递数据D.自动变量实质上是一个函数内部的局部变量解析:解析 程序运行时局部变量所在的函数被调用时,编译系统根据需要临时分配内存,调用结束空间解放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存未知的情况下,最好不要使用全局变量。27.下列程序的输出结果是( )。char*point(char*pt);main()char b4=a,c,s,f),*pt=b;pt=point(pt);printf(“%c/n“,*pt);point(char*p)p
45、+=3;return p;(分数:2.00)A.sB.cC.f D.a解析:解析 本题考查函数的调用及参数传递,当执行函数 point时,刚开始指针 p指向“a”,经过+3,指针 p指向“f”,所以最后的输出结果是 f。28.当输入为”hello?”时,下面程序的执行结果是( )。# includestdio.hmain()char c;c=getchar();while(c!=?)putchar(c);break;(分数:2.00)A.RvfsuB.h C.?D.hello解析:解析 本题考查 getchar()函数与 putchar()函数,通过 getchar()函数读入字符,并通过pu
46、tchar()函数将字符逐个输出,当用户输入“?”时停止输出,且 c是一个字符变量只古一个字节。29.设计软件结构是软件生命周期的( )。(分数:2.00)A.软件定义期B.软件开发期 C.软件维护期D.以上 3个都不是解析:解析 本题是对软件设计结构的考查设计软件结构是软件概要设计阶段进行的,而概要设计属于软件开发期。30.下列关于栈的描述中错误的是( )。(分数:2.00)A.栈是先进先出的线性表B.栈只能顺序存储 C.栈具有记忆作用D.对栈的插入删除操作中,不需要改变栈底指针解析:解析 栈是线性表的一种,它的特点是先进后出,并且只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,因此具有记忆作用,栈可以采用顺序存储,也可以采用链式存储。31.有下列程序:main()int x=5;do(printf(“%d“,x-=4);while(!(-x);程序的输出结果是( )。(分数:2.