首页 > 全部 > 二级C语言 > 国家二级C语言机试(结构体、共同体、位运算及文件操作)模拟试卷12

国家二级C语言机试(结构体、共同体、位运算及文件操作)模拟试卷12

本单篇文档共7037字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 章节练习 5241人下载
价格: 1.10 原价:¥7.00
收藏

国家二级C语言机试(结构体、共同体、位运算及文件操作)模拟试卷12

选择题

1.关于typedef的叙述中错误的是( )。(B)

A. 用typedef可以为各种类型起别名,但不能为变量起别名

B. 可以通过typedef增加新的类型

C. 用typedef定义新的类型名后,原有类型名仍有效

D. 可以用typedef将已存在的类型用一个新的名字来代表

解析:C语言允许用typedef说明一种新类型名或为现有类型起个别名,而不是创建新类型,说明新类型名的语句一般形式为:typedef类型名标识符;在此,“类型名”必须是在此语句之前已有定义的类型标识符。标识符是一个用户定义标识符,用作新的类型名。typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。

2.正确的结构体类型说明和变量定义是( )。

A

解析:定义结构体类型的一般形式为:struct结构体名{成员列表};struct结构体名后不能加“:”号。但定义完之后要在句末加分号,所以选项B、C有误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为“stmct t1,t2;”。选项A为用户自定义类型,其为正确的定义形式。

3.若typedef int*T;T a[5];则与a的定义相同的是( )。(A)

A. int*a[5];

B. int(*a)[5]

C. int,*a;

D. int a[5];

解析:typedef的主要功能是为存在的类型指定一个新的别名,后面的代码中可以利用该新定义的别名定义变量,题目定义了整型指针类型T,而后利用T定义了整型指针数组a,含有5个元素,选项A中定义了整型指针数组a,选项B定义了一个指向一维数组的指针a,选项C定义指针变量,而选项D为定义整型数组最常用的形式,数组a中可以存放5个数据元素。

4.关于结构体说明和变量定义中,正确的是( )。

A

解析:结构体的定义是正常的C语言语句。选项B中结构体定义中每个成员后面的分号都不能省略,选项C结构体类型定义完毕后的}外没加分号,选项D中定义变量要加上关键字struct。

5.关于typedef的叙述中错误的是( )。(B)

A. 用typedef可以说明一种新的类型名

B. typedef说明的新类型名必须使用大写字母,否则会出编译错误

C. 可以用typedef说明的新类型名来定义变量

D. typedef的作用是用一个新的标识符来代表已存在的类型名

解析:C语言规定typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原来类型名依然有效。为了便于识别,一般习惯将新的类型名用大写字母表示,但也可以是小写。

6.下面结构体的定义语句中,错误的是( )。

B

解析:结构体的定义是正常的C语言语句。在选项B中,由于在定义完结构体后缺少分号所以这是一条不完整的语句,因而是错误的。

7.设有定义:

struct STR{int real,unreal;)

datal={1,8},data2;

则以下赋值语句中错误的是( )。(A)

A. data2=(2,6);

B. data2=data1;

C. data2.real=data 1.real;

D. data2.real=data 1.unreal;

解析:本题主要考查结构体变量的定义与初始化。题目中定义了STR类型的结构体变量data1和data2,并对data1进行了初始化。结构体变量Q的负值比较灵活,可以用一个结构体变量对另一个结构体变量赋值,用一个结构体变量的成员对另一个结构体变量的成员赋值。

8.以下程序的输出结果是( )。

#nclude

#include

typedef struct{char name[9];char sex;int score[2];}STU;

STU fun(STU a)

{STU b={’’Tom’’,’m’,85,90};

int i;

strcpy(A→name,B→name);

A→sex=B→sex;

for(i=O;i<2;i++)A→score[i]=B→score[i];

return a;}

main()

{STU c={’’Lily’’,’f’,95,92},d;

d=fun(c);

printf(’’%s,%c,%d,%d,’’,d→name,d→sex,d→score[0],d→score[1]);

printf(’’%s,%c,%d,%d,’’,c→name,c→sex,c→score[0],c→score[1]);

}(C)

A. Tom,m,85,90,Tom,m,85,90

B. Lily,f,95,92,Lily,f,95,92

C. Tom,m,85,90,Lily,f,95,92

D. Lily,f,95,92,Tom,m,85,90

解析:在C语言的非指针调用函数中,函数实参与形参之间数据的传递是传值,也就是说在用实参调用形参时,是把实参的值拷贝一份给形参,而实参的值并不变化,仍是原来的值。所以对于本题来说,在主函数中调fun(c)后,实参c的值并不会变化,仍是原值。在函数f中把局部变量b的值依次返回给变量d。

9.若typedef struct STR{int g;char h;}T;以下叙述中正确的是( )。(D)

A. T是stmct STR类型的变量

B. STR是struct类型的变量

C. 可用STR定义结构体变量

D. 可用T定义结构体变量

解析:题目中本题考查typedef,T是用typedef定义的struct STR的新名称,因此可用T定义结构体变量,但是T并不是变量,只是struct STR的新名称。

10.设typedef struet STR{char c;int a[4];}TV;则下面叙述中正确的是( )。(D)

A. STR是struct类型的变量

B. 可以用STR定义结构体变量

C. TV是struct STR类型的变量

D. 可以用TV定义结构体变量

解析:C语言允许用typedef说明一种新的类型名,用标识符代替类型名,在此,“类型名”必须是此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用作新的类型名。typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。在本题中用typedef定义STR为TV的一种新的类型名,因而可以用它定义一个结构体变量。

11.有以下程序段:

struet str{int x;int*y;}*pt;

int a[]={1,2},b[]={3,4};

struet str c[2]={10,a,20,b};

pt=c;

以下选项中表达式的值为11的是( )。(C)

A. (pt++)一>x

B. pt一>x

C. ++pt一>x

D. *pt一>y

解析:本题定义了指针pt,pt指向结构体数据c[2]的第一个元素c[0],所以pt->x=10,执行自加运算后为11。

<

本文档预览:3600字符,共7037字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C语言机试(结构体、共同体、位运算及文件操作)模拟试卷12

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号