国家二级C语言(结构体和共用体、文件)机试模拟试卷1
选择题
1.若有语句typedef struet S{int g;char h;}T;,则下列叙述中正确的是( )。(B)
A. 可用S定义结构体变量
B. 可用T定义结构体变量
C. S是struct类型的变量
D. T是struet S类型的变量
解析:本题考查typedef重新声明一种结构体类型。那么T为结构体类型,而不是结构体变量,所以B选项正确。
2.设有语句typedef struet Tr{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
main()
{
struet STU
{
char name[9];
char sex:
double score[2];
};
struct STU a={“Zhao”,’m’,85.0,90.0},b={\\(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选项中typedef struct 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.unreal;
解析:A选项中可以在声明变量的同时为data2赋值,但是data2=(2,6);应写作data2={2,6};,所以选择A选项。
8.有以下程序:
#include
{ int a;
char b[10];
double c;
};
stmct A f(stmct A t);
main()
{ stmct A a={1001,“ZhangDa”,1098.0};
a=f(a);
prinff(“%d,%s,%6.1f\n”,a.a,a.b,a.e);
}
struct A f(stmct A t)
{t.a=1002;
strcpy(t.b,“ChangRong”);
t.c=1202.0;return t;
}
程序的运行结果是( )。(B)
A. 1002,ZhangDa,1202.0
B. 1002,ChangRong,1202.0
C. 1001,ChangRong,1098.0
D. 1001,ZhangDa,1098.0
解析:本题考查结构体变量的引用以及作为函数参数。题目虽然看似复杂,其实比较容易。f函数的参数是结构体变量,然后对参数重新赋值并返回,所以选择B选项。
9.有以下程序:
struct st{int x;int*y;}*pt;
int a[]={1,2},b[]={3,4};
struct st e12]={10,a,20,b};
以下选项中表达式值为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选项。
10.有以下定义和语句:
{
int Rum;
char name[20];char c;
struct
{
int day;
int month;
int year;
}
s;
};
stmct 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正确。
11.有以下程序:
#include
struct tt{int x;struct *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++)
{
prinff(“%d,”,P一>
本文档预览:3600字符,共10441字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载