国家二级C语言机试(选择题)模拟试卷573
公共基础选择题
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选项错误。故本题答案为B选项。
4.有以下程序:
#include
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;
printf("%s,%c,%2.0f,%2.0f\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
解析:本题考查结构体初始化。在main函数中将结构体变量a赋值给变量b。输出结构体变量b的值为Zhao,m,85,90。故本题答案为B选项。
5.下列结构体类型说明和变量定义中正确的是( )。
B
解析:本题考查结构体的相关知识。选项A中“struct REC”后面不能有分号。C选项中“typedef struct REC”的后面也不能有分号。选项D中“REC”是结构体变量,不能当作结构体类型来使用。故本题答案为B选项。
6.下列结构体的定义语句中错误的是( )。
A
解析:A选项错误,在定义结构体语句后少了分号。故本题答案为A选项。
7.设有定义:
struct 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};”。故本题答案为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的第1个元素。则“++pt->x”为11,“pt->x”为10,“*pt->y”为1,“(pt++)->x”为20。故本题答案为A选项。
9.有以下定义和语句:
{
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为结构体workers的变量。如果给内层结构体成员赋值,先要得到内层结构体变量,即“w.s”。若要给year赋值,表示为“w.s.year”即可。故本题答案为C选项。
10.有以下程序:
#include
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的第1个元素,所以“p->x”为20。执行“p=p->y”后,p指向数组a的第2个元素,所以输出15。故本题答案为D选项。
11.设有定义“struct{char mark[12];int num1;double num2;}t1,t2;”,若变量均已正确赋初值,则下列语
本文档预览:3600字符,共10336字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载