1、二级 C语言笔试-314 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.下面程序main()int x=32;printf(“%d/n“,x=x1);的输出是_。(分数:2.00)A.100B.160C.120D.642.下面程序的输出是_。typedef unionlong x2;int y4;char z8;MYTYPE;MYTYPE them;mare()printf(“%d/n“,sizeof(them);(分数:2.00)A.32B.16C.8D.243.设有如下程序#includestdio.hmain()int *k, *j
2、,i=100;j= k=printf(“%d/n“”,*k);上述程序的输出结果是_。(分数:2.00)A.运行错误B.100C.i的地址D.j的地址4.结构化程序设计主要强调的是_。(分数:2.00)A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性5.数据库设计包括两个方面的设计内容,它们是_。(分数:2.00)A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计6.请读程序:#includestdio.hmain()int a;float b,c;scanf(“%2d%3t%4f“,printf(“/na=%d,b=%f,c
3、=%f/n“,a,b,c);若运行时从键盘上输入(图片),则上面程序的输出结果是_。(分数:2.00)A.a=98,b=765,c=4321B.a=10,b=432,c=8765C.a=98,b=765.000000,c=4321.000000D.a=98,b=765.0,c=4321.07.若 x是整型变量,pb 是基类型为整型的指针变量,则正确的赋值表达式是_。(分数:2.00)A.pb=main()int i,*p=for(i=0;i2;i+)if(i=0)aaii+1=*p+1;else +p;printf(“%d“,*p);的输出是_。(分数:2.00)A.23B.26C.33D.3
4、69.软件需求分析一般应确定的是用户对软件的_。(分数:2.00)A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求10.fgetc函数的作用是从指定文件读入个字符,该文件的打开方式必须是_。(分数:2.00)A.只读B.追加C.读或读写D.以上均正确11.以下程序的输出结果是_。#includestdio.h#includesiring.hfun(char *w,int n)char t,*s1,*s2;s1=w;s2=w+n-1;while(s1s2)t=*s1+;*s1=*s2-;*s2=t;main()char *p;p=“1234567“;fun(p,strlen(p);
5、puts(p);(分数:1.00)A.1234567B.7654321C.1711717D.717717112.下列叙述中正确的是_。(分数:1.00)A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构13.下面程序在屏幕上的输出是_。main()printf(“ab/b/bc“);(分数:1.00)A.ab/b/bcB.acC.abcD.abc14.请选出正确的程序段_。(分数:1.00)A.int *pscanf(“%d“,p);B.int *s,k;*s=100;C.int *s,k;char *p,c;s=p=*p=a;D.int *s,k;cha
6、r *p,e;s=p=s=p;*s=1;15.以下程序段给数组所有的元素输入数据,请选择正确答案填入。#includestdio.hmain()int a10,i=0;while(i10)scanf(“%d“,_);(分数:1.00)A.a+(i+)B.B.char b10=h,e,l,l,o,!;C.char b10;strcpy(b,“Hello!“);D.char b10=“Hello!“;20.有以下程序:#includestdio.hmain()char c6;int i=0;for(;i6;ci=getchar(),i+);for(i=0;i6;i+)putchar(ci;prin
7、tf(“/n“);如果从键盘上输入:ab回车c回车def回车则输出结果为_。(分数:1.00)A.abcdefB.abcdC.abcdD.abcdef21.下面关于完全二叉树的叙述中,错误的是_。(分数:1.00)A.除了最后层外,每层上的结点数均达到最大值B.可能缺少若干个左右叶子结点C.完全二叉树般不是满二叉树D.具有结点的完全二叉树的深度为log 2n+122.以下程序的输出结果是_。#includestdio.h#define FUDGE(y) 2.84+y#define PR((分数:1.00)A.pri23.下面程序main()int x=100, a=10, b=20, ok1=
8、5, ok2=0;if(ab)if(b!=15)if(!ok1) x=1;else if(ok2)x=10;x=1;printf(“%d/n“,x);的输出是_。(分数:1.00)A.-1B.0C.1D.不确定的值24.以下程序运行后,输出结果为_。main()int a23=1,3,5,7,9,11,*s2,*pp,*p;s0=a0,s1=a1;pp=s;p=(int*)malloc(sizeof(int);*pp=s11;p=*pp;printf(“%d/n“,*p);(分数:1.00)A.1B.7C.9D.1125.若有程序fun(int a,int b)static int c=0;c
9、+=a+b;rerurn c;main()int x=5,y=3,z=7,r;r=fun(y,x+y),z);r=fun(x,y);printf(“%d/n“,r);上面程序的输出结果是_。(分数:1.00)A.23B.15C.19D.1826.下面程序的输出是_。main()int k=11;printf(“k=%d,k=%o,k=%x/n“,k,k,k);(分数:1.00)A.k=11,k=12,k=11B.k=11,k=13,k=13C.k=11,k=013,k=0xbD.k=11,k=13,k=B27.设整型数 i=5,则 printf(“%d“,i+i);的输出为_。(分数:1.00
10、)A.10B.11C.12D.语法错误28.下述关于数据库系统的叙述中正确的是_。(分数:1.00)A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型的一致D.数据库系统比文件系统能管理更多的数据29.设有以下定义和语句,输出的结果是(用 small模式编译,指针变量 2个字节)_。struct datelong *cat;struct date *next;double dog;too;printf(“%d“,sizeof(too);(分数:1.00)A.20B.16C.14D.1230.请选出以下程序的输出结果_。#includestdio.h
11、sub(x,y,z)int x,y,*z;*z=y-x;main()int a,b,c;sub(10,5,sub(7,a,sub(a,b,printf(“%d,%d,31.以下程序运行后,输出结果是_。main()char *d=“ab“,“cde“;printf(“%x“,d1);(分数:1.00)A.cdeB.字符 c的 AScII码值C.字符 c的地址D.出错32.设 a、b 和 c都是 int型变量,且 a=3、b=4、c=5,则下面的表达式中,值为 0的表达式是_。(分数:1.00)A.astrcpy(ar+2,strcat(p1,p2);printf(“%s/n“,str);的输出
12、是_。(分数:1.00)A.xyzabcABCB.zabeABCC.yzabcABCD.xyabcABC35.设有以下语句,其中不是对 a数组元素的正确引用的是:_(其中 0i10)int a10=0,1,2,3,4,5,6,7,8,9,*p=a;(分数:1.00)A.ap-aB.*(x=(i=j?i:(j=7);printf(“/n%d,%d“,i,j);(分数:1.00)A.5,7B.5,5C.语法错误D.7,537.下列司用于 C语言用户标识符的组是_。(分数:1.00)A.void define WORDB.a3_b3 _123 CarC.For -abc IFCaseD.2a DO
13、sizeof38.以下对枚举类型名的定义中正确的是_。(分数:1.00)A.enum a=one,two,three;B.enum aon=9,two=-1,three;C.enum a=“one“,“two“,“three“;D.enum a“one“,“two“,“three“;39.若有下面的说明和定义,则 sizeof(struct a(分数:1.00)A.的值是_。c=ab1;(分数:1.00)A.00001011B.00001111C.00011110D.0001110042.有以下程序,程序运行后的输出结果是_。int f(int b4)int i,j,s=0;for(j=0;j
14、4;j+)i=j;if(i2)i=3-j;s+=bij;return s;main()int a44=1,2,3,4,0,2,4,6,3,6,9,12,3,2,1,0;printf(“%d/n“,f((分数:1.00)A.);scanf(“%d“,if(x+5)printf(“%d/n“,x);else printf(“%d/n“,x-);则输出是_。(分数:1.00)A.7B.6C.5D.444.若有以下定义和语句:int a=1,2,3,4,5,6,7,8,9,10,*p=a;则值为 3的表达式是_。(分数:1.00)A.p+=2,*(p+)B.P+=2,*+pC.P+=3,*p+D.P+
15、=2,+*p45.下面程序的输出是_。main()char *s=“12134211“;int v1=0,v2=0,v3=0,v4=0,k;for (k=0;sk;k+)switch(sk)default:v4+;case1:v1+;case3:v3+;case2:v2+;printf(“v1=%d,v2=%d,v3=%d,v4=%d/n“,v1,v2,v3,v4);(分数:1.00)A.v1=4,v2=2,v3=1,v4=1B.v1=4,v2=9,v3=3,v4=1C.v1=5,v2=8,v3=6,v4=1D.v1=8,v2=8,v3=8,v4=846.若要用下面的程序片段使指针变量 p指向
16、一个存储整型变量的动态存储单元int *pp=_malloc(sizeof(int);则应填入_。(分数:1.00)A.intB.int*C.(*int)D.(int*)47.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_。(分数:1.00)A.概要设计B.详细设计C.可行性分析D.需求分析48.算法的时间复杂度是指_。(分数:1.00)A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数49.以下叙述中正确的是_。(分数:1.00)A.C语言比其他语言高级B.C语言可以不用编译就能被计算机识别执行C.C语言
17、以接近英语国家的自然语言和数学语言作为语言的表达形式D.C语言出现的最晚,具有其他语言的切优点50.下面程序的输出是_。main()int x=3,y=6,a=0;while(x+!=(y-=1)a+=1;if(yx)break;printf(“x=%d,y=%d,a=%d/n“,x,y,(分数:1.00)A.;A) x=4,y=4,a=1B) x=5,y=5,a=1C) x=5二、填空题(总题数:15,分数:40.00)51.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、 【1】 遍历和后序遍历。(分数:2.00)填空项 1:_52.结构化程序设计方法的主要原
18、则可以概括为自顶向下、逐步求精、 【2】 和限制使用 goto语句。(分数:2.00)填空项 1:_53.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和 【3】 的设计来实现。(分数:2.00)填空项 1:_54.数据库系统的三级模式分别为 【4】 模式、内部级模式与外部级模式。(分数:2.00)填空项 1:_55.数据字典是各类数据描述的集合,它通常包括 5个部分,即数据项、数据结构、数据流、 【5】 和处理过程。(分数:2.00)填空项 1:_56.下面程序的输出是 【6】 。main()int arr10,i,k=0;for(i=0;i10;i+)ar
19、ri=i;fov(i=1;i4;i+)k+=arri+i;printf(“%d/n“,k);(分数:2.00)填空项 1:_57.若 a=10,b=20,则表达式!(ab)的值是 【7】 。(分数:2.00)填空项 1:_58.有以下程序int fa(int x)return x*x;int fb(int x)retum x*x*x;int f(int(*f1)(),int(*f2)(),int x)return f2(x)-f1(x);main()int i;i=f(fa,fb,2);printf(“%d/n“,i);程序运行后,输出结果是 【8】 。(分数:2.00)填空项 1:_59.下
20、面程序的输出是 【9】 。main()enum ernem1=3,em2=1,em3;char *aa=“AA“,“BB“,“CC“,“DD“;printf(“%s%s%s/n“,aaem1,aaem2,aaem3);(分数:2.00)填空项 1:_60.若想通过以下输入语句使 a=5.0,b=4,c=3,则输入数据的形式应该是 【10】 。int b,c; float a;scanf(“%f,%d,c=%d“,dp=x*x-y*y;main()int a=4,b=3,c=5,d=6;t(a,b,c,d);printf(“%d%d/n“,c,d);(分数:2.00)填空项 1:_62.下面程序
21、的输出结果是 【12】 。char b=“ABCD“;main()char b30;strcpy(strcpy(strcpy(printf(“%s/n“,b);(分数:2.00)填空项 1:_63.有以下定义和语句,则 sizeof(a)的值是 【13】 ,而 sizeof(a.share)的值是 【14】 。struct dateint day;int mouth;int year;union int share1;float share2;share;a;(分数:4.00)填空项 1:_64.下述函数用于统计一行字符中的单词个数,单词之间用空格分隔。word_num(str)char st
22、r;int i,num=0,word=0;fo(i=0;stri!= 【15】 ;i+)if( 【16】 =)word=0;else if(word=0)word=1;【17】 ;return(num);(分数:6.00)填空项 1:_65.有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组中。算法是:假设排序顺序是从小到大,对输入的数,检查它在数组中哪个数之后,然后将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。请在程序中的空白处填上一条语句或一个表达式。#define N 100main()float aN+1,x;int i,p;for(i=0;iN;i+
23、)scanf(“%f“scanf(“%f“,for(i=0,p=N;iN;i+)if(xai)【18】 ;break;for(i=N-1; 【19】 ;i-)ai+1=ai;ap=x;for(i=0; 【20】 ;i+)printf(“%8.2f“,ai);if(i%5=0)printf(“/n“);(分数:6.00)填空项 1:_二级 C语言笔试-314 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.下面程序main()int x=32;printf(“%d/n“,x=x1);的输出是_。(分数:2.00)A.100B.160C.120D
24、.64 解析:评析 是 C语言中规定的左移运算符,例如,a=a2,这个语句即是将 a的二进制数左移两位,左移一位相当于该数乘于 2,左移两位相当于该数乘以 2的 2次方。所以,x1=32*2=64。2.下面程序的输出是_。typedef unionlong x2;int y4;char z8;MYTYPE;MYTYPE them;mare()printf(“%d/n“,sizeof(them);(分数:2.00)A.32B.16C.8 D.24解析:评析 sizeof(x)是一个标准 C函数,它的返回值是 x型的数据结构占用的内存字节数。题目中定义了一个共用体,共用体变量在内存中所占的长度等于
25、最长的成员的长度。3.设有如下程序#includestdio.hmain()int *k, *j,i=100;j= k=printf(“%d/n“”,*k);上述程序的输出结果是_。(分数:2.00)A.运行错误B.100 C.i的地址D.j的地址解析:评析 j=float b,c;scanf(“%2d%3t%4f“,printf(“/na=%d,b=%f,c=%f/n“,a,b,c);若运行时从键盘上输入(图片),则上面程序的输出结果是_。(分数:2.00)A.a=98,b=765,c=4321B.a=10,b=432,c=8765C.a=98,b=765.000000,c=4321.000
26、000 D.a=98,b=765.0,c=4321.0解析:评析 scanf()把用户从键盘录入的数字的第 1、2 位存入整型变量 a;把第 3、4、5 位存入单精度实型变量 b,把第 6、7、8、9 位存入单精度实型变量 c,用户录入的第 10位被 scanf()遗弃。这时变量 a、b、c 的值分别为:98、765.000000、4321.000000。7.若 x是整型变量,pb 是基类型为整型的指针变量,则正确的赋值表达式是_。(分数:2.00)A.pb=main()int i,*p=for(i=0;i2;i+)if(i=0)aaii+1=*p+1;else +p;printf(“%d“,
27、*p);的输出是_。(分数:2.00)A.23 B.26C.33D.36解析:评析 观察题目,可以发现,*p=。11.以下程序的输出结果是_。#includestdio.h#includesiring.hfun(char *w,int n)char t,*s1,*s2;s1=w;s2=w+n-1;while(s1s2)t=*s1+;*s1=*s2-;*s2=t;main()char *p;p=“1234567“;fun(p,strlen(p);puts(p);(分数:1.00)A.1234567B.7654321C.1711717 D.7177171解析:评析 在子函数 fun中,s1 为字符
28、串 w的起始地址,s2 为字符串的结束地址(字符/0除外),当执行循环结束循环, w=“1711717”。12.下列叙述中正确的是_。(分数:1.00)A.线性表是线性结构 B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构解析:评析 一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。13.下面程序在屏幕上的输出是_。main()printf(“ab/b/bc“);(分数:1.00)A.ab/b/bcB.ac C.abcD.abc解析:评析 C 语言中允许使用种特殊形式的字符常量,就是以个“/”开头的字符序列,这样
29、的字符称为“转文字符”。常用的转文字符有:/n,换行;/t,水平制表;/b,退格:/r,回车。14.请选出正确的程序段_。(分数:1.00)A.int *pscanf(“%d“,p);B.int *s,k;*s=100;C.int *s,k;char *p,c;s=p=*p=a; D.int *s,k;char *p,e;s=p=s=p;*s=1;解析:评析 本题的 A和 B犯了一个同样的错误,即指针变量 p定义后并没有指向具体的变量,因此不能进行赋值操作。另外,在选项 D中,s 是 int指针变量,p 是 char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量 p
30、的值赋给整型指针变量 s。15.以下程序段给数组所有的元素输入数据,请选择正确答案填入。#includestdio.hmain()int a10,i=0;while(i10)scanf(“%d“,_);(分数:1.00)A.a+(i+) B.B.char b10=h,e,l,l,o,!; C.char b10;strcpy(b,“Hello!“);D.char b10=“Hello!“;解析:评析 在 C语言中,大写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字符串。20.有以下程序:#includestdio.hmain()char c6;int
31、 i=0;for(;i6;ci=getchar(),i+);for(i=0;i6;i+)putchar(ci;printf(“/n“);如果从键盘上输入:ab回车c回车def回车则输出结果为_。(分数:1.00)A.abcdefB.abcdC.abcd D.abcdef解析:getchar():此函数的作用是从终端(或系统隐含指定的输入设备)输入个字符。2putchar():此函数的作用是向终端输出个字符,也可以输出控制字符。本题在输入字符时,ab 和 c后面的回车符分别赋给了 c2和 c4,所以,正确答案为 C。21.下面关于完全二叉树的叙述中,错误的是_。(分数:1.00)A.除了最后层外
32、,每层上的结点数均达到最大值B.可能缺少若干个左右叶子结点 C.完全二叉树般不是满二叉树D.具有结点的完全二叉树的深度为log 2n+1解析:评析 满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后层上只缺少右边的若干子结点(叶子结点)的二叉树。22.以下程序的输出结果是_。#includestdio.h#define FUDGE(y) 2.84+y#define PR((分数:1.00)A.pri解析:评析 在程序中如果有带实参的宏,则按#define 命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将
33、程序语句中相应的实参代替形参。将实参带入已经定义的宏中,可以得出答案为“12”。23.下面程序main()int x=100, a=10, b=20, ok1=5, ok2=0;if(ab)if(b!=15)if(!ok1) x=1;else if(ok2)x=10;x=1;printf(“%d/n“,x);的输出是_。(分数:1.00)A.-1 B.0C.1D.不确定的值解析:评析 第叫判断值为真,过度到下个判断,第二个判断为真,过度到第三个判断如此循环,在打印输出语句的前行,程序给变量 x赋了值,为-1,所以,无论前期如何变化,最后的 x值依然为-1。24.以下程序运行后,输出结果为_。m
34、ain()int a23=1,3,5,7,9,11,*s2,*pp,*p;s0=a0,s1=a1;pp=s;p=(int*)malloc(sizeof(int);*pp=s11;p=*pp;printf(“%d/n“,*p);(分数:1.00)A.1B.7C.9 D.11解析:评析 s 是一个含有两个元素的指针数组,pp 是个指向指针变量的指针,s0是指向二维数组a行下标为 0的元素的首地址,即 a00的地址,s1为 a10的地址。pp 的值为 s0的地址。*pp=s11后,aO0的值将被赋值为 a11的值,执行 p=*PP;后,p 中将是 s0的值,最后的输出语句将输出地址 s0所指向的数据
35、,即 a00。25.若有程序fun(int a,int b)static int c=0;c+=a+b;rerurn c;main()int x=5,y=3,z=7,r;r=fun(y,x+y),z);r=fun(x,y);printf(“%d/n“,r);上面程序的输出结果是_。(分数:1.00)A.23 B.15C.19D.18解析:评析 static 声明的外部变量只限于被本文件引用,而不能被其他文件引用。用 static来声明个变量的作用有:对局部变量用 static声明,则为该变量分配的空间在整个程序执行期间始终存在;全部变量用 static声明,则该变量的作用域只限于本文件模块(即
36、被声明的文件中)。调用第个fun,其两个实参的值为(3,5+3)与 7即 8与 7,在函数 fun执行结束返回 15。第二次调用 fun时,由于static为静态类型,其值保留,执行 fun(5,3)后,其返回值为 23,故选 A。26.下面程序的输出是_。main()int k=11;printf(“k=%d,k=%o,k=%x/n“,k,k,k);(分数:1.00)A.k=11,k=12,k=11B.k=11,k=13,k=13C.k=11,k=013,k=0xbD.k=11,k=13,k=B 解析:评析 在 C语言格式字符的输出中,“%d”是以带符号的十进制形式输出整数;“%o”是以 8
37、进制无符号形式输出整数(不输出前导符 0);“%x”是以 16进制无符号形式输出整数(不输出前导符 0x)。27.设整型数 i=5,则 printf(“%d“,i+i);的输出为_。(分数:1.00)A.10B.11C.12D.语法错误 解析:评析 C 语言中有基本的算术运算符(+、-、*、/)还包括自增自减运算符(+、-),在 C语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为 i+i,显然该表达式不合 C语言语法。28.下述关于数据库系统的叙述中正确的是_。(分数:1.00)A.数据库系统减少了数据冗余 B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型的一
38、致D.数据库系统比文件系统能管理更多的数据解析:评析 由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值,而数据的不一致性指的是同一个数据在系统的不同拷贝处有不同的值。29.设有以下定义和语句,输出的结果是(用 small模式编译,指针变量 2个字节)_。struct datelong *cat;struct date *next;double dog;too;printf
39、(“%d“,sizeof(too);(分数:1.00)A.20B.16C.14D.12 解析:评析 sizeof 函数计算已知类型所占的字节数。结构体变量所占内存长度是各成员占的内存长度之和。指针变量占 2个字节,所以 cat和*next 各占 2个字节;double 型占 8个字节,故 too共占 12个字节。30.请选出以下程序的输出结果_。#includestdio.hsub(x,y,z)int x,y,*z;*z=y-x;main()int a,b,c;sub(10,5,sub(7,a,sub(a,b,printf(“%d,%d,解析:评析 sub()函数的作用是将形参 y和 x的差赋
40、给了 z指向的那个内存地址,所以在 sub(10,5,printf(“%x“,d1);(分数:1.00)A.cdeB.字符 c的 AScII码值C.字符 c的地址 D.出错解析:评析 指针数组中的每一个元素都相当于一个指针变量。一维指针数组的定义形式为:类型名 *数组名数组长度,在本题 main函数中定义指针数组 d,它有两个元素,其初值分别是“ab”、“cde”的首地址。d1的值为“cde”的首地址。%x 是指以十六进制数形式输出整数。32.设 a、b 和 c都是 int型变量,且 a=3、b=4、c=5,则下面的表达式中,值为 0的表达式是_。(分数:1.00)A.astrcpy(ar+2
41、,strcat(p1,p2);printf(“%s/n“,str);的输出是_。(分数:1.00)A.xyzabcABCB.zabeABCC.yzabcABCD.xyabcABC 解析:评析 strcat(p1,p2)将字符串 abcABC防到了*p1 所指向的存储单元中:strcpy 在本题将 abcABC复制到 str+2所指向的存储单元中,即覆盖原 str数组中的字符 z及其后的所有字符, 故 str的值为“xyabcABC”。35.设有以下语句,其中不是对 a数组元素的正确引用的是:_(其中 0i10)int a10=0,1,2,3,4,5,6,7,8,9,*p=a;(分数:1.00)
42、A.ap-aB.*(x=(i=j?i:(j=7);printf(“/n%d,%d“,i,j);(分数:1.00)A.5,7 B.5,5C.语法错误D.7,5解析:评析 条件表达式的一般形式为:表达式 1?表达式 2:表达式 3;先求解表达式 1,若为真则求解表达式 2;若表达式 1的值为假,则求解表达式 3。本题中先判断 i=j,不等,执行 j=7;然后执行x=7。故本题为 A。37.下列司用于 C语言用户标识符的组是_。(分数:1.00)A.void define WORDB.a3_b3 _123 Car C.For -abc IFCaseD.2a DO sizeof解析:评析 C 语言规定
43、标识符只能由字母、数字和下划线 3种字符组成,且第一个字符必须为字母或下划线,所以排除 C和 D。C 语言还规定标识符不能为 C语言的关键字,从而选项 A(void是关键字)是错误的。38.以下对枚举类型名的定义中正确的是_。(分数:1.00)A.enum a=one,two,three;B.enum aon=9,two=-1,three; C.enum a=“one“,“two“,“three“;D.enum a“one“,“two“,“three“;解析:评析 声明枚举类型用 enum开头。例如:enum weekday(sun,mon,tue,wed,thu,fri,sat);说明;1、
44、在 C编译中,对枚单元素按常量处理,同时可以改变他们的值。2、枚举值可以用来做判断比较。3、一个整数不能直接赋给一个牧举变量。39.若有下面的说明和定义,则 sizeof(struct a(分数:1.00)A.的值是_。c=ab1;(分数:1.00)A.00001011B.00001111 C.00011110D.00011100解析:评析 C 语言提供六种位运算符,按优先级由高到低的顺序分别为:取反()、左移()和右移()、按位与 (for(j=0;j4;j+)i=j;if(i2)i=3-j;s+=bij;return s;main()int a44=1,2,3,4,0,2,4,6,3,6,
45、9,12,3,2,1,0;printf(“%d/n“,f((分数:1.00)A.);scanf(“%d“,if(x+5)printf(“%d/n“,x);else printf(“%d/n“,x-);则输出是_。(分数:1.00)A.7B.6 C.5D.4解析:评析 根据 C语言的语法,X+是在使用 x之后,再将 x的值加 1,在 if语句中,x 的值为 5,条件不成立,执行 else后面的语句,因为 x的值已经加 1,为 6,所以打印结果为 6。44.若有以下定义和语句:int a=1,2,3,4,5,6,7,8,9,10,*p=a;则值为 3的表达式是_。(分数:1.00)A.p+=2,*
46、(p+) B.P+=2,*+pC.P+=3,*p+D.P+=2,+*p解析:评析 引用个数组元素,可以用:(1)下标法,如 ai形式:(2)指针法,如*(a+i)或*(p+i)。数组的下标从 0开始,值为 3的数组元素是 a2。B、C 的内容为 a3,D 将 a2前自加,结果为 4。45.下面程序的输出是_。main()char *s=“12134211“;int v1=0,v2=0,v3=0,v4=0,k;for (k=0;sk;k+)switch(sk)default:v4+;case1:v1+;case3:v3+;case2:v2+;printf(“v1=%d,v2=%d,v3=%d,v4=%d/n“,v1,v