三九宝宝网宝宝百科宝宝知识

07年4月等级考试二级C语言练习一

11月10日 编辑 39baobao.com

[二级建造施工之选择水性木器漆的方法]随着人们环保意识的增强,可挥发物极少的水性漆受到市场的欢迎。顾名思义,水性漆是以水作为稀释剂的漆。如我们所用的内外墙涂料、金属漆等都有相应的水性漆产品。可见水性漆是...+阅读

(35)在C语言中,形参的缺省存储类是

A)auto

B)register

C)static

D)extern

【答案】A

【解析】本题考核的知识点是定义函数时形参的缺省存储类。在C语言中,形参的缺省存储类为auto。

(36)若指针p已正确定义,要使p指向两个连续的整型动态存储单位,不正确的语句是

A)p=2*(int *)malloc(sizeof(int));

B)p=(int *)malloc(2*sizeof(int));

C)p=(int *)malloc(2*2);

D)p=(int *)malloc(2,sizeof(int));

【答案】A

【解析】malloc()函数的调用格式是“malloc(n)”,作用是申请n个字符的存储单元并把该存储区的首地址作为返回值,实际调用的时候可在前面加上“(类型说明符*)”,以转换成需要的类型的地址。选项D多了一个参数,不符合malloc()函数的调用格式;整型变量在有的计算机系统里占4个字节,并不一定在所有的计算机系统里都是两个字节;选项A中是申请一个整型的存储空间并把该存储空间的首地址乘以2,这样的做法是不正确的,其存储空间为没乘以2之前的存储空间的2倍的连续存储空间的地址。

(37)以下程序的输出结果是

main()

{ char x=040;

printf("%o\n",x<<1);

}

A)100

B)80

C)64

D)32

【答案】A

【解析】首先将八进制040转换成二进制数000100000,再将此二进制数左移一位为001000000,输出时转换成八进制数100。

(38)若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是

A)fopen("A:\user\abc.txt", "r")

B)fopen("A:\\user\\abc.txt", "r+")

C)fopen("A:\user\abc.txt", "rb")

D)fopen("A:\\user\\abc.txt","w")

【答案】B

【解析】本题考核的知识点是文件名的表示法以及文件的读写模式。由于“\”是转义字符,所以在文件名中的“\”用“\\”来表示。要打开文本文件进行读写,应使用读写模式“r+”。

(39)以下不能正确进行字符串赋初值的语句是

A)char str[5]="good! ";

B)char str[]="good! ";

C)char *str="good! ";

D)char str[5]={'g', 'o', 'o', 'd'};

【答案】A

【解析】选项A定义了一个字符数组str,具有5个元素,但赋初值的时候,初值个数却是6个(有一个'\0',);选项B定义了一个字符数组str并给它赋初值,由于省去了长度定义,长度由初值个数确定,相当于str[6];选项C定义了一个字符型指针变量并用一个字符串给它赋初值,使该字符型指针指向了该字符串;选项D是对字符型数组中单个元素依次赋初值。

(40)若有下面的说明和定义:

struct test

{ int ml;char m2;float m3;

union uu{char ul[5];int u2[2];} ua;

} myaa;

则 sizeof(struct test)的值是

A)12

B)16

C)14

D)9

【答案】A

【解析】结构体所占用的存储空间是其所有成员占用的存储空间之和,而共用体所占用的存储空间是成员中占用存储空间者的空间,共用体类型uu是结构体的成员,它所占的内存长度为成员的长度,即字符型数组u1的长度,即1×5=5。每个整型数据占用2个字节,每个字符型数据占用一个字节,单精度型数据占4个字节,myaa为结构体变量,它所占的存储空间为各个成员所占存储空间之和,即2+1+4+5=12。

(41)若有定义:int aa[8];。则以下表达式中不能代表数组元素aa[1]的地址是

A)

for (i=m;i<n;i=i+2)s=s+b[i];

return s;

}

main()

{ int x,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

printf("%d\n",x);

}

A)10

B)18

C)8

D)15

【答案】A

【解析】在main()函数中定义了一个变量x,以及一个有9个元素的数组a,并且每个元素分别赋初值为

1、

2、

3、

4、

5、

6、

7、8和9。执行函数调用f(a,3,7),把a的首地址赋给形参b,把3和7分别赋给形参m和n。在f()函数中,for循环执行了2次:第一次,i的值为3,相当于执行了语句“s=s+b[3]”,b[3]的值就是a[3]的值4,故s的值变为4;第二次,i值为5,相当于执行了语句“s=s+b[5];”,b[5]的值为6,故s的值变为10。把s作为函数值返回并赋值给x。

(43)若有以下定义和语句:

int s[4][5],(*ps)[5];

ps=s;

则对s数组元数的正确引用形式是

A)ps+1

B)*(ps+3)

C)ps[0][2]

D)*(ps+1)+3

【答案】C

【解析】本题首先定义了一个4行5列的数组s,又定义了一个指向由5个元素组成的一维数组的指针变量ps,通过赋值让ps指向了数组s的首地址。此时数组元素s[i][j]的地址为“*(ps+i)+j”,数组元素s[i][j]可表示为*(*(ps+i)+j)。选项B表示的是数组元素a[3][0]的地址;选项D表示的是数组元素s[1][3]的地址;选项A中“ps+1”为指向下一行(第二行)的地址;选项C中ps[0][2]无条件等价于“*(ps[0]+2)”又无条件等价于“*(*(ps+0)+2)”,即是数组元素s[0][2]。

(44)以下程序的输出结果是

main()

{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;

for (i=0;i<3;i++)

for(j=i;j<=i;j++)t=t+b[i][b[j][j]];

printf("%d\n",t);

}

A)3

B)4

C)1

D)9

【答案】B

【解析】本题中定义了一个二维数组b并初始化,定义了一个变量t并赋初值1。接着通过一个二重循环将若干个元素的值加到变量t中。循环的执行步骤是:外层循环变量i=0时,内层循环变量j=i执行语句“t=t+b[i][b[j][j]]”,相当于t=t+b[0][b[0][0]],由于b[0][0]的值为0,得到t的值为1;依次类推,循环共执行了3次,最后输出t的值为4。

(45)以下程序的输出结果是

&emspinclude <stdio.h>

&emspinclude <string.h>

main()

{ char b1[8]="abcdefg",b2[8],*pb=b1+3;

while(--pb>=b1)strcpy(b2,pb);

printf("%d\n",strlen(b2));

}

A)8

B)3

C)1

D)7

【答案】D

【解析】strcpy()函数的作用是把第二个参数代表的字符串,复制到第一个参数指向数组中。首先定义了两个字符数组b1和b2,并用一个字符串给b1赋初值,然后定义了一个字符型指针变量pb,通过赋初值使它指向b1[3]。接着执行while循环,该循环执行了3次:第一次判断条件“--pb>=b1”,使pb的值为“b1+2”,执行“strcpy(b2,pb);”后,b2中的内容为“cdefg”;第二次判断条件“--pb>=b1”,使pb的值为“b1+1”,执行“strcpy(b2,pb);”后b2的内容为“bcdefg”第三次判断条件“--pb>=b1”使pb的值为“b1”,执行“strcpy(b2,pb);”后b2的内容为“abcdefg”。最后输出b2数组中存放的字符串长度,显然是7。(这里还有一个关键点:就是每当执行一次while循环判断条件,就执行一次“--pb”,使得指针pb自减1,即前移一位)。

(46)在说明语句:int *f();中,标识符f代表的是

A)一个用于指向整型数据的指针变量

B)一个用于指向一维数组的行指针

C)一个用于指向函数的指针变量

D)一个返回值为指针型的函数名

【答案】D

【解析】定义指向整型元素的指针变量形式为:int*指针变量名。定义指向整型一维数组的行指针形式为:int(*指针变量名[长度],定义指向返回值为整型的函数的指针变量的形式为:int(*函数名)(),定义返回值为指向整型的指针型函数的形式为:int *函数名()。本题定义的是一个返回值为指针型的函数f()。

(47)不合法的main函数命令行参数表示形式是

A)main(int a,char *c[])

B)main(int arc,char **arv)

C)main(int argc,char *ar)

D)main(int ar,char *argc[])

【答案】C

【解析】main()函数可以带有参数,并且参数只能有两个,第一个参数类型为整型,用来记下命令行的参数个数;第二个参数为一个字符型指针数组,或字符型二级指针变量(指向一个数组,数组元素又是一个一级字符指针),其各个元素用来记下从命令行各参数字符串的首地址。故本题只有C选项不符合要求。

(48)以下程序的输出结果是

int x=3;

main()

{ int i;

for(i=1;i<x;i++)incre();

}

incre()

{ static int x=1;

x*=x+1;

printf("%d",x);

}

A)3 3

B)2 2

C)2 6

D)2 5

【答案】C

【解析】本题首先定义一个全局变量x并赋初值为3,主函数中使用这个全局变量控制循环次数,循环执行了2次,调用两次incre()函数。第一次调用incre(),定义一个静态变量x并赋初值1,然后执行“x*=x+1”,使x的值变为2;第二次调用incre()函数时,静态变量将保留上一次退出时的值即2,执行语句“x*=x+1”后,x的值变成6,输出x的值为6。

(49)若有以下定义:

struct link

{ int data;

struct link *next;

}a,b,c,*p,*q;

且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是

A)a.next=c;c.next=b;

B)p.next=q;q.next=p.next;

C)p->next=q->next=p->next;

D)(*p).next=q;(*q).next=

【答案】D

【解析】在本题中指针p指向变量a,q指向变量c。要把c插入到变量a和变量b之间,就应该首先让变量a的指针域指向变量c,即(*p).next=q,然后让变量c的指针域指向变量b,即(*q).next=

char ch[8];

} PER;

则下面叙述中正确的是

A)PER是结构体变量名

B)PER是结构体类型名

C)typedef struct是结构体类型

D)struct是结构体类型名

【答案】B

【解析】本题通过typedef在定义一个结构体类型的同时,把它自定义成类型名PER,故PER是结构体类型名。

以下为关联文档:

[CATTI]二级笔译实务模拟题Section 1: English-Chinese Translation (英译汉) This section consists of two parts, Part A - "pulsory Translation" and Part B - "Choice of Two Translations" con...

二级建造之点式玻璃幕墙的施工工艺点式玻璃幕墙不论其那种结构形式,施工工艺都非常严格和复杂,在这里无法详细写出,在此依悬索式玻璃幕墙施工顺序示意程序来代表施工工艺过程。 测量放线→预埋件校准→桁架的安...

二级建造师施工辅导之外墙浮雕施工工艺一、墙面的要求及验收 1、新的水泥砂浆、混凝土墙面必须经过一段合理的保养时间,让其充分干燥(如其表面颜色较深则表示其水份含量仍很高),使其含水率小于10%,PH值小于10后方可...

二级建造施工辅导之不发火水磨石地面施工1、工程概况 本工程为某集团公司火炸药生产车间配套火炸药储存库房,建筑面积296平方米,为甲类仓库、B级防爆要求。库房内不设采暖电源。库房外设防爆照明电源,室内外均设消火栓...

全国翻译资格考二级笔译模拟试题5Part B Choice of Two Translations (二选一题) (20 points) Topic 1 (选题一) 中国画 中国画与中医、京剧在一起,被誉为中国的"三大国粹。"按内容分,主要有人物画、山水画、花...

二级建造施工之建筑施工前的准备工作在检修工程的施工中,对检修计划、施工准备、施工技术方案、施工安全措施、检修质量、文明检修、交工验收、开停车衔接、费用|考试大|核算十分重视。检修工程施工后,做到台台设...

二级建造施工之浇带质量控制的技术措施后浇带作为超长建筑不留温度伸缩缝及高层建筑高层部分与裙房间不留沉降缝的技术措施,已普遍采用。 但如在施工过程中有些环节注意不到,往往会使后浇带起不到应有作用,还可能给...

二级建造施工之建筑腻子作用及施工工艺一、建筑腻子的定义 建筑腻子是施涂于建筑物内外墙面,起弥补基层缺陷或表现多种花纹和质感作用的涂装基层材料。 二、建筑腻子的作用 1、 弥补基层缺陷 找平 用刮尺在墙面或...

二级建造施工之工程材料的质量监理工程材料的质量好坏,直接影响着整个建筑物质量等级、结构安全、外部造型和建成后的使用功能等。因此,工程材料的质量监理无论在建筑、安装还是交通行业均是项目监理工作中一个...

推荐阅读
图文推荐