【c语言程序设计】结构体
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章CH9 结构体9.1 选择题
1.若有以下说明语句:
struct student
{ int num;
char name[ ];
float score;
}stu;
则下面的叙述不正确的是: ( D )
A. struct是结构体类型的关键字
B. struct student 是用户定义的结构体类型
C. num, score都是结构体成员名
D. stu是用户定义的结构体类型名
2.若有以下说明语句:
struct date
{ int year;
int month;
int day;
}brithday;
则下面的叙述不正确的是__C___.
A) struct是声明结构体类型时用的关键字
B) struct date 是用户定义的结构体类型名
C) brithday是用户定义的结构体类型名
D) year,day 都是结构体成员名
3.以下对结构变量stul中成员age的非法引用是B
struct student
{ int age;
int num;
}stu1,*p;
p=&stu1;
A) stu1.age B) student.age C) p->age D) (*p).age
4.设有以下说明语句:
typedef struct stu
{ int a;
float b;
} stutype;
则下面叙述中错误的是(D)。
A、struct是结构类型的关键字
B、struct stu是用户定义的结构类型
C、a和b都是结构成员名
D、stutype是用户定义的结构体变量名
5.设有以下定义,值为5的枚举常量是()。
enum week{sun,mon=4,tue,wed,thu,fri,sat} w;
A tue
B sat
C fri
D thu
6.设有如下定义:
struct sk
{int a;float b;}data,*p;
若有p=&data;,则对data中的a域的正确引用是(B)。
A)(*p).data.a B)(*p).a C)p->data.a D)p.data.a
7.根据以下定义,能输出字母M的语句是(D)。
A、printf(“%c\n”,class[3].name)
B、printf(“%c\n”,class[3].name[1]);
C、printf(“%c\n”,class[2].name[1])
D、printf(“%c\n”,class[2].name[0]);
struct person{char name[9];int age;};
struct person class[10]={“John”,17,”Paul”,19,”Mary”,18,”Adam”,16,};
8.以下程序的输出结果是(D)。
A、0
B、1
C、3
D、6
#include
void main()
{
struct emplx{int x;int y;}enum[2]={1,3,2,7};
printf(“%d\n”,enum[0].y/enum[0].x*enum[1].x);
}
9.若有以下说明及语句,则值为6的表达式是(D)。
A、p++->n
B、p->n++
C、(*p).n++
D、++p->n
struct st{int n;struct st *next;};
struct st a[3],*p;
a[0].n=5;a[0].next=&a[1];a[1].n=7;a[1].next=&a[2];
a[2].n=9;a[2].next=’\0’;p=&a[0];
10.已知字符0的ASCII码的十进制的值是48,且数组的第0个元素在低位,以下程序的输出结果是(B)。
A、39
B、9
C、38
D、8
void main()
{
union{int i[2];long k;char c[4];}r,*s=&r;
s->i[0]=0x39;s->i[1]=0x38;
printf(“%x\n”,s->c[0]);
}
11.以下程序输出的结果是(C)。
A、32
B、16
C、8
D、24 typedef union{long x[2];int y[4];char z[8];}MYTYPE;
MYTYPE them;
void main()
{
printf(“%d\n”,sizeof(them));
}
12.设有以下语句
typedef struct S
{ int g; char h;} T;
则下面叙述中正确的是(B)。
A) 可用S定义结构体变量
B)可以用T定义结构体变量
C)S是struct类型的变量
D)T是struct S类型的变量
13.有以下说明和定义语句
struct student
{ int age; char num[8];};
struct student stu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}}; struct student *p=stu;
以下选项中引用结构体变量成员的表达式错误的是(D)。
A) (p++)->num B) p->num
C) (*p).num D) stu[3].age
9.2 读程序
1.有如下程序
#include
struct st
{ int x;
int y;
} a[2]={5, 7, 2, 9} ;
main()
{
printf("%d\n",a[0].y*a [1].x);