信息学奥赛辅导——C语言复习题
C语言程序设计第9章、第10 章练习题
一、选择题
219、已知学生记录描述如下,下面对结构体成员"computer"的赋值方式正确的是_______ struct  student
{  int  num;
char  name[8];
struct
{  float  math;
float  engl;
float  computer;
} mark;
} std;
A、studentputer=84;
B、markputer=84;
C、std.markputer=84;
D、stdputer=84;
220、当定义一个结构体变量时系统分配给它的内存是________
A、结构中第一个成员所需的内存量
B、结构中最后一个成员所需的内存量
C、结构体成员中占内存量最大者所需的容量
D、结构体中各成员所需内存量的总和
221、以下对结构体类型变量rcard的定义中不正确的是________
A、#define REC struct card
REC {  int  id;
float  sala;} rcard;
B、struct  card
{  int  id;
floar  sala;};
card  rcard;
C、struct  card
{  int  id;float  sala;};
struct card  rcard;
D、struct
{  int  id;float  sala;} rcard;
222、设有以下说明语句,则下面的叙述不正确的是________
struct  abc
{  int  m;float  n;} stype;
A、struct是结构体类型的关键字
B、abc是用户定义的结构体类型名
C、m和n都是结构体成员名
D、stype是用户定义的结构体变量名
223、以下程序中编译和运行结果均正确的一个是________ A、main()
{  union
{  int  n;
float  x;
} comm={1};
printf("%d",comm.n);
}
B、main()
{  union
{ int  n;
float  x;} comm={12.5};
printf("%f",comm.x);
}
C、main()
{  union
{ float  x;
int  n;} comm=12.5;
printf("%f",comm.x);
}
D、main()
{  union
{ int  n;
float  x;} comm=5;
printf("%d",comm.n);
}
224、以下程序的运行结果是________
# include  "stdio.h"
main()
{  struct  date
{  int  y,m,d;} today;
printf("%d\n", sizeof(struct date));
}
A、2
B、3
C、6
D、出错
225、根据下面的定义,能输出字符串"Li"的语句是________ struct  person
{  char  name[10];
int  age;
} class[10]={"Zhang",18,
"Li", 17,
"Ma", 18,
"Huang", 18
};
A、printf("%s\n",class[2].name);
B、printf("%s\n",class[2].name[0]);
C、printf("%s\n",class[1].name);
D、printf("%s\n",class[1].name[0]);
226、下面程序的运行结果是________
main()
{ struct cmplx {  int  x;
int  y;
} cm[2]={1,2,3,4};
printf("%d\n", 2*cm[0].x+
cm[1].y/cm[0].y);
}
A、5
B、2
C、3
D、4
227、若有以下定义和语句,则以下对结构体成员的引用不正确的是________
struct  student
{  int  num;int  age;};
struct student stu[3]={{1001,20},
{1002,19},
{1003,20}};
main()
{  struct  student  *p;
p=stu;
enum c++…
}
A、(p++)->num
B、p++->age
C、(*p).num
D、p=&stu.age
228、若有如下定义,则下面在scanf函数调用语句中对结构体成员的引用不正确的是________
struct  pupil
{  char  name[20];
int  age;
int  sex;
} pup[5],*p;
A、scanf("%d",p->age);
B、scanf("%s",pup[0].name);
C、scanf("%d",&pup[0].age);
D、scanf("%d",&(p->sex));
229、设有以下定义和语句,则以下表达式值为6的是________
struct  ss
{  int  a;struct  ss  *b;};
static struct ss x[3]={5,&x[1],
7,&x[2],
9,'\0'},*ptr;
ptr=&x[0];
A、ptr->a++
B、ptr++->a
C、ptr->a
D、++ptr->a
230、设有如下定义,若要使px指向rec中的x域,正确的赋值语句是________
struct  aa
{  int  x;float  y;} rec,*px;
A、*px=rec.x;
B、px=&rec.x
C、px=(struct aa *)rec.x
D、px=(struct aa *)&rec.x;
231、若有以下说明和语句,则对结构体变量std中成员id的引用方式不正确的是_______ struct  work
{  int  id;
int  name;
} std,*p;
p=&str;
A、std.id
B、*p.id
C、(*p).id
D、p->id
232、若有以下程序段,则下面表达式中值为20的是________
struct  com
{  int  a;int  *b;};
int  x=10,y=20,z=30;
struct  com  s[3]={{1010,&x},
{1020,&y},
{1030,&z}};
main(  )
{  struct  com  *p;
p=s;
}
A、(p++)->b
B、*(p++)->b
C、(*p).b
D、*(++p)->b
233、若有以下说明和语句,则对ttd中lab域的正确引用方式是________
struct  example
{  char  lab;
int  num;
} ttd,*p;
p=&ttd;
A、(*p).lab
B、p->ttd.lab
C、(*p).ttd.lab
D、p.ttd.lab
234、以下程序的输出结果是________
struct  s
{  int  n;int  *m;} *p;
int  d[3]={10,20,30};
struct  s  arr[3]={100,&d[0],
200,&d[1],
300,&d[2]};
main(  )
{  p=arr;
printf("%d,",++p->n);
printf("%d,",(++p)->n);
printf("%d\n",++(p->m));
}
A、101,200,21
B、101,20,30
C、200,101,21
D、100,101,10
235、若要使指针变量p指向一个动态开辟的字符型存储单元,则①中应选择填入的是________
char  *p;
p=  ①malloc(sizeof(char));
A、char
B、char  *
C、(*char)
D、(char  *)
236、当说明一个共用体变量时系统分配给它的内存是________
A、共用体中第一个成员所需内存量
B、共用体中最后一个成员所需内存量
C、共用体成员中占内存量最大者所需的容量
D、共用体中各成员所需内存量的总和
237、以下对C语言中共用体类型数据的叙述正确的是________
A、可以对共用体变量名直接赋值
B、一个共用体变量中可以同时存放其所有成员
C、一个共用体变量中不能同时存放其所有成员
D、共用体类型定义中不能出现结构体类型的成员
238、若有以下定义和语句,则下面对共用体变量a的引用正确的是________
union  data
{  int  i;
char  c;
float  f;
} a;
int  n;
A、a=5;
B、a={1,'x',5.0};
C、a.i=10;printf("%d\n",a);
D、n=a{5};
239、设有以下说明,则下面不正确的叙述是________
union  data
{  int  i;
char  c;
float  f;
} aa,bb;
A、aa所占的内存长度等于成员f的长度
B、aa的地址和它的各成员地址都是同一地址

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。