结构体与共同体习题
第8章练习 结构体与共用体
![第8章练习 结构体与共用体](https://img.taocdn.com/s3/m/05c04f4cfe4733687e21aae6.png)
第十一章习题结构体与共用体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 页。
10-结构体与共用体
![10-结构体与共用体](https://img.taocdn.com/s3/m/215d3504581b6bd97f19eac0.png)
C语言国考题知识点分类汇总(第10章结构体与共同体)2009-2013一、结构体37.有以下程序,运行结果是( B )。
2009.4#include<stdio.h>struct ord { int x,y; }dt[2]={1,2,3,4};main(){ struct ord *p=dt;printf(“%d,”,++p->x);printf(“%d\n”,++p->y);}A.1,2 B. 2,3 C. 3,4 D. 4,136.下面结构体的定义语句中,错误的是( B )。
2009.9A.struct ord {int x;int y;int z;}; struct ord a; B.struct ord {int x;int y;int z;} struct ord a;C.struct ord {int x;int y;int z;} a; D.struct {int x;int y;int z;} a;38.有以下程序,其运行后的输出结果是( D )。
2009.9#include<string.h>struct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);printf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}struct A f(struct A t){ t.a=1001;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; }A.1001,ZhangDa,1098.0 B. 1001,ZhangDa,1202.0C.1001,ChangRong,1098.0 D. 1001,ChangRong,1202.036.设有如下定义,则以下赋值语句中错误的是( B )。
结构体与共用体相关题目练习
![结构体与共用体相关题目练习](https://img.taocdn.com/s3/m/ff8015e5b8f67c1cfad6b87d.png)
结构体与共用体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是指向结点的指针域,)请填空。
结构体、共用体
![结构体、共用体](https://img.taocdn.com/s3/m/69337c36376baf1ffd4fad0b.png)
结构体,公用体一、选择题:(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;述中正确的是()。
C语言题库第8章 结构体和共同体
![C语言题库第8章 结构体和共同体](https://img.taocdn.com/s3/m/c56bb8eeb14e852458fb57f6.png)
第八章结构体和共同体一、单项选择1. 若有以下定义:struct link{int data;struct link *next;}a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构,若指针p指向a,指针q指向c。
则能把c插入到a和b之间形成新的链表的语句是( C )2. 若有以下程序段:int a=1,b=2,c=3;struct dent {int n ; int *m ;} s[3] = {{101,&a},{102,&b},{103,&c}};struct dent *p=s ;则以下表达式中值为2的是( D )。
3. 下面程序的运行结果是( D )。
#iunclude<stdio.h>int main ( ) {struct complx {int x; int y ;}cnum[2]={1,3,2,7} ;printf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x) ;return 0;}二、程序设计1. /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s 中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序: */#include <stdio.h>#define N 16typedef struct{ char num[10];int s ;}STREC;void fun (STREC a[]){/*********Begin*********//*********End**********/}int main (){FILE *wf,*in;STREC s[N]={{ "GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}};int i;fun(s);printf("The data after sorted :\n");for (i=0; i<N; i++)printf("%s %4d\n",s[i].num,s[i].s);printf("\n");/******************************/in=fopen("in001.dat","r");i=0;while(!feof(in)){fscanf(in,"%s %d",s[i].num,&s[i].s);i++;}fun(s);wf=fopen("out.dat","w");for (i=0; i<N; i++)fprintf(wf,"%s %4d\n",s[i].num,s[i].s);fclose(wf);fclose(in);/*****************************/return 0;}【参考代码】int i,j;STREC t;for(i=0;i<N;i++)for(j=0;j<N-1-i;j++)if(a[j].s<a[j+1].s){t=a[j];a[j]=a[j+1];a[j+1]=t;}2. /*某学生的记录由学号、8门课成绩和平均分组成,学号和8门课的成绩已在主函数中给出。
结构体和共用体习题
![结构体和共用体习题](https://img.taocdn.com/s3/m/e532690fb307e87101f6965b.png)
习题六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语言(结构体与共用体)习题与答案
![C语言(结构体与共用体)习题与答案](https://img.taocdn.com/s3/m/1d8a8fdf1eb91a37f0115c79.png)
{ 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)功能是()。
结构体与公用体 习题十及参考答案
![结构体与公用体 习题十及参考答案](https://img.taocdn.com/s3/m/84bf2f3bc281e53a5902ff10.png)
住址、入学成绩)的信息。请在输入10名教师和学生的信息后, 按姓名进行排序,最后按排序后的顺序进行输出,对于教师要输 出姓名、单位、住址和职称,对学生要输出姓名、班级、住址和 入学成绩。请编程实现。
14.11 第 11章 结构体与共同体_C语言程序设计实验指导 (第2版)_[共8页]
![14.11 第 11章 结构体与共同体_C语言程序设计实验指导 (第2版)_[共8页]](https://img.taocdn.com/s3/m/fe2cf8e643323968001c92b7.png)
平均成绩。
#include <stdio.h> struct student { int num; int midscore; int finalscore; float ave; }stud1; void main() {
printf("please input the num,midterm score,final score\n"); scanf("%d%d%d",&stud1.num,&stud1.midscore,&stud1.finalscore); stud1.ave=(stud1.midscore+stud1.finalscore)/2.0; printf("The average score is %5.2f\n",stud1.ave); }
【3】结构体
【4】struct node *
【5】p=(struct aa *) malloc (sizeof (struct aa));
【6】28
【7】s.birth.year=1984; s.birth.month=11; s.birth.day=12;
【8】51
四、编程题
【1】用结构体类型编写程序。输入一个学生的学号、数学期中和期末成绩,然后计算并输出
第 14 章 《C 语言程序设计》习题参考答案
14.11 第 11 章 结构体与共同体
一、选择题
【1】B
【2】A
【3】A
【4】B
【5】B
【6】C
【7】A
【8】B
【9】B
【10】B
二、判断题
【1】
【2】√
【3】√
【4】
结构体与共同体文件测验
![结构体与共同体文件测验](https://img.taocdn.com/s3/m/f329bcfb4693daef5ef73d8e.png)
for(p=p->link;p!=first;p= __【1】_____) { m = p->data + p->link->data + p->link->link->data; if (___【2】____) m3 = m; } return(m3); } 2. 以下程序的功能是统计循环链表中结点的个数, 其中first为指向第一个结点 的指针。请在【 】内填入正确内容。 int count(struct node *first) { struct node *p; if(first == NULL) return 0; int c = 1; p = first->link; while(____【1】______) { ___【2】________; p = ___【3】______; } return (c ); } 三、 程序阅读题 (30分,每题15分) 1. 以下程序的运行结果是_________。 main() { union EXAMPLE {struct { int x; int y; }in; int a; int b; }e; e.a = 1; e.b = 2; e.in.x = e.a * e.b; e.in.y = e.a + e.b; printf(“%d %d %d”,e.a,e.in.x, e.in.y); } 3. 假设磁盘上有三个文本文件,其文件名和内容分别为: 文件名 内容 f1 aaa! f2 bbb! f3 ccc!
四、 编程题(30分) 已知head指向一个带头结点的单向链表, 链表中每个结点包含整型数据域(data) 和指针域(next),链表中各结点按数据域递增有序链接。(1)实现函数删除链表 中数据域相同的结点, 使之只保留一个。(2)实现函数将其倒序递减排列(不能使 用额外的存储空间)。 typedef int datatype; typedef struct ode * next; }linklist; …… linklist * purge(linklist *head); linklist * invert(linklist *head); //请实现这两个函数
第十章结构体与共用体
![第十章结构体与共用体](https://img.taocdn.com/s3/m/d4d93c5f312b3169a451a40a.png)
试题汇编之:结构体与共用体一.选择题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.形如上题中定义的结构体变量,下列对此变量的输入形式中正确的是。
结构体,共用体,链表相关试题
![结构体,共用体,链表相关试题](https://img.taocdn.com/s3/m/590ff70676c66137ef061900.png)
十.结构体和共用体(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 )。
结构体与共用体习题
![结构体与共用体习题](https://img.taocdn.com/s3/m/9168321fa8114431b90dd86f.png)
第十一章 结构体与共用体1、 填空(1) 为了建立如图所示的存储结构(即每个结点含两个域,data 是数据域,next 是指向结点的指针域),请填空。
Struct link{char data;;}node;(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);}2、 选择(1) 根据以下定义,能输出字母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]); struct person { char name[9];int age;};struct person class[10]={ “John ”,17,“Paul ”,19,“Mary ”,18,“Adam ”,16,};(2) 对整个结构能够进行的操作是 。
A. 对结构进行赋值data nextB.对结构进行存取C.对结构进行运算D.对结构进行&操作(3)不是结构类型的特点的选项为。
A.结构体变量可以有不同类型的成员B.结构体中的成员都占有存储空间C.结构体变量既可以做函数参数,又可以从函数中返回D.结构体变量的成员既可以读又可以写3、判断(1)能在一个存储区内处理不同的类型的数据叫结构。
()(2)在编译时对结构类型不分配空间,只能对变量分配空间。
()(3)结构一旦定义,系统就给它分配所需的内存单元。
()4、程序设计(1)设有以下结构类型说明:struct stud{char num[5],name[10];int s[4];double ave;}请编写:<1>readrec把30名学生的学号、姓名、四项成绩及平均分放在一个结构体数组中,学生的学号、姓名和四项成绩由键盘输入,然后计算出平均分放在结构提对应的域中。
9 结构体与共用体 答案
![9 结构体与共用体 答案](https://img.taocdn.com/s3/m/176a947c83c4bb4cf6ecd111.png)
9 结构体与共用体一、选择填空9.1 答案:C分析:在本题的说明中定义了一个名为wc的结构,它由两个成员组成:整型变量a和指针变量b。
在定义的同时说明了一个指向这一结构类型的指针变量p。
数组x0和x1都是含有两个整型元素的一维数组,并赋有初值。
x为一结构型数组,共有两个元素,每一个元素都具有struct wc型的结构(含有两个成员),并赋有初值。
执行p=x;语句后,p指向这一结构数组的首地址。
由于p指向了x数组的首地址,也就是x[0]的地址,所以答案A中的*p->b等价于*(x[0].b),其值为11(注意:运算符->优先于*);答案B中的p->a即是x[0].a,其值为100;答案C中的++p->a是找到p->a(其值为100),再将此值自增1,取增加1以后的值,故为101;答案D是先将指针p增1,指向x数组的第二个元素x[1],即(p++)->a在此等价于x[1].a,其值为300。
9.2 答案:D分析:本题中的初始数据的构成情况与上题相同。
如前所述,答案A的值为11;答案B的值与上题的答案D相同,为300;答案C是先取内容,后自增1,等价于*p->b, p++,故其值也为11;而答案D是p先自增1,指向x[1],后取值,等价于++p, *p->b,所以其值为31。
9.3 答案:D分析:关键字typedef是利用已定义的类型标识符来定义新的类型标识符。
它并不产生新的数据类型。
其一般形式为:typedef 类型名标识符;题中的long int就是一个已存在的类型名,而新定义的类型名BIGGY就代表着long int 这个类型标识符。
9.4 答案:D分析:由于本题中定义了一个名为st的结构,它由两个成员组成:一个是整型变量n;一个是指向自身结构的指针变量next。
接着又定义了具有这一类型的一维数组a和指针变量p。
a数组含有3个元素并赋有初值。
p指向a数组的第一个元素。
C语言-第9章 结构体与共用体
![C语言-第9章 结构体与共用体](https://img.taocdn.com/s3/m/05cc542caf45b307e87197b4.png)
第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个学生的数据、包括学号、姓名、成绩。
结构体和共用体习题
![结构体和共用体习题](https://img.taocdn.com/s3/m/e95468e8844769eae109ed69.png)
结构体和共用体习题习题六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语言9结构体与共用体
![c语言9结构体与共用体](https://img.taocdn.com/s3/m/d1758649dcccda38376baf1ffc4ffe473368fdd1.png)
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;以下叙述中错误的是_________。
第8单元 结构体与共用体
![第8单元 结构体与共用体](https://img.taocdn.com/s3/m/16e17812a2161479171128da.png)
第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域,正确的语句是。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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;
}
main()
{ static struct s1 a[]={{"abcd",1,a+1},{"efgh",2,a+2},{"ijkl",3,a}};
typedef union
{ long i;
int k[5];
char c;
} DATE;
struct date { nt cat; DATE cow;
double dog;
} too;
DATE max;
则语句printf(〞%d〞,sizeof(struct date)+sizeof(max)))的执行结果是( )。
struct s1 *p=a;int i=0;
printf("%s%s%s",a[0].s,p->s,a[2].sip->s);
printf("%d%d",i+2,--a[i].i);
printf("%c\n",++a[i].s[3]);
}
A.abcd abcd abcd 2 0 e B.abcd efgh ijkl 2 0 e
h ....
C.abcd abcd ijkl 2 0 e D.abcd abcd abcd 2 1 e
6、设有以下语句:
struct st{int n;struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,'\0'},*p;
{struct stu students[3]=
{{9801,"zhang",20},{9802,"Wang",19},{9803,"zhao",18}};
fun(students+2);}
A.Zhang B.Zhao C.Wang D.18
3、设有以下定义
s->data=( 【 】 );
r->next=s.r;
r=s;
ch=getchar();}
r->next=( 【 】 );
return h;}
7、 下面程序的输出是_______。
main()
{ enum em{em1=3,em2=1,em3};
p=&a[0];
则表达式( )的值是6。
A.p++->n B.p->n++ C.(*p).n++ D.++p->n
7、下面程序的输出是( )。
main()
{ enum team{my,your=4,his,her=his+10};
printf("%d %d %d %d\n",my,your,his,her);
}
A.0 1 2 3 B.0 4 0 10 C.0 4 5 15 D.1 4 5 15
8、下面程序的输出是( )。
typedef union { long x[2];
1、以下程序运行的输出结果是( )。
main()
{union {char i[2];
int k;
}r;
r.i[0]=2;r.i[1]=0;
printf("%d\n",r.k);
}
A.2 B.1 C.0 D.不确定
{ struct node *h,*s,*r;
char ch;
h=(struct node *)malloc(sizeof(struct node));
r=h;
ch=getchar();
while (ch!=’#’)
{ s=(struct node*)malloc(sizeof(struct node));
struct node
{ char data;
struct node *next;};
( 【 】 )creatlist( )
2、有以下程序输出结果是( )。
#include<stdio.h>
struct stu
{int num;
char name[10];
int age;
};
void fun(struct stu *p)
{printf("%s\n",(*p).name);}
main()