国家二级C语言(结构体和共用体、文件)机试模拟试卷4
选择题
1.若有语句typedef struct S{int g;char h;}T;,则下列叙述中正确的是( )。(B)
A. 可用S定义结构体变量
B. 可用T定义结构体变量
C. S是struct类型的变量
D. T是struct S类型的变量
解析:本题考查typedef重新声明一种结构体类型。那么T为结构体类型,而不是结构体变量,所以B选项正确。
2.设有语句typedef struct TT{char C;int a[4];} CIN;,则下列叙述中正确的是( )。(D)
A. CIN是struct TT类型的变量
B. TT是struct类型的变量
C. 可以用TT定义结构体变量
D. 可以用CIN定义结构体变量
解析:本题考查typedef重新声明一种结构体类型。其中CIN为结构体类型名,而不是结构体变量,所以D选项正确。
3.下列叙述中错误的是( )。(B)
A. 可以用typedef将已存在的类型用一个新的名字来代表
B. 可以通过typedef增加新的类型
C. 用typedef定义新的类型名后,原有类型名仍有效
D. 用typedef可以为各种类型起别名,但不能为变量起别名
解析:本题考查typedef的用法。typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以B选项错误。
4.有以下程序:
#include<stdio.h>
main()
{
struct STU
{
char name[9];
char sex;
double score[2];
};
struct STU a={’’Zhao’’,’m’,85.0,90.0},b={’’Qian’’,’f’,95.0,92.0};
b=a;
pfinff(’’%s,%C,%2.of,%2.of\n’’,b.name,b.sex,b.score[0],b.score[1]);
}
程序的运行结果是( )。(B)
A. Qian,m,85,90
B. Zhao,m,85,90
C. Zhao,f,95,92
D. Qian,f,95,92
解析:本题考查结构体初始化操作。本题中可以直接将结构体a赋值给b,所以输出的结果和a一样,B选项正确。
5.下列结构体类型说明和变量定义中正确的是( )。
B
解析:本题考查结构体的相关知识。选项A中struct REC后面不能有分号,C选项中typedefstruct REC的后面也不能有分号,选项D中REC已经是结构体变量,不能当作结构体类型来使用。
6.下列结构体的定义语句中错误的是( )。
A
解析:A选项错误,不能在定义结构体的同时,又用结构体类型名定义变量,应该写成B选项或者D选项的格式。
7.设有定义:
struct complex
{ int real,unreal;
}
datal={1,8},data2;
则下列赋值语句中错误的是( )。(A)
A. data2=(2,6);
B. data2=datal;
C. data2.real:datal.real;
D. data2.real=datal.ililrea];
解析:A选项中可以在声明变量的同时为data2赋值,但是data2=(2,6);应写作data2={2,6};,所以选择A选项。
8.有以下程序:
struct st{int x;int*y;}*pt;
int a[]={1,2},b[]={3,4};
struct st c[2]={10,a,20,b};
pt=c:
以下选项中表达式值为11的是( )。(A)
A. ++pt->X
B. pt->x
C. *pt->y
D. (pt++)->X
解析:本题考查结构体数组初始化以及结构体变量的引用。题目中定义了一个结构体数组c并初始化,指针pt指向c的第一个元素,那么pt->x为10,++pt->x为11,*pt->y为1,(pt++)->x为20,所以选择A选项。
9.有以下定义和语句:
struct workers
{
int num;
char name[20];char c;
struct
{
int day;
int month;
int year;
}
s:
};
struct workers w,*pw;
pw=&w;
能给w中year成员赋1980的语句是( )。(C)
A. pw->year=1980;
B. w.year=1980;
C. w.s.year=1980;
D. *pw.year=1980;
解析:本题考查结构体变量的引用。题目中定义了一个结构体,其中结构体中的变量又是一个结构体,w为外层结构体,如果给内层结构体赋值,先要得到内层结构体变量,即w.s,若要给year赋值,表示为w.s.year即可,选项C正确。
10.有以下程序:
#include<stdio.h>
struct tt{int x;struct tt*y;}*p;
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};
main()
{
int i;
p=a:
for(i=1;i<=2;i++)
{
printf(’’%d,’’,p->x);
p=p->y:
}
}
程序的运行结果是( )。(D)
A. 20,30,
B. 30,17
C. 15,30,
D. 20,15,
解析:本题考查结构体变量的引用以及结构体数组。p指向a数组的第一个元素,所以p->x为20,然后p=p->y后,p指向数组a的第二个元素,所以输出15,选项D正确。
11.设有定义:struct{char mark[12];int numl;double num2;}t1,t2;,若变量均已正确赋初值,则下列语句中错误的是( )。(C)
A. t1=t2;
B. t2.numl=t1.num1;
C. t2.mark=t1.mark;
D. t2.num2=t1.num2;
解析:本题考查结构体变量的引用。C选项中ma
本文档预览:3600字符,共10122字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载