C程序设计第9章选择题作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 20901、设有以下说明语句:C
struct Stu
{ int a;
float b;
}stutype;
则下面的叙述不正确的是。
A) struct是结构体类型的关键字
B) struct Stu是用户定义的结构体类型
C) stutype是用户定义的结构体类型名
D) a和b都是结构体成员名
2. 20902、根据下面的定义,能打印出字母M的语句是。
D
struct Person
{ char name[9];
int age;
};
struct Person class[10]={ "John", 17,"Paul", 19,"Mary",18,"adam",16};
A) printf("%c\n",class[3]. name);
B) printf("%c\n",class [3]. name[l]);
C) printf ("% c\n",class [2]. name [1]);
D) printf("%c\n",class [2]. name[0]);
3. 20903、若有以下说明和语句:A
struct Student
{ int num;
int age;
}stu,*p;
p=&stu;
则以下对结构体变量stu中成员age的引用方式不正确的是。
A) *p.age B) p->age C) (*p).age D) stu.age
4. 20904、若有以下程序段:
struct Student
{ int num;
int age;
};
struct Student stu[3]={{101,20},{102,19},{103,20}};
void main ()
{ struct Student * p;
p=stu;
…
}
则以下引用形式不合法的是。
D
A) (p++)->num B) p++ C)(*p). num D) p=&stu. age
5. 20916、设有如下定义:C
struck Sk
{ int a;
float b;
} data;
int *p;
若要使p指向data中的a域,正确的赋值语句是。
A)p=&a; B)p=data.a; C)p=&data.a; D)*p=data.a
6. 20906、有以下定义和语句,则值为6的表达式是。
D
struct S
{ int i1;
struct S * i2;
};
static struct S a[3]={5,&a[1],7,&a[2],9,' \0' },*ptr;
ptr=&a[0];
A) ptr-> i1++ B) ptr++->i1 C)*ptr->i1 D) ++ptr->i1
7. 20907、下面对typedef的叙述中不正确的是。
B
A)用typedef可以定义各种类型名,但不能用来定义变量
B)用typedef可以增加新类型
C)用typedef只是将已存在的类型用一个新的标识符来代表
D)使用typedef有利于程序的通用和移植
8. 20908、当说明一个共用体变量时系统分配给它的内存是。
C
A)各成员所需内存量的总和B)结构中第一个成员所需内存量C)成员中占内存量最大者所需的容量D)结构中最后一个成员所需内存量
9. 20909、C语言共用体类型变量在程序运行期间。
B
A)所有成员一直驻留在内存中B)只有一个成员驻留在内存中C)部分成员驻留在内存中D)没有成员驻留在内存中
10. 20910、在16位IBM-PC机上使用C语言,若有如下定义:D
struct Data
{ int i;
char ch;
double f;
}b;
则结构变量b占用内存的字节数是。
A) 1 B) 2 C) 8 D) 11
11. 20911、设有如下说明:A
typedef struct
char c;
double x;
}STD;
则以下选项中,能正确定义结构体数组并赋初值的语句是。
A) STD tt[2]={{1,'A',62},{2,'B',75}};
B) STD tt[2]={1,"A",62,2,"",75};
C) struct tt[2]={{1,'A'},{2,'B'}};
D) struct tt[2]={{1,"A",62.5},{2,"B",75.0}};
12. 20912、若有以下程序段:B
struct Dent
{ int n;
int *m;
};
int a=1,b=2,c=3;
struct Dent s[3] = { {101,&a},{102,&b},{103,&c} };
struct Dent *p=s;
则以下表达式中值为2的是。
A) *(p++)->m B) *(++p)->m C) (*p).m D) (p++)->m
13. 20913、若已建立下面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指的结点插入到链表末尾的一组语句是。
C
A) q->next=NULL;p=p->next;p->next=q;
B) p=p->next;q->next =p->next;p->next =q;
C) p=p->next;q->next =p;p->next =q;
D) p=(*p). next;(*q). next=(*p). next;(*p). next= q;
14. 20914、若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则空格中应填入的内容是。
D
int *p;
p= malloc(sizeof ( int));
A) int B) int * C)(* int ) D) (int *)
15. 20915、对于如下定义的枚举型:B
enum List1{ x1,x2,x3,x4=6,x5,x6 };
枚举常数x2和x6的值分别是。
A)1,6 B)1,8 C)2,6 D)2,8
16. 20905、设有如下定义:C
struct Sk
{ int n;
float x;
若要使p指向data中的n域,正确的赋值语句是。
A) p=&data.n; B)*p=data.n;
C)p=(struct Sk*)&data.n; D)p=(struct Sk*)data.n;
17. 20917、下面程序的运行结果是。
D
#include <stdio.h>
void main()
{
struct Cmplx{ int x;
int y;
}cnum[2]={1,3,2,7};
printf("%d\n",cnum[0]. y/cnum[0]. x*cnum[1]. x);
}
A) 0 B) 1 C) 3 D) 6
18. 20918、以下scanf函数调用语句中对结构体变量成员的不正确引用是。
D
struct Pupil
{ char name[20];
int age;
int sex;
} pup[5],*p;
p=pup;
A) scanf (" %s", pup [0]. name);
B) scanf ("%d",&pup[0].age);
C) scanf("%d",&(p->sex));
D) scanf ("%d", p->age);
19. 20919、已知学生记录描述为:D
struct Student
{ int no;
char name[20];
char sex;l
struct
{ int year;
int month;
int day;
}birth;
};
struct Student s;
设变量s中的”生日”应是,”1984年11月11日”,下列对”生日”的正确赋值方式是。
A) year=1984; B) birth. year= 1984;
month=11; birth. month=11;
day=11; birth. day =11;
C) s. year=1984; D) s. birth. year= 1984;
s. month=11; s. birth. month= 11;
s. day=11; s. birth. day= 11;
20. 20920、若要说明一个类型名STP,使得定义语句STP s;等价于char *s;,以下选项中正确的是。
D
A) typedef STP char *s; B) typedef *char STP;
C) typedef STP *char; D) typedef char* STP;。