结构体与共用体相关题目练习
第8章练习 结构体与共用体
第十一章习题结构体与共用体1.以下C语言共用体类型数据的描述中,不正确的是( )A) 共用体变量占的内存大小等于所需内存最大的成员所占的内存B) 共用体类型可以出现在结构体类型定义中C) 在定义共用体变量的同时允许对第一个成员的值进行初始化D) 同一共用体中各成员的首地址不相同2.下列对结构体类型变量定义不正确的是( )A)struct teacher B) struct{ int num; { int num;int age; }teach1; int age; }teach1,teach2;C) struct D) struct teacher{ int num; { int num;int age; }teacher; int age; };struct teacher teach1; struct teacher teach1;3.若有定义:struct teacher{ int num;char name[10];char sex;int age;float score;}teacher1;则变量teacher1所占用的内存字节数是( )A) 5 B)14 C) 19 D) 204.以下程序的运行结果是( )#include <stdio.h>union Utype{ int i; float y; }u[2];void main(){ printf("sizeof(u):%d\n",sizeof(u)); }A)2 B) 4 C) 6 D) 85.设有以下定义语句:struct student{ int num; char name[10]; float score; }wang,zhang;则变量wang所占的内存字节数是( )A) 14 B) 16 C)18 D) 206.设有如下定义语句:union u_type{ int i; double x; float f; };struct str_type{ char str[100]; union u_type u[2]; };则语句“printf("%d",sizeof(struct str_type));”的输出结果是( )A)100 B) 116 C) 120 D) 200第 1 页共2 页7.下面程序的输出结果为( )#include <stdio.h>void main (){ enum Weekday {sun=7, mon=1, tue, wed, thu, fri, sat};enum Weekday day=sat;printf (“%d\n”, day); }A) 7 B) 6 C) 5 D) 48.对枚举类型进行定义,不正确的是( )A) enum b{1,2,3}; B)enum a{A,B,C}; C)enum c{D=3,E,F}; D) enum d{X=0,Y=5,Z=9};9.假定已有如下变量说明和枚举定义:char ch;int j, k;enum day{sun, mon, tue, wed, thu, fri, sat};int a[sat];判断下列语句是否符合语法规则,结果是( )char a; /*语句1*/j+k=j; /*语句2*/if(a[mon]>0) j++; /*语句3*/A)语句2错误,其他正确 B)语句1正确,其他错误C)语句3正确,其他错误 D) 语句1错误,其他正确10.若有以下说明和定义typedef int *INTEGERINTEGER p,*q;以下叙述正确的是( )A) p是int型变量B) p是基类型为int的指针变量C) q是基类型为int的指针变量D) 程序中可用INTEGER代替int类型名11.设有如下定义:typedef int *INTEGER;INTEGER p,*q;则( )是正确的叙述A)p是int型变量 B)q是基类型为int的指针变量C)p是基类型为int的指针变量 D) 程序中可用INTERGER代替int类型名12.若有以下类型说明,叙述正确的是( )typedef struct{ int num;char *name;int score;}STU, *PSTU;A) STU 是变量名 B) PSTU是变量名C) PSTU是指向结构体类型的STU的指针类型名 D) 类型说明语句有错误第 2 页共2 页。
结构体、共用体
结构体,公用体一、选择题:(20题)1.本题序号:552当说明一个结构体变量时系统分配给它的内存是A 各成员所需内存量的总和;B 结构体中第一个成员所需的内存量;C 成员中内存量最大者所需的容量;D 结构体中最后一个成员所需的内存量;参考答案 A2.本题序号:554当说明一个共用体变量时系统分配给它的内存是A 各成员所需内存量的总和;B 第一个成员所需的内存量;C 成员中内存量最大者所需的容量;D 最后一个成员所需的内存量;参考答案 C3.本题序号:555下面对共用体类型的叙述描述正确的是A 可以对共用体变量名直接赋值;B 一个共用体变量中可以同时存放其所有成员;C 一个共用体变量中不可以同时存放其所有成员;D 共用体类型定义中不能出现结构体类型的成员;参考答案 B4.本题序号:639设有以下说明语句typedef struct{ int n;char ch[8];}PER;则下面叙述中正确的是A PER 是结构体变量名B PER是结构体类型名C typedef struct 是结构体类型D struct 是结构体类型名参考答案B5.本题序号:748设有如下说明typedef struct ST{long a;int b;char c[2];} NEW;则下面叙述中正确的是()。
A 以上的说明形式非法B ST是一个结构体类型C NEW是一个结构体类型D NEW是一个结构体变量参考答案 C6.本题序号:756以下对结构体类型变量td的定义中,错误的是A typedef struct aa{int n;float m;}AA;AA td;B struct aa{int n;float m;} ;struct aa td;C struct{int n;float m;}aa;struct aa td;D struct{int n;float m;}td;参考答案C7.本题序号:774有以下程序段typedef struct NODE{ int num; struct NODE *next;} OLD;述中正确的是()。
结构体和共用体习题
习题六1、从下列四个选项中选择一个正确得填入括号中。
(1)在说明一个结构体变量时系统分配给它得存储空间就是( D)。
A该结构体中第一个成员所需存储空间B该结构体中最后一个成员所需存储空间C该结构体中占用最大存储空间得成员所需存储空间D该结构体中所有成员所需存储空间得总与(2)在说明一个共用体变量时系统分配给它得存储空间就是(D )。
A该共用体中第一个成员所需存储空间B该共用体中最后一个成员所需存储空间C该共用体中占用最大存储空间得成员所需存储空间D该共用体中所有成员所需存储空间得总与(3)共用体类型在任何给定时刻, ( B)。
A所有成员一直驻留在内存中B只有一个成员驻留在内存中C部分成员驻留在内存中D没有成员驻留在内存中(4)以下定义结构体类型得变量st1,其中不正确得就是(A )A typedef stuct student{int num;int age;}STD;STD st1;B struct student{int num,age;}st1;C struct{int num;float age;}st1;D struct student{int num;int age;};struct student st1;(5)已知职工记录描述为:struct workers{int no;char name[20];char sex;struct{int day;int month;int year;}birth;};struct workers w;设变量w中得”生日”应就是”1993年10月25日”,下列对”生日”得正确赋值方式就是( C)。
A day=25; month=10; year=1993;B w、day=25w、month=10; w、year=1993;C w、birth、day=25; w、birth、month=10; w、birth、year=1993;D birth、day=25; birth、month=10; birth、year=1993;(6)设有如下定义:struct sk{int a;float b;}data,*p;若有p=&data;则对data中得a成员得正确引用就是( B)。
C语言(结构体与共用体)习题与答案
{ for ( ; *s==*t; s++, t++ )
if (!*s) return 0 ;
return (*t-*s) ;
}
B.int strcmp2(char *s,char *t)
{ for ( ; *s++=*t++; )
if (!*s) return 0 ;
1、指针的含义是()。
A.名
B.一个标志
C.地址
D.值
正确答案:C
2、若已定义a为int型变量,则下面的语句中正确的是()。
A.int *p=*a;
B.int *p=&a;
C.int *p=a;
D.int p=&a;
正确答案:B
3、若有定义:int x,*p;则以下正确的赋值表达式是()。
A.*p=&x
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%4d,%4d,%4d\n",a,b,c);
}
A.5,-2,-7
B.5,2,3
C.-5,-12,7
D.-5,-12,-7
正确答案:D
11、以下程序运行的结果是()。
#include<stdio.h>
void main()
D.char *s="china";等价于char *s; s="china" ;
正确答案:D
15、函数strcmp(char *s,char *t)功能是()。
第十章结构体与共用体
试题汇编之:结构体与共用体一.选择题1.共用体定义为“union data{char ch;int x;}a;”下列语句正确的是。
A:a.ch=‟x‟;a=10; B:a a=‟x‟,10;C:a.x=10;a.ch=‟x‟; D:a=‟x‟;2.共用体定义为“union data{char ch;int x;}a;”下列语句不正确的是。
A:a={…x‟,10}; B:a.x=10;a.x++;C:a.ch=‟x‟;a.ch++; D:a.x=10;a.ch=‟x‟;3.对于:struct node{double x;char c;}*p;下列哪个赋值是错的。
A:p->x=2B:p.x=2.0 C.p->c=2 D.(*p).c=‟a‟4.对于以下结构定义:struct{int len;char *str;}*p;(*p)->str++中的++加在。
A:指针str上B:指针p上. C.str所指的内容上 D:表达式语法有错5.对如下定义:struct{char a1;int a2;}xx; union{char a1;int a2;int a3;}yy;如果sizeof(xx)的值为3,则sizeof(yy)的值应为:A:2 B:4 C:5 D:定义有错6.以下结构体变量定义语句中错误的是。
A.struct staffer{ long int code; float salary;} one;B.struct staffer{ long int code; float salary;} staffer one;C.typedef struct { long int code ; float salary;} STAFFER;D.struct { long int code; float salary; }one;-7.形如上题中定义的结构体变量,下列对此变量的输入形式中正确的是。
C语言 选择题库第10章 结构体与共用体
第10章结构体与共用体1.以下叙述中错误的是()。
A) 可以通过typedef增加新的类型B) 可以用typedef将已存在的类型用一个新的名字来代表C) 用typedef定义新的类型名后,原有类型名仍有效D) 用typedef可以为各种类型起别名,但不能为变量起别名参考答案:A【解析】关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型,所以A)错误。
2.以下关于typedef的叙述错误的是A) 用typedef可以增加新类型B) typedef只是将已存在的类型用一个新的名字来代表C) 用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D) 用typedef为类型说明一个新名,通常可以增加程序的可读性参考答案:A【解析】typedef并不是增加了新类型,而是用一个新名字替代已存在的类型,不能为变量说明一个新名,使用typedef可以增强移植性。
所以A选项错误。
3.若有以下语句typedef struct S{ int g; char h; } T;以下叙述中正确的是A) 可用S定义结构体变量B) 可用T定义结构体变量C) S是struct 类型的变量D) T是struct S类型的变量参考答案:B【解析】本题考查typedef重新声明一种结构体类型,那么T为结构体类型,而不是结构体变量,所以B选项正确。
4.设有以下语句typedef struct TT{ char c; int a[4]; } CIN;则下面叙述中正确的是A) CIN是struct TT类型的变量B) TT是struct类型的变量C) 可以用TT定义结构体变量D) 可以用CIN定义结构体变量参考答案:D【解析】本题考查typedef重新声明一种结构体类型,其中CIN为结构体类型名,而不是结构体变量,所以D 选项正确。
5.以下叙述中错误的是A) 可以用typedef将已存在的类型用一个新的名字来代表B) 可以通过typedef增加新的类型C) 用typedef定义新的类型名后,原有类型名仍有效D) 用typedef可以为各种类型起别名,但不能为变量起别名参考答案:B【解析】本题考查typedef的用法,typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以B选项错误。
十一章 结构体与共用体
结构体与共用体一、选择题:1.已知赋值语句wang.year=2004;则wang的变量类型是()A. 字符或文件B. 整型或实型C. 共用或结构D. 实型或指针2.Turbo C中,以下类型数据在存储器中占的字节数为 ( ) struct test{ int x;float y;char z;} ;A. 2B. 3C. 6D. 73.以下语句中,成员data的正确引用方式为( ) struct node{ int data;char name[10];}stree;struct node *p=&stree;A. p.dataB. p->dataC. (*p)->dataD. stree->data4、当执行以下程序段时,输出的结果是。
()struct data{ char a; int b; float c; };printf(“%d”, sizeof(struct data));A. 1B. 2C. 4D. 75.下面程序段的运行结果是。
struct stu{ int num; char name[10]; float scrose ; };printf(“%d\n”, sizeof (struct stu ));(A)14 (B)12 (C)16 (D)36. 若有定义:typedef char* string;#define str char *int a=4;struct {int x, *y;}z={10, &a}, *p=&z;则下列不等价的是:A. string name, sign; 与 str name, sign;B. *p->y++ 与 *(p->y++)C. ++*p->y 与 ++(*p->y)D. ++p->x与++(p->x) ()二、填空题:1.已知赋值语句zhang.year=1985;可判断zhang是类型的变量;2.若有类型定义:“typedef union{int a; char b; double c;} share;”及声明:“float r;”,则表达式:sizeof(r)+sizeof(share)的值是:。
结构体,共用体,链表相关试题
十.结构体和共用体(1)下列程序中fun()函数的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。
disp()函数的功能是显示输出该单链表中所有结点中的字符串。
请填空完成(06.4)disp()函数。
#includetypedef struct node /*链表结点结构*/{ char sub[3];struct node *next;}Node;Node fun(char s) /*建立链表*/{ …… }void disp(Node *h){ Node *p;p=h− >next;while( 【】){printf("%s\n",P− >sub);p= 【】; }}main( ){ Node *hd;hd=fun( ); disp(hd); printf("\n");}(2)设有以下语句:typedef struct TT{char c,int a[4];}CIN;则下面叙述中正确的是(06.9)。
A)可以用TT定义结构体变量B)TT是struct类型的变量C)可以用CIN定义结构体变量D)CIN是struct TT类型的变量(3)有以下结构体说明、变量定义和赋值语句: struct STD{char name[10];int age;char sex;}s[5],*ps;ps=&s[0];则以下scanf函数调用语句中错误引用结构体变量成员的是(06.9)。
A)scanf(%s",s[0].name); B)scanf(%d",&s[0].age); C)scanf(%c",&(ps->sex)); D)scanf(%d",ps->age);(4) 若有以下定义和语句printf("%d\n",sum);}(7)有下列程序:struct S{int n;int a[20];};void f (struct S *p){int i,j,t;for(i=0;i<p->n-1;i+ +)for(j=i+1;j<p->n;j+ +)if(p->a[i]>p->a[j]){t=p->a[i];p->a[i]=p->a [j];p->a[j]=t;}}main( ){ int i; struct S s={10,{2,3,l,6,8,7,5,4,10,9}};f(&s);for(i=0;i<s.n;i+ +) printf("%d,",s.a[i]);}程序运行后的输出结果是(07.4 )。
结构体与共同体习题
4、若已建立下面的链表结构,指针p,s分别指向图中所示的结点,则不能将所指的结点插入到链表末尾的语句组是( )。
节点总是插入在链表的末尾。链表的头指针作为函数值返回。链表最后一个节点的next域放入NULL,作为链表结束的标志。data为字符型数据域,next为指针域。读入时字符以#表示输入结束(#不存入链表)。请填空。
int y[4];
char z[8];
} MYTYPE;
MYTYPE them;
main()
{ printf("%d\n",sizeof(them));
}
A.32 B.16 C.8 D.24
6.以下函数creatlist用来建立一带头节点的单链表,链表的结构如下图所示,新的
A. s->next=null;p=p->next;p->next=s;
B. p=p->next;s->next=p->next=;p->next=s;
C. p=p->next;s->next=p;p->next=s;
char *aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
D. p=(*p).next;(*s).next=(*p).next;(*p).next=s;
5、下列程序的执行结果为( )。
struct s1
{ char *s;
int i;
struct s1 *sip;
C语言-第9章 结构体与共用体
第9章结构体与共用体一、单项选择题1. 若有以下说明语句:struct student{ int num;char name[ ];float score;}stu;则下面的叙述不正确的是: ( )A) struct是结构体类型的关键字B) struct student 是用户定义的结构体类型C) num, score都是结构体成员名D) stu是用户定义的结构体类型名2. 若有以下说明语句:struct date{ int year;int month;int day;}brithday;则下面的叙述不正确的是_____.A) struct是声明结构体类型时用的关键字B) struct date 是用户定义的结构体类型名C) brithday是用户定义的结构体类型名D) year,day 都是结构体成员名3. 已知:(设整型2字节,字符型1字节,浮点型4字节)struct{ int i;char c;float a;}test;则sizeof(test)的值是。
A) 4 B) 5 C) 6 D) 74. 以下对结构变量stul中成员age的非法引用是。
struct student{ int age;int num;}stu1,*p;p=&stu1;A) stu1.age B) student.age C) p->age D) (*p).age5. 有如下定义struct person{char name[9]; int age;};struct person class[10]={“Tom”,17,“John”,19,“Susan”,18,“Adam”,16,};根据上述定义,能输出字母A的语句是A) printf(“%c\n”,class[3].name); B) printf(“%c\n”,class[3].name[0]);C) print f(“%c\n”,class[3].name[1]); D) printf(“%c\n”,class[2].name[3]);6. 存放100个学生的数据、包括学号、姓名、成绩。
c语言9结构体与共用体
c语言9结构体与共用体九、结构体与共用体(一) 选择题1、C语言结构体类型变量在程序执行期间_________。
A.所有成员一直驻留在内存中B.只有一个成员驻留在内存中C.部分成员驻留在内存中D.没有成员驻留在内存中2、下面程序的运行结果是_________。
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.63、设有如下定义:struct sk{int n;float x;}data ,*p;若要使p指向data中的n域,正确的赋值语句是_________。
A.p=&data.nB.*p=data.n;C.p=(struct sk *)&data.nD.p=(struct sk *)data.n4、以下对结构体变量stu1中成员age的非法引用是_________。
struct student{int age;int num;}stu1,*p;p=&stu1A.stu1.ageB.student.ageC.p->ageD.(*p).age5、下面对typedef的叙述中不正确的是_________。
A.用typedef可以定义各种类型名,但不能用来定义变量B.用typedef可以增加新类型C.用typedef只是将已存在的类型用一个新的标识符来代表D.使用typedef有利于程序的通用和移植6、以下scanf函数调用语句中对结构体变量成员的不正确引用是_________。
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);7、若有以下说明和定义union dt{int a;char b;double c;}data;以下叙述中错误的是_________。
C语言第七章选择题
C 语言选择) 8 713.设有如下定义: struct st {int a; float b;} st1, *pst; 若有 pst=&st1;,则对 st1 中的 a 域的正确引用是 A) (*pst).st1.a B) (*pst).a C) pst->st1.a D) pst.st1.a 714.若有以下定义: struct stru {int a; long b; char c[6];} sampl; 则以下赋值正确的是 A) sampl.c= "abcd"; B) strcpy(sampl.c, "abcd"); C) sampl->c= "abcd"; D) 以上均不正确 715.以下程序的输出结果是 main() {struct stru{int a; long b; char c[6]; }; printf("%d\n", sizeof(struct stru)); } A) 2 B) 4 C) 6 D) 12 716.以下程序的输出结果是 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); }
C 语言选择题库
汕头大学许创编辑
结点插入到链表末尾的语句组是 data next data next ┌──┬───┐ ┌──┬───┐ head│ E │ +→│ F │ NULL│ └──┴───┘ └──┴───┘ ↑p A) s->next=NULL; p=p->next; p->next=s; B) p=p->next; s->next=p->next; p->next=s; C) p=p->next; s->next=p; p->next=s; D) p=(*p).next; (*s).next=(*p).next; (*p).next=s; 723.以下程序的输出结果是 #include int a[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}, *p; main( ) {p=(int*)malloc(sizeof(int)); f(p, a); printf("%d\n", *p); } f(int *s, int p[ ][3]) {*s=p[1][1];} A) 1 B) 4 C) 7 D) 5
第8单元 结构体与共用体
第8单元结构体与共用体一、单项选择题1. 在C语言中,当定义一个结构体类型,并用其定义某变量后,系统分配给该变量的内存大小是。
A. 各成员所需要内存空间的总和B. 第一个成员所占内存空间C. 成员中所有成员空间最大者D. 成员中所有成员空间最小者2. 以下对结构体变量成员引用非法的是。
struct student{ int age; int num; }stu1,*p;A. stu1.numB. student.ageC. p->numD.(*p).age;3.下面程序的运行结果是。
main(){ struct abcd{ int m ;int n ; }cm[2]={1,2,3,7 };printf(“%d\n”,cm[0].n/cm[0].m*cm[1].m); }A. 0B. 1C. 3D. 64. 若要利用下面的程序段对指针变量p指向一个存储整型变量的存储单元,则下面正确的选项是。
int *p ; p= malloc(sizeof(int));A. intB. int *C. (* int)D. (int *)5.若有下面的定义和语句,执行完后正确的语句是。
union data{ int i; char c ; float f ; } a ;int n;A. a=5B. a={2,‘a’,1.2 }C. printf(“%d”,a);D. n=a;6.在C语言中,若有如下的定义,则共用体变量m所占内存的字节是。
union student{ int a ; char b ; float c; } m ;A.1B. 2C. 8D. 117.在C语言中,若有如下的定义,当进行如下赋值后,m的结果是。
union student{ int a ; char b ; float c; } m ;m.a=3; m.b=‘z’; m.c=3.7A. 3B. ‘z’C. 3.7D. 3+‘z’+3.78.设有如下定义,若使p1指向dt中的m域,正确的语句是。
C语言结构体共用体选择题(新)
结构体共用体1、变量a所占的内存字节数是________。
(假设整型int为4字节)struct stu{ char name[20];long int n;int score[4];} a ;A) 28 B) 30C) 32 D) 46C2、下列程序的输出结果是A)5 B)6 C)7 D)8struct abc{int a,b,c;};main(){struct abc s[2]={{1,2,3},{4,5,6}};int t;t=s[0].a+s[1].b;printf("%d\n",t);}B3、有如下定义struct person{ char name[9]; int age;};struct person calss[4]={ "Johu",17,"Paul",19,"Mary",18,"Adam",16,};根据以上定义,能输出字母M的语句是________。
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]);D4、以下程序的输出是________。
struct st{int x;int *y;} *p;int dt[4]={10,20,30,40};struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,dt[0],};main(){ p=aa;printf("%d\n",++(p->x));}A) 10 B) 11C) 51 D) 60C6、以下程序的输出结果是________。
结构体与共用体习题
2.下面程序运行结果: #include <stdio.h> struct st { int x;int *y;} *p ; int dt[4]={10,20,30,40}; struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3] }; void main() { p=aa; printf("%d, ", ++p->x); printf("%d, ",(++p)->x); printf("%d\n",++(*p->y)); }
1.下面程序运行结果: #include <stdio.h> struct stu { char num[10]; float score[3]; }; void main() { struct stu s[3]={{“20021”,90,95,85},{“20022”,95,80,75}, {“20023”,100,95,90}},*p=s; int i; float sum=0; p++; for(i=0;i<3;i++) sum=sum+p->score[i]; printf(“%6.2f\n”,sum); }
5.以下程序运行结果: #include <string.h> struct STU { char name[10]; int num;}; void f(char *name,int num) { struct STU s[2]={{"SunDan",20044},{"Penghua",20045}}; num=s[0].num; strcpy(name,s[0].name); } main() { struct STU s[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p; p=&s[1]; f(p->name,p->num); printf(“%s %d\n”,p->name,p->num); }
练习7 结构体与共用体_C语言趣味实验_[共3页]
159 11.下面程序段的运行结果是( )。
char str[ ]= "ABC ",*p=str;printf("%c\n ",*(p+1));A .66B .BC C .字符'B '的地址D .字符'B ' 12.已有定义int k=2, *ptr1,*ptr2;且ptr1和ptr2均已指向同一个变量k ,下面赋值语句执行不正确的是( )。
A .k=*ptr1+*ptr2 ; B .ptr2=k;C .ptr1=ptr2;D .k=*ptr1*(*ptr2);13.有以下程序:#include "stdio.h "void main(){ int x[8]={8,7,6,5,0,0},*s;s=x+3;printf("%d\n",s[2]);} 执行后输出结果是( )A .随机值B . 0C .5D .614.有如下程序段:int *p,a=10,b=1p=&a; a=*p+b; 执行该程序段后,a 的值为( )。
A .12B .11C .10D .编译出错二、编程题1.编写一个程序,计算一个字符串的长度。
2.求二维数组中的最小值及其下标。
3.输入一行文章,找出其中的大写字母、小写字母、空格、数字及其他字符各有多少。
练习7 结构体与共用体一、选择题1.在说明一个结构体变量时,系统分配给它的存储空间是( )。
A .该结构体中第一个成员所需存储空间B .该结构体中最后一个成员所需存储空间C .该结构体中占用最大存储空间的成员所需存储空间D .该结构体中所有成员所需存储空间的总和2.若有以下说明和语句:struct worker{ int no; char ﹡name; }work, ﹡p=&work;则以下引用方式不正确的是( )。
A .work .noB .(﹡p).noC .p->noD .work->no。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结构体与共用体1.说明一个结构体变量时系统分配给它的内存是A)各成员所需要内存量的总和 B)结构体中第一个成员所需内存量C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量2.C语言结构体类型变量在程序执行期间A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中C)部分成员驻留在在内存中 D)没有成员驻留在内存中3.设有以下说明语句struct stu { int a ; float b ; } stutype ;则下面的叙述不正确的是A) struct 是结构体类型的关键字 B) struct stu 是用户定义的结构体类型C) stutype 是用户定义的结构体类型名 D) a和b都是结构体成员名4.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【】。
struct stud { char num[6]; int s[4]; double ave; } a,*p;5.程序中有下面的说明和定义struct abc { int x;char y;}struct abc s1,s2;则会发生的情况是A)编译出错B)程序将顺利编译、连接、执行C)能顺利通过编译、连接、但不能执行 D)能顺利通过编译、但连接出错6.有如下定义struct person { char name[9]; int age;};struct person class[10]={ " Johu", 17,"Paul", 19,"Mary", 18,"Adam", 16};根据上述定义,能输出字母M的语句是A) prinft(" %c\n",class[3].name); B) printf(" %c\n",class[3].name[1]);C) prinft(" %c\n",class[2].name[1]); D) printf(" %c\n",class[2].name[0]);7.下面程序的输出是A)0 B)1 C)3 D)6main(){ struct cmplx { int x; int y;} cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}8.下列程序的输出结果是A)5 B)6 C)7 D)8struct abc { int a, b, c; };main(){ struct abc s[2]={{1,2,3},{4,5,6}};int t;t=s[0].a+s[1].b;printf("%d \n",t);}9.有以下程序struct stu{ int num;char name[10];int age;};void fun(struct stu *p){ printf("%s\n" ,(*p).name); }main(){ struct stu students[3]={{9801,"Zhang",20} ,{9802,"Wang", 19} , {9803,"Zhao",18} };fun(students+2);}输出结果是A)Zhang B)Zhao C)Wang D)1810.设有如下定义:struct sk {int a ;float b ;}data ,*p ;若有p=&data ;,则对data中的a域的正确引用是A)(*p).data.a B)(*p).a C)p->data.a D)p.data.a11.下面程序的输出结果为int dt[4]={10 ,20 ,30 ,40} ;struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3] } ;main(){ p=aa ;printf("%d\n" , ++p->x );printf("%d\n" ,(++p)->x);printf("%d\n" , ++( *p->y));}A)10 B)50 C)51 D)6020 60 60 7020 21 21 3112.为了建立如图所示的存储结构(即每个结点含两个域, data 是数据域,next是指向结点的指针域,)请填空。
;【】}node;13.有以下结构体说明和变量的定义,且如下图所示指针p指向变量a,指针q指向变量b。
则不能把结点b连接到结点a之后的语句是A)a.next=q; B)p.next=&b;C)p->next=&b; D)(*p).next=q;struct node { char data; struct node *next;} a,b,*p=&a,*q=&b;data next data next┌──┬──┐┌──┬──┐a │ 5 ││ b│ 9 │ 0 │└──┴──┘└──┴──┘↑p ↑q14.当说明一个共用体变量时系统分配给它的内存是A)各成员所需要内存量的总和 B)共用体中第一个成员所需内存量C)成员中占内存量最大者所需的容量 D)共用体中最后一个成员所需内存量15.以下对C语言中共用体类型数据的叙述正确的是A)可以对共用体变量名直接赋值 B)一个共用体变量中可以同时存放其所有成员C)一个共用体变量中不可以同时存放其所有成员D)共用体类型定义中不能出现结构体类型的成员16.C语言共用体类型变量在程序运行期间A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中C)部分成员驻留在在内存中 D)没有成员驻留在内存中17.字符'0'的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是#include〈stdio.h〉main(){ union { int i[2];long k; char c[4];}r,*s=&r;s->i[0]=0x39; s->i[1]=0x38;printf("%c\n",s->c[0]) }A)39 B)9C)38D)818.若有以下说明和定义语句,则变量w在内存中所占的字节数是【】。
union aa { float x,y ; char c[6]; };struct st { union aa v;float b[5];double ave;} w;19.设有以下定义:#include “alloc.h”typedef union { long i ;int k[5] ;char c ;}DATE ;struct date{ int cat ;DATE cow ;double dog ;}too ;DATE max ;则下列语句的执行结果是printf("%d",sizeof(struct date)+sizeof(max));A)25 B)30C)18D)820.已知字符0的ASCII码为十六进制的30,下面程序的输出是A)6 B)9 C)0 D)3main(){ union { unsigned char c;unsigned int i[4];}z;z.i[0]=0x39; z.i[1]=0x36;printf("%c\n",z.c);}21.变量a所占内存字节数是A)4 B)5 C)6 D)8union U{ char st[4] ;int i ;long l ;} ;struct A { int c;union U u;} a ;22.以下对枚举类型名的定义中正确的是A) enum a={one ,two ,three} ;B) enum a {one=9 ,two=-1 ,three} ;C) enum a={"one" ,"two" ,"three"} ;D) enum a {"one" ,"two" ,"three"} ;23.设有如下枚举类型定义:enum language { Basic=3 ,Assembly ,Ada=100 ,COBOL ,Fortran} ;枚举量Fortran的值为A)4 B)7 C)102 D)10324.下面程序的输出是A)0 1 2 3B)0 4 0 10 C)0 4 5 15 D)1 4 5 15main(){ enum team { my ,your=4 ,his ,her=his+10};printf("%d%d%d%d\n",my,your,his,her);}25.以下选项中,能定义s为合法的结构体变量的是A)typedef struct abc B)struct{ double a; { double a;char b[10]; char b[10];} s; } s;C)struct ABC D)typedef ABC{ double a ; { double a;char b[10] ; char b[10] ;} ABC s ; } ABC s ;26.下面对的叙述中不正确的是A)用typedef可以定义各种类型名,但不能用来定义变量B)用typedef可以增加新类型C)用typedef只是将已存在的类型用一个新的标识符来代表D)使用typedef有利于程序的通用和移植27.下面程序的输出是A)32B)16 C)8 D)24typedef union { long x[2];int y[4];char z[8];}MYTYPE;MYTYPE them;main(){ printf("%d\n",sizeof(them));}28. 以下各选项企图说明一种新的类型名,其中正确的是A) typedef v1 int; B) typedef v2=int;C) typedefv1 int v3; D) typedef v4: int;29. 以下程序的输出结果是struct HAR{ int x, y; struct HAR *p;} h[2];main(){ h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf(“%d %d \n”,(h[0],p)->x,(h[1],p)->y);}A) 12 B) 23 C) 14 D) 3230. 若有下面的说明和定义:struct test{ int ml; char m2; float m3;union uu {char ul[5]; int u2[2];} ua;}myaa;则sizeof(struct test )的值是A) 12 B) 16 C) 14 D) 931. 若以下定义:struct link{ int data;struck link *next;}a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:a bdata next data next┌──┬──┐┌──┬──┐│ 5 │┼──→│ 9 │ \0 │└──┴──┘└──┴──┘↑pcdata next┌──┬──┐│ 7 ││└──┴──┘↑q指针p指向变量a,q指向变量c。