国家二级C语言(结构体和共用体、文件)机试模拟试卷3
选择题
1.若有语句typedef struet S{int g;char h;}T;,则下列叙述中正确的是( )。(B)
A. 可用S定义结构体变量
B. 可用T定义结构体变量
C. S是struet类型的变量
D. T是struet S类型的变量
解析:本题考查typedef重新声明一种结构体类型。那么T为结构体类型,而不是结构体变量,所以B选项正确。
2.设有语句typedef struet TT{char c;int a[4];}CIN;,则下列叙述中正确的是( )。(D)
A. CIN是struet TT类型的变量
B. TT是struet类型的变量
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( )
{
struet STU
{
char name[9];
char sex;
double score[2];
};
struet STU a={\\(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.设有定义:
struet complex
{int real,unreal;
}
data1={1,8},data2;
则下列赋值语句中错误的是( )。(A)
A. data2=(2,6);
B. data2=data1;
C. data2.real=data1.real;
D. data2.real=data1.unreal;
解析:A选项中可以在声明变量的同时为data2赋值,但是data2=(2,6);应写作data2={2,6};,所以选择A选项。
8.有以下程序:
struet st{int x;int*y;}*pt;
int a[]={1,2},b[]={3,4};
struet 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.有以下定义和语句:
struet workers
{
int num;
char name[20];char c;
struet
{
int day;
int month;
int year;
}
s;
};
struet 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>
struet tt{int x;struet*y;}*p;
struet 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)
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.设有定义:struet{char mark[12];int num1;double num2;}t1,t2;,若变量均已正确赋初值,则下列语句中错误的是( )。(C)
A. t1=t2;
B. t2.num1=t1.num1;
C. t2.mark=t1.mark;
D. t2.num2=t1.num2;
解析:本题考查结构体变量的引用。C选项中mark为结构体中的数组,不能直接赋值,所以C选项错误。
12.有以下程序:
#include<stdio.h>
struet S
{int a,b;
}
data[2]={10,100,20,200};
main( )
{struet S
p=data[1];
prinff(\\(D)
A. 10
B. 11
C. 20
D. 21
解析:声明data是结构s数组,初始化data[0].a=10;data[0].b=100;data[1].a=20;data[1].b=200。主函数中p=data[1];即p.a=data[1].a;p.b=data[1].b;,执行语句printf(\\
13.有以下结
本文档预览:3600字符,共8049字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载