结构体与联合体习题(含答案)

合集下载

(完整版)结构体与联合体习题与参考答案

(完整版)结构体与联合体习题与参考答案

(完整版)结构体与联合体习题与参考答案第八章结构体与联合体选择题1、若程序中有以下的说明和定义:struct abc{ int x;char y; } 花括号后少了分号。

struct abc s1,s2;则会发生的情况是______。

A) 编译时错B) 程序将顺序编译、连接、执行C) 能顺序通过编译、连接、但不能执行D) 能顺序通过编译、但连接出错2、有以下程序段struct st{ int x; int *y;}*pt;int a[]={1,2};b[]={3,4};struct st c[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是A) *pt->y B) pt->x C) ++pt->x D) (pt++)->x3、有以下说明和定义语句struct student{ int age; char num[8];};struct student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是______。

A) (p++)->num B) p->num C) (*p).num D) stu[3].age4、设有如下枚举类型定义enum language{Basic=3,Assembly=6,Ada=100,COBOL,Fortran};枚举量Fortran的值为______。

A) 4 B) 7 C) 102 D) 1035、以下叙述中错误的是_________。

A)可以通过typedef增加新的类型B)可以用typedef将已存在的类型用一个新的名字来代表C)用typedef定义新的类型名后,原有类型名仍有效D)用typedef可以为各种类型起别名,但不能为变量起别名6、有以下程序段typedef struct NODE{ int num; struct NODE *next;} OLD;以下叙述中正确的是A)以上的说明形式非法B) NODE是一个结构体类型C) OLD是一个结构体类型D) OLD是一个结构体变量7、以下选项中不能正确把cl定义成结构体变量的是______。

结构体与链表习题附答案

结构体与链表习题附答案

结构体与链表习题附答案一、选择题1、在说明一个结构体变量时系统分配给它的存储空间是().A)该结构体中第一个成员所需的存储空间B)该结构体中最后一个成员所需的存储空间C)该结构体中占用最大存储空间的成员所需的存储空间D)该结构体中所有成员所需存储空间的总和。

2.设有以下说明语句,则以下叙述不正确的是( )struct stu{int a;float b;}stutype;A. struct 是结构体类型的关键字B. struct stu 是用户定义的结构体类型C. stutype 是用户定义的结构体类型名D. a 和b 都是结构体成员名3、以下对结构体变量stu1中成员age的合法引用是()#includestruct student{int age;int num;}stu1,*p;p=&stu1A)stu1->age B)student.age C)p->age D) p.age4、有如下定义:Struct date{int year,month,day;};Struct worklist{Char name[20];Char sex;Struct date birthday;}person;对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是( ) 。

A worklist .birthday.year=1978B birthday.year=1978C person.birthday.year=1958D person.year=19585、以下程序运行的结果是( ) 。

#include”stdio.h”main(){ struct date{ int year , month , day ;} today ;printf(“%d\n”,sizeof(struct date));}A .6 B.8 C.10 D.126、对于时间结构体struct date{ int year , month , day ;char week[5];}则执行printf(“%d\n”,sizeof(struct date))的输出结果为( ) 。

编程选择题40道:C语言结构体与联合体:数据组织与管理.Tex

编程选择题40道:C语言结构体与联合体:数据组织与管理.Tex

1.在C语言中,结构体(struct)能够存储不同类型的数据。

以下哪种说法是正确的关于结构体成员变量的访问?o A. 结构体成员变量只能在定义结构体的函数中访问。

o B. 结构体成员变量的访问必须通过指向结构体的指针。

o C. 结构体成员变量不能被直接初始化。

o D. 结构体成员变量可以通过结构体变量名直接访问。

答案:D解析:结构体成员变量可以直接通过结构体变量名访问,无需指针,选项A和B错误。

C语言支持在定义结构体时直接初始化成员变量,因此选项C也错误。

2.C语言中的联合体(union)与结构体(struct)有何不同?o A. 联合体和结构体都共享相同的内存空间。

o B. 联合体允许成员变量共享同一段内存空间,而结构体的成员变量各自占用独特内存空间。

o C. 联合体的成员变量不能有相同的类型。

o D. 联合体不能在函数间传递。

答案:B解析:联合体的特性是所有成员共享同一段内存空间,而结构体的成员各自有自己的内存空间。

3.下面的代码片段中,结构体Person定义了一个成员变量name和一个成员函数printName。

在C语言中,这段代码的语法是否正确?o B. 错误,C语言的结构体不能定义成员函数。

o C. 错误,printName函数的定义中缺少返回类型。

o D. 错误,printName函数定义需要在结构体定义外部。

答案:B解析:C语言的结构体不具备成员函数,不能在结构体内直接定义函数。

4.如果一个结构体包含多个成员,结构体的大小如何确定?o A. 结构体的大小是其所有成员大小的总和。

o B. 结构体的大小是其最长成员的大小。

o C. 结构体的大小是其所有成员大小的总和,加上成员间可能的填充大小,以满足对齐要求。

o D. 结构体的大小是所有成员中最大小别的成员乘以成员数量。

答案:C解析:结构体的大小是成员变量大小的总和加上为了内存对齐而添加的填充大小。

5.在C语言中,使用typedef struct的目的何在?o A. 为了使结构体的定义更复杂。

结构体和共用体习题

结构体和共用体习题

结构体和共用体习题(总8页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--习题六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 ==10; =1993;C =25; =10; =1993;(6)设有如下定义:struct sk{int a;float b;}data,*p;若有p=&data;则对data中的a成员的正确引用是( B)。

结构体和共用体习题

结构体和共用体习题

习题六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)。

结构体与联合体习题含答案

结构体与联合体习题含答案

)(含答案结构体与联合体习题结构体与联合体习题2013年选择题1、若程序中有以下的说明和定义:struct abc{ int x;char y; } 花括号后少了分号。

struct abc s1,s2;。

则会发生的情况是______B) 程序将顺序编译、连接、执行A) 编译时错D) 能顺序通过编译、但连接出错C) 能顺序通过编译、连接、但不能执行2、有以下程序段struct st{ int x; int *y;}*pt;int a[]={1,2};b[]={3,4};struct stc[2]={10,a,20,b};pt=c;的是以下选项中表达式的值为11D) (pt++)->x C) ++pt->x A)*pt->y B) pt->x、有以下说明和定义语句3struct student{ int age; char num[8];};,?403}};structstudent *p=stu;______。

以下选项中引用结构体变量成员的表达式错误的是 stu[3].age D)B)p->num C) (*p).num A) (p++)->num 4、设有如下枚举类型定义 enum language{Basic=3,Assembly=6,Ada=100,COBOL,Fortran};。

Fortran枚举量的值为______D) 103 102 B) 7 C) A) 4。

、以下叙述中错误的是_________5增加新的类型可以通过typedef A)typedef可以用将已存在的类型用一个新的名字来代表B)typedef定义新的类型名后,原有类型名仍有效C)用typedef可以为各种类型起别名,但不能为变量起别名D)用6、有以下程序段typedef struct NODE{ int num; struct NODE *next;} OLD;以下叙述中正确的是A)以上的说明形式非法 B) NODE是一个结构体类型C) OLD是一个结构体类型 D) OLD是一个结构体变量7、以下选项中不能正确把cl定义成结构体变量的是______。

数据结构c语言版试题及答案

数据结构c语言版试题及答案

数据结构c语言版试题及答案一、选择题(每题2分,共10分)1. 在C语言中,以下哪个关键字用于定义结构体?A. structB. unionC. enumD. typedef答案:A2. 若有一个结构体数组,下列哪个函数可以用来初始化数组中的每个元素?A. memsetB. memcpyC. strcpyD. bzero答案:A3. 在C语言中,以下哪个函数用于动态分配内存?A. mallocB. callocC. reallocD. all of the above答案:D4. 对于一个链表,以下哪个操作是正确的?A. 插入节点B. 删除节点C. 遍历链表D. all of the above答案:D5. 在C语言中,以下哪个函数用于释放动态分配的内存?A. freeB. mallocC. callocD. realloc答案:A二、填空题(每题3分,共15分)1. 结构体定义的关键字是______。

答案:struct2. 在C语言中,动态分配内存失败时,malloc函数返回______。

答案:NULL3. 单链表的头节点指针通常初始化为______。

答案:NULL4. 双向链表中,每个节点包含______个指针。

答案:两个5. 树的深度优先遍历包括______、中序遍历和后序遍历。

答案:前序遍历三、简答题(每题5分,共20分)1. 请简述C语言中结构体和联合体的区别。

答案:结构体(struct)可以包含不同类型的数据,并且可以有多个实例;联合体(union)可以包含不同类型的数据,但是只能有一个实例,即在任意时刻只能存储其中一个成员的值。

2. 动态内存分配的优点是什么?答案:动态内存分配允许程序在运行时根据需要分配内存,这样可以更有效地使用内存资源,并且可以创建大小不固定的数据结构。

3. 链表相比于数组有哪些优点?答案:链表的优点包括动态大小,可以灵活地插入和删除节点,不需要预先知道数据的大小。

第十章结构体与共用体

第十章结构体与共用体

试题汇编之:结构体与共用体一.选择题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语言(结构体和共用体、文件)机试模拟试卷3(题后含答案及解析)

国家二级C语言(结构体和共用体、文件)机试模拟试卷3(题后含答案及解析)

国家二级C语言(结构体和共用体、文件)机试模拟试卷3(题后含答案及解析)题型有:1. 选择题选择题1.若有语句typedef struet S{int g;char h;}T;,则下列叙述中正确的是( )。

A.可用S定义结构体变量B.可用T定义结构体变量C.S是struet类型的变量D.T是struet S类型的变量正确答案:B解析:本题考查typedef重新声明一种结构体类型。

那么T为结构体类型,而不是结构体变量,所以B选项正确。

知识模块:结构体和共用体2.设有语句typedef struet TT{char c;int a[4];}CIN;,则下列叙述中正确的是( )。

A.CIN是struet TT类型的变量B.TT是struet类型的变量C.可以用TT定义结构体变量D.可以用CIN定义结构体变量正确答案:D解析:本题考查typedef重新声明一种结构体类型。

其中CIN为结构体类型名,而不是结构体变量,所以D选项正确。

知识模块:结构体和共用体3.下列叙述中错误的是( )。

A.可以用typedef将已存在的类型用一个新的名字来代表B.可以通过typedef增加新的类型C.用typedef定义新的类型名后,原有类型名仍有效D.用typedef可以为各种类型起别名,但不能为变量起别名正确答案:B解析:本题考查typedef的用法。

typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以B选项错误。

知识模块:结构体和共用体4.有以下程序:#include<stdio.h>main( ){struet STU{char name[9];char sex;double score[2];};struet STU a={“Zhao”,’m’,85.0,90,0},b={“Qian”,’f’,95.0,92.0};b=a;prinff(“%s,%c,%2.0f,%2.0f\n”,b.name,b.sex,b.score[0],b.score[1]);}程序的运行结果是( )。

c高级试题及答案

c高级试题及答案

c高级试题及答案C高级试题及答案1. 问题:解释C语言中的指针和引用的区别。

答案:在C语言中,指针是一个变量,它存储了另一个变量的内存地址。

指针可以被重新赋值指向不同的内存地址。

引用则是一种别名,它在声明时必须初始化,并且不能改变指向。

引用与指针的主要区别在于,引用必须在声明时初始化,并且不能重新赋值。

2. 问题:描述C语言中结构体和联合体的区别。

答案:结构体(struct)是一种构造数据类型,允许将多个不同类型的数据项组合成一个单一的数据结构。

结构体中的每个成员可以是不同的数据类型,并且每个成员占据不同的内存空间。

联合体(union)也是一种构造数据类型,它允许在相同的内存位置上存储不同的数据类型。

联合体中的所有成员共享相同的内存空间,一次只能存储一个成员的值。

3. 问题:解释C语言中的预处理器指令`#include`的作用。

答案:预处理器指令`#include`用于将指定的文件包含到当前的源文件中。

它允许程序员在不同的源文件中共享代码,并且可以包含标准库的头文件,以便使用库中定义的数据类型、函数和宏。

`#include`指令可以带双引号或尖括号,双引号用于包含用户自定义的头文件,而尖括号用于包含标准库的头文件。

4. 问题:如何使用C语言实现文件的读写操作?答案:在C语言中,可以使用标准I/O库函数来实现文件的读写操作。

`fopen`函数用于打开文件,`fprintf`函数用于向文件写入数据,`fscanf`函数用于从文件读取数据,`fclose`函数用于关闭文件。

例如,使用`fopen`函数打开文件后,可以使用`fprintf`向文件写入字符串,使用`fscanf`读取文件内容,最后使用`fclose`关闭文件。

5. 问题:解释C语言中的递归函数。

答案:递归函数是一种自我调用的函数,它在其定义中调用自己。

递归函数通常用于解决可以分解为更小、相似问题的问题。

递归函数必须有一个明确的退出条件,以防止无限递归。

结构体与联合体习题含答案)

结构体与联合体习题含答案)

2013年结构体与联合体习题选择题1、若程序中有以下的说明和定义:struct abc{ int x;char y; } 花括号后少了分号。

struct abc s1,s2;则会发生的情况是______。

A) 编译时错B) 程序将顺序编译、连接、执行C) 能顺序通过编译、连接、但不能执行D) 能顺序通过编译、但连接出错2、有以下程序段struct st{ int x; int *y;}*pt;int a[]={1,2};b[]={3,4};struct st c[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是A) *pt->y B) pt->x C) ++pt->x D) (pt++)->x3、有以下说明和定义语句struct student{ int age; char num[8];};struct student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是______。

A) (p++)->num B) p->num C) (*p).num D) stu[3].age4、设有如下枚举类型定义enum language {Basic=3,Assembly=6,Ada=100,COBOL,Fortran};枚举量Fortran的值为______。

A) 4 B) 7 C) 102 D) 1035、以下叙述中错误的是_________。

A)可以通过typedef增加新的类型B)可以用typedef将已存在的类型用一个新的名字来代表C)用typedef定义新的类型名后,原有类型名仍有效D)用typedef可以为各种类型起别名,但不能为变量起别名6、有以下程序段typedef struct NODE{ int num; struct NODE *next;} OLD;以下叙述中正确的是A)以上的说明形式非法B) NODE是一个结构体类型C) OLD是一个结构体类型D) OLD是一个结构体变量7、以下选项中不能正确把cl定义成结构体变量的是______。

习题参考答案第9章结构体与共用体.docx

习题参考答案第9章结构体与共用体.docx

第9章结构体与共用体(参考答案)二. 填空题1.if(a&OxlO==OxlO)2.s=(high&OxffffOOOO) I (low&OxOOOOffff)3.04.30 4【说明】此题考查的是结构体类型变量分配的空间,结构体变量a所需的空间是各成员之和,成员num占6个字节,成员s是数组,占16个字节,成员ave占8个字节。

结构体指针变量p 在内存所占字节数是4个字节,用于存放相同类型的地址。

5.80【说明】共用体类型STU定义的数组分配的是一块连续的存储空间,其长度为数组长度X共用体最大成员空间=5X 16.6.No:1001N ame: WangzhenBirthday: 1990/12/9*三. 编程题1、定义一个结构体变量(包括年、月、日),计算该日在本年中是第几天。

【程序分析:】以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

【程序源代码:】#include <stdio.h>struct(int day;int month;int year;}date;int main()( intdays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 〃每月的天数从下标为1 开始int sumdays=O,leap;printf(u\nplease input year,month,day\n n);scanf("%d,%d,%d",&date.year,& date.month,& date.day);〃计算正常年份month月以前的天数for(int i= 1 ;i<date.month;i++)"5(^林第2章数据类型、运算符与表达式sumdays+=days[i];sumdays+=date.day; 〃再加上当月的天数if(date.year%400==0ll(date.year%4==0&&date.year%100!=0))/* 判断是不是闰年*/leap=l;elseleap=O;if(leap== 1 &&date.month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ sumdays++;printf("It is the %dth day.",sumdays);}2、针对【例9.11】做修改,对任意班级学生的基本信息和成绩进行管理,学生的基本信息包括: 学号、姓名、3门课的成绩,要求编写用户函数分别实现学生基本信息输入、总成绩计算、最高分学生的查找、学生信息排序(按学生总成绩从高到低)、输出最高分学生的信息,输出所有学生的信息功能。

C++语言选择题40道:C++结构体与联合.Tex

C++语言选择题40道:C++结构体与联合.Tex

C++结构体与联合试题1.结构体成员的访问哪个符号是正确的?o A. &o B. ->o C. .o D. ::答案: C解析: 结构体成员通过.操作符访问。

2.在C++中,结构体和类的主要区别是?o A. 结构体不能有方法o B. 类不能继承结构体o C. 结构体默认的访问属性是publico D. 类默认的访问属性是public答案: C解析: 结构体在C++中的默认访问属性是public,而类的默认访问属性是private。

3.联合体(union)成员的访问方式与结构体相同吗?o A. 不相同o B. 相同,但只在初始化时有效o C. 相同o D. 联合体不能访问成员答案: C解析: 联合体成员与结构体成员的访问方式相同,都是通过.或->操作符访问。

4.在C++中,联合体的成员变量共享什么?o A. 内存空间o B. 类别信息o C. 名称空间o D. 函数指针答案: A解析: 联合体的所有成员共享同一段内存空间。

5.结构体和联合体的成员初始化,以下说法正确的是?o A. 结构体成员不能初始化o B. 联合体成员只能在定义时初始化o C. 结构体和联合体成员都可以在定义时初始化o D. 结构体和联合体成员都不能在定义时初始化答案: C解析: 结构体和联合体成员都可以在定义时初始化。

6.以下哪种说法是关于结构体的?o A. 所有成员的总和决定了结构体的大小o B. 结构体成员不共享内存空间o C. 结构体成员的初始化顺序无关紧要o D. 结构体的大小等于最大成员的大小答案: A解析: 结构体的大小是其所有成员总和的大小。

7.以下代码union Data { int i; float f; } d;中,变量d.i和d.f共享多少字节?o A. 4字节o B. 8字节o C. 12字节o D. 16字节答案: A解析: union Data中的int和float类型数据在32位系统下都占用4字节,二者共享同一段内存。

9 结构体与共用体 答案

9 结构体与共用体 答案

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语言结构体面试题

C语言结构体面试题

C语言结构体面试题及答案汇总以下是10道C语言结构体面试题和答案:1.什么是结构体?答案:结构体是一种用户自定义的数据类型,可以包含多个不同类型的数据成员。

2.结构体在C语言中有哪些作用?答案:结构体在C语言中主要用于将不同类型的数据组合成一个整体,以便更好地管理和使用。

3.结构体的定义方式是什么?答案:结构体的定义方式是使用“struct”关键字,后面跟着结构体的名称,然后是花括号中的数据成员列表。

4.如何定义一个结构体变量?答案:定义一个结构体变量需要使用“struct”关键字,后面跟着结构体的名称,然后是变量名。

5.如何访问结构体中的成员?答案:可以通过点运算符“.”来访问结构体中的成员。

例如,如果有一个名为“person”的结构体变量,其中有一个名为“name”的成员,则可以通过“”来访问该成员。

6.结构体中的成员可以是哪些类型?答案:结构体中的成员可以是任何基本数据类型,如int、char、float等,也可以是其他结构体类型。

7.结构体中的成员默认是什么类型的?答案:结构体中的成员默认是按顺序排列的,如果没有明确指定,则默认按照基本数据类型的顺序排列。

8.如何修改结构体的成员顺序?答案:可以使用“#pragma pack”指令来修改结构体的成员顺序。

例如,“#pragma pack(push, 1)”可以将结构体的成员顺序设置为按字节对齐。

9.结构体可以嵌套吗?答案:是的,结构体可以嵌套。

可以在一个结构体中定义另一个结构体类型的成员。

10.结构体和数组有什么区别?答案:结构体是一种用户自定义的数据类型,可以包含多个不同类型的数据成员;而数组是一种线性数据结构,用于存储相同类型的数据元素。

结构体和联合体例题

结构体和联合体例题

第11章结构体与联合体例题例11-1.以下叙述中错误的是()。

2007.9A)用typedef可以增加新类型√B)typedef只是将已存在的类型用一个新的名字来代表C)用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D)用typedef为类型说明一个新名,通常可以增加程序的可读性例11-2 设有以下说明:typedef struct ST{lont a;int b;char c[2];}NEW;则下面叙述中正确的是()。

2005.4A) 以下说明形式非法B)ST是一个结构体类型C)NEW是一个结构体类型√D)NEW是一个结构体变量例11-3.有以下程序段:typedef struct node{int data;struct node *next;} *NODE;NOE p;以下叙述中正确的是()。

2007.4A)p是指向struct node结构变量的指针的指针B)NODE p;语句出错C) p是指向struct node结构变量的指针√D)p是struct node结构变量例11-4.设有说明:struct DATA{int year;int month;int day;};请写出一条定义语句,该语句定义d为上述结构体变量,并同时为其成员year、month、day依次赋值为2006、10、1:。

(2007.4)例11-5.以下程序运行后的输出结果是()(2005.9)#include<stdio.h>struct STU{int num;float TotalScore;};void f(struct STU p){struct STU s[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;}main(){struct STU s[2]={20041,703},{20042,580}};f(s[0]);printf("%d %3.0f\n",s[0].num,s[0].TotalScore);}程序运行后的输出结果是()。

C语言-第06讲-结构-答案.docx

C语言-第06讲-结构-答案.docx

第6讲结构体和共同体6.6强化练习6.6.1选择题[6-1] A)各成员所需内存量的总和[6-2JC) 一个共用体变量中不能同时存放其所有成员[6-3] C) stutype是用户定义的结构类型名[6-4] A)所有成员一直驻留在内存中[6-5] C) a不可以作为函数参数[6-6] D) ++[6-7] D) 7简析:按16位机[6-8] A) 4[6-9] D) int *fund( s )char *s[10][];{•••}[6-10] C) 10[6-11] C) p=f( i+l,&( i+2), *p, p);[6-12] D) s.birth.year= 1984;s.birth.month= 11;s. birth, day =11;[6-13] D) struct{ int num;float age;}student;struct student std 1;[6-14] D) 11简析:按16位机[6-15] B) ( *p ).a[6-16] D) printff "%c\n M, class[2].name[0]);[6-17] D) p=&stu.age[6-18] D) scan# "%d", p->age );[6-19] D) *ptr->il[6-20] B) p=( struct sk* )&data.n;[6-21 ] D) *p.age[6-22] D) *(++p)->m[6-23] C) (*p).sex[6-24] D) ++p・>n[6-25] D) (*++p).num[6-26] B) student.age[6-27] D) ++ptr->il[6-28] D) (int*)简析:动态分配存储空间函数,在头文件stdlib.h 中,void *malloc( size_t, size );分配size字节的内存。

c语言结构体试题及答案

c语言结构体试题及答案

c语言结构体试题及答案1. 定义一个结构体,包含学生的姓名、学号和成绩。

```cstruct Student {char name[50];int id;float score;};```2. 编写一个函数,计算结构体数组中所有学生的平均成绩。

```cfloat calculateAverageScore(struct Student students[], int size) {float sum = 0.0;for (int i = 0; i < size; i++) {sum += students[i].score;}return sum / size;}```3. 给定一个结构体数组,编写一个函数,返回成绩最高的学生。

```cstruct Student* findHighestScoreStudent(struct Student students[], int size) {struct Student* highest = students;for (int i = 1; i < size; i++) {if (students[i].score > highest->score) {highest = &students[i];}}return highest;}```4. 编写一个函数,将结构体数组中的学生信息打印出来。

```cvoid printStudents(struct Student students[], int size) { for (int i = 0; i < size; i++) {printf("Name: %s, ID: %d, Score: %.2f\n", students[i].name, students[i].id, students[i].score);}}```5. 如何定义一个结构体,其中包含另一个结构体类型的成员?```cstruct Inner {int a;float b;};struct Outer {struct Inner inner;char c[100];};```6. 编写一个函数,交换两个结构体变量的值。

阅读程序写结果(结构体与共用体)-答案

阅读程序写结果(结构体与共用体)-答案

1.以下程序段的运行结果是【1】struct date{ int year,month,day; } today;main(){ printf("%d\n",sizeof(struct date)); }答案:struct date有三个成员,每个成员占4个字节,所以运行结果:3×4=122.以下程序段的运行结果是【2】struct st { int x; int *y;} *p;int dt[4]={ 10,20,30,40 };struct st aa[4]={ 50,&dt[0],60,&dt[1],60,&dt[2],60,&dt[3] };main(){ p=aa; printf("%d\n",++(p->x)); }答案:p指向aa[0],++(p->x)的执行结果:aa[0]的x成员增13.以下程序段的运行结果是【3】union pw { int i; char ch[2];}a;main(){ a.ch[0]=13; ch[1]=0;printf("%d\n",a.i); }答案:忽略4.以下程序段的运行结果是【4】struct abc{ int a, b, c, s; };{ struct abc s[2]={{1,2,3},{4,5,6}};int t; t=s[0].a + s[1].b;printf("%d\n",t); }答案:s是一个结构数组,初始化的结果:s[0].a=1,s[0].b=2,s[0].c=3,s[0].s=0,s[1].a=4,s[1].b=5,s[1].c=6,s[1].s=0t的值为:s[0].a(1)+ s[1].b(5)=6输出结果:65.以下程序段的运行结果是【5】struct st{ int x; int *y; } *p;int dt[4]={10,20,30,40};struct st aa[4]={ 50,&dt[0],60,21,70,&dt[2],80,&dt[3]};main(){ p=aa; 答案:printf("%d\n",++p->x); 51printf("%d\n",(++p)->x); 60printf("%d\n",++(*p->y)); } 216.以下程序段的运行结果是【6】union myun{ struct{ int x, y, z; } u;int k;} a;{ a.u.x=4; a.u.y=5; a.u.z=6; a.k=0;printf("%d\n",a.u.x);}答案:忽略7.以下程序段的运行结果是【7】struct STU{ char num[10]; float score[3];};main(){ struct STU s[3]={ {"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90} };struct STU *p=s; int i; float sum=0;for(i=0;i<3;i++)sum=sum+p->score[i];printf("%6.2f\n",sum); }答案:p指向s[0], sum求的是s[0]的三个成绩和,结果:2708.以下程序段的运行结果是【8】struct NODE{ int num; struct NODE *next; };main(){ struct NODE *p,*q,*r;p=(struct NODE*)malloc(sizeof(struct NODE));q=(struct NODE*)malloc(sizeof(struct NODE));r=(struct NODE*)malloc(sizeof(struct NODE));p->num=10; q->num=20; r->num=30;p->next=q;q->next=r;printf("%d\n ",p->num+q->next->num);}答案:p,q,r分别指向三个结点,p->num+q->next->num,就是:p->num + r->num ,即:10+309.以下程序段的运行结果是【9】struct a{ int x;int y;}num[2]={{20,5},{6,7}};main(){ printf("%d\n",num[0].x/num[0].y*num[1].y);}答案:num[0].x=20;num[0].y=5;num[1].x=6;num[1].y=7;输出结果:20/5×7=2810.以下程序段的运行结果是【10】typedef union{ long x[2];int y[4];char z[8];} atx;typedef struct aa{ long x[2];int y[4];char z[8];} stx;main(){ printf("union=%d, struct aa = %d\n",sizeof(atx),sizeof(stx)); }答案:忽略11.阅读下列程序段,则程序段实现的功能是【11】。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档