第十一章结构体的试题
C语言第11章结构体
29
【例】30张选票,对三名侯选人之一投票选举,输 入得票人名字,按名字计数,输出最后选举结果。 #include "stdio.h" #define N 30 struct person { char name[20]; int count; };
Li
0 Zhang 0 Wang 0
led[0].name
第十一章 结构体与பைடு நூலகம்用体
本章目标
1.理解结构体,共用体的数据类型
2.学会定义结构体、共用体的数据类型 的变量 3.能够正确使用结构体、共用体的成员
§11.1
已了解的数据类型:
引言
整型 浮点型 字符型 数组
简单数据类型
用户定义的数据类型
特点:所有的元素都是同一种类型
指针型 存在的问题:难以处理较复杂的数据
18
圆点运算符
引用形式:结构体变量名 . 成员名 其中:成员运算符’ . ‟ : 一级,自左而右;
stu1.num 引用结构体变量stu1的num成员; 引用stu1的name成员(字符指针); [i] 引用name成员的第i个元素; stu1.birthday.y 只能对最低级成员进行引用;
二、定义完结构体后,定义结构变量并初始化 struct student x2={0002, "Li Ming ", 85.5};
16
§11.4 访问结构成员
访问结构变量实质上是引用其成员 有两种运算符可访问结构成员
17
struct date { int m; int d; iny y; }; struct student { long num; char name[20]; char sex; struct date birthday; float score; char tel[15]; } stu1, stu2;
第11章 结构
第11 章结构与联合一、单选题1 下列关于结构的说法错误的是:A:结构是由用户自定义的一种数据类型B:结构中可设定若干个不同数据类型的成员C:结构中成员的数据类型可以是另一个已定义的结构D:在定义结构时,可以为成员设置默认值答案:D2 以下关于结构体的叙述中,错误的是:A:结构体是一种可由用户构造的数据类型B:结构体中的成员可以具有不同的数据类型C:结构体中的成员不可以与结构体变量同名D:结构体中的成员可以是指向自身结构的指针类型答案:C3 以下结构体类型说明和变量定义中,正确的是:A:struct SS{ char flag;float x;}struct SS a,b;B:struct{ char flag;float x;}SS;SS a,b;C:struct ss{ char flag;float x;};D:typedef{ char flag;float x;}SS;SS a,b;答案:C4 以下对结构体类型变量st的定义中,不正确的是:A:struct{ char c;int a;}st;B:struct{ char c;int a;}TT;struct TT st;C:typedef struct{ char c;int a;}TT;TT stD:#define TT structTT{ char c;int a;}st;答案:B5 设有以下说明语句:struct stu{ int a;float b;}stutype;则下面的叙述不正确的是:A:struct是结构体类型的关键字B:struct stu是用户定义的结构体类型名C:stutype是用户定义的结构体类型名D:a和b都是结构体成员名答案:C6 在16位IBM-PC机上使用C语言时,若有如下定义:struct data{ int i;char ch;double f;}b;则结构变量b占用内存的字节数是:A:1B:2C:8D: 11答案:D7 以下程序的运行结果是:#include "stdio.h"main( ){ struct date{ int year;int month;int day:}today;printf("%d\n",sizeof(struct date) );}A:6B:8C:10D: 12答案:A8 下面程序的运行结果是:main( ){ struct cmplx{ int x;int y;}c[2]={1,3,2,7};printf("%d",c[0].y/c[0].x*c[1].x);}A:0B:1C:3D:6答案:D9 若有以下说明和语句,则对pup中sex域的正确引用方式是:struct pupil{ char name[20];int sex;}pup,*p;p=&pup;A:p.pup.sexB:p->pup.sexC:(*p).pup.sexD:(*p).sex答案:D10 已知职工记录描述为struct workers{ int no;char name[20];char sex;struct{ int day;int month;int year;}birth;};struct workers w;设变量w中的“生日”应是“1993年10月25日”,下列对“生日”的正确赋值方式是:A:day=25;month=10;year=1993;B:w.dat=25;w.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;答案:C11 当定义一个结构体变量时系统分配给它的内存是:A:各成员所需内存量的总和B:成员中占内存量最大者所需的容量C:结构中第一个成员所需内存量D:结构中最后一个成员所需内存量答案:A12 以下定义结构体类型的变量st1,其中不正确的是: A:typedef struct student{ int num;int age;}STD;STD st1;B:struct student{ int num;int age;}st1;C:struct{ int num;int age;}st1;D:truct student{ int num;int age;}struct student st1;答案:D13 设有以下定义:struct sk{ int a;float b;} data,*p;若要使p指向data中的a域,正确的赋值语句是:A:p=(struct sk *)&data.a;B:p=(struct sk *)data.a;C:p=&data.aD:*p=data.a答案:A14 若有以下的定义、说明和语句,则值为101的表达式是:struct wc{ int a; int *b;}*p;int x0[]={11,12},x1[]={31,32};static struct wc x[2]={100,x0,300,x1};p=x;A:*p->bB:p->aC:++p->aD:(p++)->a答案:C15 根据下面的定义,能打印出字母M的语句是:struct person{ char name[9];int age;};struct person chass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16};A:printf("%c",class[3].name);B:printf("%c",class[3].name[1]);C:printf("%c",class[2].name[1]);D:printf("%c",class[2].name[0]);答案:D16 若有以下定义:struct person{ int id;char name[10]:}per,*s=&per;则以下对结构体成员的引用中错误的是:A:B:s->name[0]C:(*per).name[8]D:(*s).id答案:C17 若有以下说明和语句,则下面表达式中值为1002的是()struct student{ int age;int num;};struct student stu[3]={ {1001,20},{1002,19},{1003,21} };struct student *p;p=stu;A:(p++)->numB:(p++)->ageC:(*p).numD:(*++p).age答案:D18 当说明一个共用体变量时,系统分配给它的内存是()A:各成员所需内存量的总和B:共用体中第一个成员所需内存量C:成员中占内存量最大者所需的内存量D:共用体中最后一个成员所需内存量答案:C19 以下对C语言中共用体类型数据的叙述正确的是()A:可以对共用体变量名直接赋值B:一个共用体变量中可以同时存放所有成员C:一个共用体变量中不能同时存放其所有成员D:共用体类型定义中不能出现结构体类型的成员答案:C20 若有以下定义和语句:union data{ int i;char c;float f;}a;则以下语句正确的是:A:a=5B:printf("%d\n",a.i);C:a={2,'a',1.2};D:n=a答案:B二、多选题1.若有以下说明和语句:struct student{ int age; int num;}std,*p;p=&std;则以下对结构体变量std中成员age的引用方式正确的是( )A.std.age B.p->age C.(*p).age D.*p.age 答案:ABC2.设有以下说明语句struct stu{ int a;float b; }stutype;则以下叙述正确的是( )A.struct 是结构体类型的关键字 B.struct stu 是用户定义的结构体类型C.stutype 是用户定义的结构体类型名 D.a 和 b 都是结构体成员名答案:ABD3.以下说法正确的是( )A.结构体变量的名称为该结构体变量的存储首地址B.结构体变量占用空间的大小为各成员项占用空间大小之和C.结构体类型定义时不分配存储空间D.同一结构体类型的不同变量的同名成员项数据类型相同答案:CD4.有以下语句:struct lie{ int a, float b;}st;则在下面叙述中,正确的是( )A.struct是结构类型的关键字B.struct lie是用户定义的结构类型C.st是用户定义的结构类型名D.a和b都是结构成员名答案:ABD5.在说明一个共用体变量时,系统分配给他的存储空间,描述不正确的是( )A.该共用体中第一个成员所需存储空间B.该共用体中最后一个成员所需存储空间C.该共用体中占用最大存储空间的成员所需存储空间D.该共用体中所有成员所需存储空间的总和答案:ABD6.若有以下说明和定义union dt{int a;char b;double c;}data;以下叙述中正确的是A.data的每个成员起始地址都相同B.变量data所占的内存字节数与成员c所占字节数相等C.程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000D.data可以作为函数的实参答案:ABD7.设有如下说明typedef struct ST{long a;int b;char c[2];}NEW;则下面叙述中不正确的是A.以上的说明形式非法B.ST是一个结构体类型C.NEW是一个结构体类型D.NEW是一个结构体变量答案:AD8.关于枚举类型,描述正确的是()A.枚举类型变量的取值范围只限于类型定义时所列出的值。
2020高考地理湘教版一轮复习讲义:第十一章 第二讲 湿地资源的开发与保护——以洞庭湖区为例 Wo
姓名,年级:时间:第二讲湿地资源的开发与保护——以洞庭湖区为例[考纲展示]区域存在的环境与发展问题及其产生的危害,以及有关的治理保护措施。
授课提示:对应学生用书第207页[基础梳理]一、“地球之肾”—-湿地1.定义水位经常接近地表或为浅水覆盖的土地。
2.类型(1)自然湿地:沼泽、滩涂、低潮时水深不超过6米的浅海区、河流、湖泊等。
(2)人工湿地:水库、稻田等。
3.共同特点地表常年或经常有水,属于陆地与水体之间的过渡带。
4.湿地的功能湿地具有较高的生产力和丰富的生物资源。
在提供水资源、调节气候、涵养水源、调蓄洪水、美化环境、净化水中污染物质、保护生物多样性方面有重要作用.被称为“地球之肾”、“生命的摇篮”和“鸟类的乐园”。
5.洞庭湖湿地的重要价值维持生物多样性、调蓄洪水、提供丰富的农副产品、航运、旅游观光。
二、湿地资源问题1.产生原因人类对于资源、环境的过度开发利用。
2.表现错误!―→错误!―→错误!3.案例——洞庭湖萎缩(1)原因:泥沙淤积严重,大规模围湖造田。
(2)影响:洪涝灾害日趋严重,航道断航及生态环境问题增多。
三、保护湿地1.必要性湿地资源的破坏,严重威胁到居民的生存环境和区域的可持续发展。
2.措施一是保护与开发并重、协调一致;二是湿地既是自然资源,又是环境资源,要特别重视湿地的环境作用。
[图文拓展]1.东北地区湿地保护措施建立湿地保护区,保护好现存的天然湿地;对已经围垦的湿地逐步退田还湿;采取工程措施恢复已经退化的湿地。
2.森林涵养水源、保持水土的作用森林起着类似海绵的作用,能够吸纳和滞蓄大量降水,因而能涵养水源;森林的树冠减轻了雨水对地面的侵蚀,森林的土质疏松,一部分雨水渗入地下,使地表径流减少,因而森林能起到保持水土的作用.授课提示:对应学生用书第208页考点一湿地的开发和保护(高考经典题)地处干旱区的宁夏银川市,其周边地区曾广布湖泊,明清时有“七十二连湖”的说法.20世纪80年代银川周边湖泊所剩无几。
第11章 结构体与共用休
定义结构体类型的同时定义结构体变量
一般形式:
struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列;
例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2;
num
25B
name sex age num
name sex age
stu[0]
stu[1]
结构体数组初始化
分行初始化: 结构体数组引用 顺序初始化: struct student struct student 引用方式: 结构体数组名[下标].成员名 { int num; 例 { int student struct num; 例 struct num; char { char name[20]; int name[20]; stu[1].age++; struct student { char num; int sex; char sex; name[20]; int age; num; {char name[20]; int int age; char sex; }; char sex; }; int char name[20]; age; struct student stu[ ]={{100,“WangLin”,„M‟,20, int char sex; age; struct student stu[ ]={100,“Wang Lin”,„M‟,20}, }stu[ ]={{……},{……},{……}}; {101,“LiGang”,„M‟,19, int age; }stu[ ]={{……},{……},{……}}; 101,“Li Gang”,„M‟,19}, strcpy(stu[0].name,”ZhaoDa”); {110,“LiuYan”,„F‟,19}; }str[3]; 110,“Liu Yan”,„域
结构体、链表综合习题
已知某链表中结点的数据结构定义如下: #include<stdio.h> struct node{int x; struct node *next;}; 函数loop的功能是:根据dir的值循环移位head指向的链 表中的所有结点,当dir结点的指针。 例如,移位前的链表数据:head->1->3->5->4, 移一次后的链表数据:head->4->1->3->5。 算法提示:循环右移时,将链表最后一个结点删除,再将 其插入到链表首部;循环左移时,将链表第一个结点删 除,再将其连接到链表尾部。
结构体、链表综合习题
若要使表达式“P++”无语法错误,则变量P不能声明为 ___________。 D A. int P; B. double P; C. int *P; D. struct{int x;}P;
结构体、链表综合习题
数组和链表都可以用于存储一组彼此有关联的数据,以 下说法中不正确的是: B A:数组占用一块连续的存储区域,链表可能占用 若 干不连续的存储区域 B:数组和链表所占用的存储区域均不能在程序运行期 间动态地分配 C:数组中的数据可以随机存取或顺序存取,链表中的 数据只能顺序存取 D:数组的长度是固定的,链表的长度是不固定的
.以下程序中函数padd的功能是:调整pa指向的链表中各结点的位置,使得所
(1)p1!=pa #include<stdlib.h> typedef struct p{ int x; struct p *next;} PNODE; (2)p2->next PNODE *padd(PNODE *pa) {PNODE *p1, *p2,*p; p1=p2=pa; (3)pa=p while(p1) (4)NULL {if(p1->x%2= =0&& (1) ) {p=p1; p1=p1->next; (2) =p1; p->next=pa;(3) ; } else {p2=p1;p1=p1->next;} } return pa;} main() {PNODE a[10]={{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}},*ha=a,*p; int i ; for(i=0;i<9;i++)a[i].next=&a[i+1]; a[9].next= (4) ; ha=padd(ha); p=ha; printf("\n"); while(p) {printf("%d->",p->x);p=p->next;}}
C语言试题库[完整版]
C语言试题库一、单项选择第一章C语言概述(1)一个C程序的执行是从A、本程序的MAIN函数开始,到MAIN 函数结束。
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
C、本程序的MAIN函数开始,到本程序的最后一个函数结束。
D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。
(2)以下叙述正确的是A、在C程序中,MAIN函数必须位于程序的最前面。
B、C程序的每行中只能写一条语句。
C、C语言本身没有输入输出语句。
D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
(3)C语言规定,在一个源程序中,MAIN主函数的位置是在:A、必须在最前面。
B、必须在系统调用的库函数的后面C、可以在任意位置。
D、必须在最后面(4)一个C程序是由:A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成(5)以下叙述不正确的是:A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个MAIN函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面第二章数据类型、运算符与表达式(1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=(i=4, j=16, k=32)A、4B、16C、32D、52(2)下列四组选项中,均不是C语言键字的选项是A、define , IF, typeB、getc, char, printfC、include, scanf, caseE、i f, struct, type(3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,doB、float,1a0, _AC、b-a, goto, intD、_123, temp, INT(4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3B、3*a*e/bcC、3*a*e/b*cD、a*e/c/b*3(5)已知各变量的类型说明如下:int k, a, b;unsinged long w=5;double x=1.42;则以下不符合C语言语法的表达式是A、x%(-3)B、w+=-2;C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)第三章简单C程序设计(1)putchar函数可以向终端输出一个A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量值(2)若x,y均定义为int型,z定义为double 型,以下合法的scanf函数调用语句是A、scanf(“%d%lx,%le”,&x,&y,&z);B、scanf(“%2d*%d%lf”,&x,&y,&z);C、scanf(“%x%*d%o”,&x,&y,&z);D、scanf(“%x%o%6.2f”,&x,&y,&z);(3)当输入数据的形式为:25,13,10<回车>时,以下程序的输出结果为main(){int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d\n”,x+y+z);}A、x+y+z=48B、x+y+z=35C、x+z=35D、不确定值(4)以下能正确的定义整型变量a,b和c,并对它们赋初值为5的语句是A、int a=b=c=5;B、int a, b, c=5;C、a=5, b=5, c=5;D、a=b=c=5;(5)若有以下定义,则正确的赋值语句是int a,b; float x;A、a=1, b=2;B、b++;C、a=b=5;D、b=int(x);第四章选择结构程序设计(1)能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是A、(x>=1)&&(x<=10)&&(x.>=200)&&(x<=210)B、(x>=1)││(x<=10) ││(x.>=200) ││(x<=210)C、(x>=1) &&(x<=10) ││(x.>=200) &&(x<=210)D、(x>=1)││(x<=10)&& (x.>=200) ││(x<=210)(2)以下程序的运行结果是#incl ude “stdio.h”main(){int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A、6,1B、2,1C、6,0D、2,0(3)请阅读以下程序:main(){int a=5 , b=0 , c=0;if (a+b+c) printf(“* * *\n”);else printf(“$ $ $\n”);}以上程序。
c语言char11
方式二:可以在说明结构体时真接定义变量, 方式二:可以在说明结构体时真接定义变量,如: struct student{ int num; char name[20]; …} s1, s2, b[10], *p; 方式三:可在说明一个无名结构体类型时, 方式三:可在说明一个无名结构体类型时,同时直接定义变 。(此方式只可在不再需要定义此类型变量的场合下 量。(此方式只可在不再需要定义此类型变量的场合下 使用) 使用) struct { int num; char name[20]; …}s1, s2, b[10], *p;
name “ Li Lin”
sex ‘M’ year 1982
birthday month 12 day 4
score 85.5
a
二、对结构体变量的成员操作: 对结构体变量的成员操作:
结构体变量中的每个成员都属于某个具体的数据类型。因此, 结构体变量中的每个成员都属于某个具体的数据类型。因此, 对结构体变量中的每个成员的操作与普通变量一样, 对结构体变量中的每个成员的操作与普通变量一样,包括 输入输出。换句话说,如果某个成员是某基本类型, 输入输出。换句话说,如果某个成员是某基本类型,就可 以将该成员作为基本类型变量来处理。 以将该成员作为基本类型变量来处理。 例: scanf(“%ld %ld”,&a.num); /*长整型量输入 长整型量输入* scanf( %ld ,&a.num); /*长整型量输入*/ gets(); /*字符串输入 字符串输入* gets(); /*字符串输入*/ sex=ˊMˊ; /*字符变量赋值 字符变量赋值* a.sex=ˊMˊ; /*字符变量赋值*/ score=93 93. /*实型变量赋值 实型变量赋值* a.score=93.5; /*实型变量赋值*/ (i=0 name[i]!=ˊ\ for (i=0;[i]!=ˊ\0ˊ;i++) printf(“% ,a name[i]); ,a. /*输出字符值 输出字符值* printf( %c”,[i]); /*输出字符值*/ sum=sum+a.score;
计算思维与程序设计C智慧树知到答案章节测试2023年宁波大学
第一章测试1.计算机唯一能直接识别的语言是()。
A:汇编语言B:编译语言C:高级语言D:机器语言答案:D2.计算机的基本功能是()。
A:软件、处理、硬件、数据和输出B:程序、数据、存储、输入和输出C:输入、编码、程序、控制、输出D:输入、存储、处理、控制和输出答案:D3.计算机选择二进制的原因有()。
A:二进制数据在逻辑运算方面比较方便B:容易使用物理器件实现C:人不使用二进制D:二进制运算规则简单答案:ABD4.计算机的CPU主要由()构成。
A:控制器和运算器B:运算器和寄存器C:中央处理器和存储器D:输入输出设备答案:A5.计算机中的数据以十六进制形式存储,指令以二进制形式存储。
()A:错B:对答案:A第二章测试1.C语言规定:在一个源程序中,main函数的位置()。
A:必须放在程序的后面B:可以放在程序的任何位置,但在执行程序时是从main函数开始执行的C:必须放在程序的开头D:可以放在程序的任何位置,但在执行程序时是从程序的开头执行答案:B2.C语言中,下列用户自定义标识符合法的是()。
A:sum_1B:f(x)C:test.cD:apple_price答案:AD3.C语言中运算对象可以是非整型的运算符是()。
A:%B:++C:=D:/答案:BCD4.在C语言中,函数体是由()括起来。
A:< >B:[ ]C:( )D:{ }答案:D5.<stdio.h>用尖括号时,表示系统先在用户当前目录中寻找要包含的文件,若找不到,再按标准方式去查找。
()A:错B:对答案:A第三章测试1.如果“int a=3,b=4;”,则条件表达式a>b? a:b的值是()。
A:0B:3C:4D:1答案:C2.C语言中,关系表达式和逻辑表达式的值是()。
A:T或FB:True或falseC:真或假D:1或0答案:D3.设a为整型变量,能正确表达数学关系10<a<15的C语言表达式是()。
结构体,共用体,链表相关试题
十.结构体和共用体(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 )。
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字节,二者共享同一段内存。
结构体与链表习题附答案
结构体与链表习题附答案一、选择题1、在说明一个结构体变量时系统分配给它的存储空间是().A)该结构体中第一个成员所需的存储空间B)该结构体中最后一个成员所需的存储空间C)该结构体中占用最大存储空间的成员所需的存储空间D)该结构体中所有成员所需存储空间的总和。
2.设有以下说明语句,则以下叙述不正确的是()tructtu{inta;floatb;}tutype;A.truct是结构体类型的关键字B.tructtu是用户定义的结构体类型C.tutype是用户定义的结构体类型名D.a和b都是结构体成员名3、以下对结构体变量tu1中成员age的合法引用是()#includetructtudent{intage;intnum;}tu1,某p;p=&tu1;A)tu1->ageB)tudent.ageC)p->ageD)p.age4、有如下定义:Structdate{intyear,month,day;};Structworklit{Charname[20];Chare某;Structdatebirthday;}peron;对结构体变量peron的出生年份进行赋值时,下面正确的赋值语句是()Aworklit.birthday.year=1978Bbirthday.year=1978Cperon.birthday .year=1958Dperon.year=19585、以下程序运行的结果是()#include”tdio.h”main(){tructdate{intyear,month,day;}today;printf(“%d\\n”,izeof(truct date));}A.6B.8C.10D.126、对于时间结构体tructdate{intyear,month,day;charweek[5];}则执行printf(“%d\\n”,izeof(tructdate))的输出结果为(A.12B.17C.18D.207、设有以下语句:tructt{intn;charname[10]};tructta[3]={5,“li”,7,“wang”,9,”zhao”},某p;p=a;则以下表达式的值为6的是()A.p++->nB.p->n++C.(某p).n++D.++p->n8、设有以下语句,则输出结果是()tructLit{intdata;tructLit某ne某t;};tructLita[3]={1,&a[1],2,&a[2],3,&a[0]},某p;p=&a[1];printf(\printf(\printf(\}A.131B.311C.132D.2139、若有以下语句,则下面表达式的值为1002的是()tructtudent{intage;intnum;};tructtudenttu[3]={{1001,20},{1002,19},{1003,21}};)tructtudent某p;p=tu;A.(p++)->numB.(p++)->ageC.(某p).numD.(某++p).age10、下若有以下语句,则下面表达式的值为()tructcmpl某{int某;inty;}cnumn[2]={1,3,2,7};cnum[0].y/cnum[0].某某cnum[1].某;A.0B.1C.3D.611、若对员工数组进行排序,下面函数声明最合理的为()。
第11章 结构体练习题
7. 下面程序的输出结果为 C ) 下面程序的输出结果为( #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]}; 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.60 20 60 60 70 20 21 21 31
1、 以下程序的输出结果是 、 以下程序的输出结果是A A) 0 B) 1 C) 3 D) 6 main() { struct cmp { int x; int y; } cnum[2]={1,3,2,7}; printf(“%d\n”,cnum[0].x/cnum[1].y*cnum[1].x); “ ” } 2、根据以下定义 能输出字母 的语句是 能输出字母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, };
C++第11章习题解答
第十一章标准模板库(STL)习题一. 基本概念与基础知识自测题11.1填空题11.1.1 STL大量使用继承和虚函数是(1)(填对或错)。
因为(2)。
答案:(1)错(2)它使用的是模板技术,追求的是运行的效率,避免了虚函数的开销11.1.2 有两种STL容器:(1)和(2)。
STL不用new和delete,而用(3)实现各种控制内存分配和释放的方法。
答案:(1)第一类容器(2)近容器(3)分配子(allocator)11.1.3 五种主要迭代子类型为(1)、(2)、(3)、(4)和(5)。
STL算法用(6)间接操作容器元素。
sort算法要求用(7)迭代子。
答案:(1)输入(InputIterator)(2)输出(OutputIterator)(3)正向(ForwardIterator)(4)双向(BidirectionalIterator)(5)随机访问(RandomAccessIterator)(6)迭代子(7)随机访问(RandomAccessIterator)11.1.4 三种STL容器适配器是(1)、(2)和(3)。
答案:(1)stack(栈)(2)queue(队列)(3)priority_queue(优先级队列)11.1.5 成员函数end()得到容器(1)的位置,而rend得到容器(2)的位置。
算法通常返回(3)。
答案:(1)最后一个元素的后继位置(2)引用容器第一个元素的前导位置。
实际上这是该容器前后反转之后的end()(3)迭代子11.1.6 适配器是(1),它依附于一个(2)容器上,它没有自己的(3)函数和(4)函数,而借用其实现类的对应函数。
答案:(1)不独立的(2)顺序(3)构造函数(4)析构函数11.1.7 返回布尔值的函数对象称为(1),默认的是(2)操作符。
答案:(1)谓词(predicate)(2)小于比较操作符“<”11.1.8C++标准库中给出的泛型算法包括(1)种算法。
c语言第11章-结构体与共用体
}
§11.6 构造体和指针
ma指in向() 构造体变量旳指针
{ s❖tr定uc义t st形ud式en:t struct 构造体名 *构造体指针名; { 例lonsgtruicntt sntuudmen;t *p; char name[20]; ❖使str用ucch构tars造tsued体xe;n指t 针变存量储引构用造组体p员变形量式在内存旳起始地址
struct student stu1={112,“Wang Lin”,‘M’,19, “200 Beijing Roa
形式二:
struct 构造体名
{ 类型标识符 组员名; 类型标识符 组员名;
……………. }构造体变量={初始数据};
例 struct student { int num; char name[20]; char sex; int age; char addr[30]; }stu1={112,“Wang Lin”,‘M’,19, “200 Beijing Road”
❖用构造体变量旳组员作参数----值传递 ❖用指向构造体变量或数组旳指针作参数----地址传递 ❖用构造体变量作参数----多值传递,效率低
例 用构造体变量作函数参数
(main)
struct data { int a, b, c; };
accacbbb::::::::2332333370070
main()
}
指向构造体数组旳指针
例 指向构造体数组旳指针
struct student { int num;
char name[20]; char sex; int age;
p num
name
sex
p+1
age
结构体练习题
结构体练习题:第1 题:计算日期的差值(1)编写一函数,计算两个日期之间的时间差,并将其值返回。
日期以年、月、日表示。
“时间差”以天数表示。
注意考虑日期之间的闰年。
函数的输入参数为日期1和日期2,函数的返回值为时间差,单位为天数。
(2)编写一程序,在主函数中输入两个日期,调用上述函数计算两个日期之间的时间差,并将结果输出。
为了计算简便,假设用户输入的日期1总是早于日期2。
参考代码:#include<stdio.h>struct date{int year;int month;int day;};int isLeap(int year);int dif(struct date a, struct date b);void main(){struct date a, b;printf("请输入日期1(空格分隔,年月日):\n");scanf("%d%d%d", &a.year, &a.month, &a.day);printf("请输入日期2(空格分隔,年月日,晚于日期1):\n");scanf("%d%d%d", &b.year, &b.month, &b.day);printf("相差天数为:");printf(" %d 天\n", dif(a, b));}int isLeap(int year) //判断一个年份是否是闰年的函数{if(year%400==0 || (year%4==0 && year%100!=0))return 1;elsereturn 0;}int dif(struct date a, struct date b){int i;long day=0, day1=0, day2=0;intd[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,3 1,31,30,31,30,31}};// day变量为年份a到年份b前一年的年份总天数for(i=a.year; i<b.year; i++)if(isLeap(i))day += 366;elseday += 365;// day1变量为年份a年初到当天的年内总天数for(i=1; i<a.month; ++i)day1 += d[isLeap(a.year)][i];day1 += a.day;// day1变量为年份b年初到当天的年内总天数for(i=1; i<b.month; ++i)day2 += d[isLeap(b.year)][i];day2 += b.day;return day + day2 - day1;}参考截图:第2 题:结构体数组应用请定义一个描述学生基本信息的结构,包括姓名,学号,籍贯,身份证号,年龄,家庭住址,性别,联系方式等。
结构体与共用体-专项练习题
软件学院专业课集训营资料-结构体与共用体专项练习题1.设有以下说明语句:struct ex{ int x;float y;char z;} example;则下面的叙述中不正确...的是A. struct是结构体类型的关键字B. example是结构体类型名C. x,y,z都是结构体成员名D. struct ex是结构体类型名2.设有以下说明语句typedef struct data{ int n;char ch[8];} PER;则下面叙述中正确的是A. struct data是结构体变量名B. PER是结构体类型名C. typedef struct 是结构体类型D. struct 是结构体类型名3.在程序VC6.0下,若有如下定义:struct data{ int i;char ch;double f;} b;则结构体变量b占用内存的字节数是A. 13B. 3C. 8D. 114.以下程序在VC6.0下的运行结果是#include <stdio.h>main(){ struct date{ int year,month,day; }today;printf("%d\n",sizeof(struct date)); }A. 6B. 8C. 10D. 125.设有如下定义:struct sk{ int a;float b;} data,*p;若有p=&data,则对data中的成员a的正确引用是A. (*p).data.aB.(*p).aC. p->data.aD. p.data.a6.以下对结构体变量stu1中成员age的非法..引用的是struct student{ int age;int num;}stu1,*p=&stu1;A. stu1.ageB. student.ageC. p->ageD.(*p).age7.有以下说明和语句:struct worker{ int no;char *name;} work,*p=&work;则以下引用方式不正确...的是A.work.no B. (*p).no C. p->no D. work->no 8.已知有如下定义:struct a{ char x;double y;} data,*t;,若有t=&data,则对data中的成员的正确引用是A. (*t).data.xB. (*t).xC. t->data.xD. t.data.x9.设有如下定义: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;10.下列程序的输出结果是#include <stdio.h>struct 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);}A. 5B. 6C. 7D. 811.下面程序的运行结果是#include <stdio.h>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. 0B. 1C. 3D. 612.若有以下说明和语句,则下面表达式中的值为1002的是struct student{ int num;int age;};struct student stu[3]={{1001,20},{1002,19},{1003,21}};struct student *p;p=stu;A.(p++)->ageB.(++p)->numC.(*p).numD.(*++p).age13.根据下面的定义,能打印出字母M的语句是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[0]);B. printf("%c\n",class[3].name[1]);C. printf("%c\n",class[2].name[1]);D. printf("%c\n",class[2].name[0]);14.若有以下程序段:#include <stdio.h>struct dent{ int n;int *m;};int a=1,b=2,c=3;struct dent s[3]={{101,&a},{102,&b},{103,&c}};main(){ struct dent *p;p=s; ……}则以下表达式值为2是A. (p++)->mB. *(p++)->mC. (*p).mD. *(++p)->m15.C语言结构体类型变量在程序执行期间A. 所有成员一直驻留在内存中B. 只有一个成员驻留在内存中C. 部分成员驻留在内存中D. 没有成员驻留在内存中16.C语言共用体类型变量在程序运行期间A. 所有成员一直驻留在内存中B. 只有一个成员驻留在内存中C. 部分成员驻留在内存中D. 没有成员驻留在内存中17.在说明一个联合体变量时,系统分配给它的存储空间是A. 该联合体中第一个成员需存储空间B. 该联合体中最后一个成员所需存储空间C. 该联合体中占用最大存储空间的成员所需存储空间D. 该联合体中所有成员所需存储空间的总和18.以下程序在VC6.0下的运行结果是#include <stdio.h>main(){ union{ long a;int b;char c;} m;printf("%d\n",sizeof(m)); }A. 2B. 4C. 6D. 819.以下程序的输出结果是#include <stdio.h>union myun{ struct{ int x,y,z; } u;int k;} a;main(){ a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf("%d\n", a.u.x);}A. 4B. 5C. 6D. 020.结构体变量成员的引用方式是使用运算符21.结构体指针变量成员的引用方式是使用运算符。
第11章 结构体练习题PPT教学课件
D.p.data.a
5. 有以下程序输出结果是(B )。
#include<stdio.h>
struct stu
{ int num;
char name[10];
int age; };
void fun(struct stu *p)
{ print("%s\n",(*p).name); }
void main()
{ char name[9]; int age; };
struct person class[10]={ "John", 17,
"Paul", 19, "Mary", 18, "Adam", 16, };
2020/12/11
1
3、 有以下说明和定义语句
struct student
{ int age; char num[8];};
}a;
2020/12/11
5
10.设有如下说明语句:
struct ex
{ int x;float y; char z;} example;
则下面的叙述中不正确的是_____B___。
A)struct 是结构体类型的关键字 B)example是结构体类型名
C)x、y、z都是结构体成员名
D)struct ex是结构体类
11.设有如下定义:
struct ss
{ char name[10];
int age;
char sex;
}std[3],*p=std;
下面各输入语句中错误的是______B__。
A)scanf("%d",&(*p).age); B)scanf("%s",&);
2020年智慧树知道网课《软件工程方法与实践》课后习题章节测试满分答案
第一章测试1【单选题】(1分)软件产品与物质产品有很大区别,软件产品是一种()产品。
A.文档B.消耗C.有形D.逻辑2【单选题】(1分)软件会逐渐退化而不会磨损,其原因在于()。
A.软件通常发生在使用之后B.软件备件很难订购C.软件通常暴露在恶劣的环境下D.不断的变更使组件接口之间引起3【单选题】(1分)软件工程要解决的问题是()。
A.加快软件开发速度B.降低软件开发成本C.以上都是D.提高软件质量4【单选题】(1分)软件工程的基本要素包括方法、工具和()。
A.硬件环境B.软件系统C.人员D.过程5【多选题】(1分)软件一般包括以下()部分。
A.数据B.规程C.程序D.文档第二章测试1【单选题】(1分)基于计算机系统的元素包括软件、硬件、人员、数据库、文档和()。
A.规范B.规程C.规则D.过程2【单选题】(1分)基于计算机的系统本身可以成为一个更大的基于计算机系统中的一个()。
A.软件B.元素C.文档D.硬件3【单选题】(1分)经济可行性分析中的效益包括经济效益和()效益。
A.环境B.成本C.消耗D.社会4【多选题】(1分)在基于计算机系统的元素中,硬件包括()。
A.提供外部世界功能的电子机械设备(如传感器、马达等)B.打印、复印设备C.提供计算能力的电子设备D.支持数据流的互连设备(如网络交换器、电信设备)5【多选题】(1分)系统工程的任务包括()。
A.成本估算及进度安排B.生成系统规格说明C.识别用户的要求D.系统建模和模拟E.可行性分析第三章测试1【单选题】(1分)在软件生存周期中,()阶段主要任务是“弄清楚要做什么?”。
A.需求分析B.软件测试C.软件设计D.编码实现2【单选题】(1分)通常将软件生命周期划分为系统工程、需求分析、软件设计、编码实现、软件测试、运行维护等阶段,每个阶段都有各自侧重的任务和目标,以下不属于需求分析阶段的任务是()。
A.弄清楚怎么做,规划系统体系结构B.弄清楚需要做什么C.通过调研等方式获取需求D.编制软件需求规格说明书3【单选题】(1分)需求规格说明描述了()。
智慧树知到《C君带你玩编程》章节测试答案
第一章单元测试1【判断题】(1分)将C程序编译成目标文件,其扩展名为EXE。
----错2【判断题】(1分)main函数是C程序的入口,由计算机系统负责调用。
----对3【判断题】(1分)变量必须先定义后使用。
----对4【单选题】(2分)C语言是一种()。
----高级语言5【单选题】(2分)在C源程序中,整型常量不能表示的数制是()。
----八进制6【单选题】(2分)若已定义charc='a',则变量c所占的字节数为__________ 。
----1第二章单元测试1【判断题】(1分)二元运算符均可以和赋值运算符构成复合的赋值运算符。
----对2【判断题】(1分)表达式1/4+2.75的值是3。
----错----scanf('%d,%d,%d',&i,&j,&k);4【单选题】(2分)以下叙述中正确的是______。
----使用putchar函数时,必须在之前包含头文件stdio.h5【单选题】(2分)设有定义:intx=2;,以下表达式中,值不为6的是()。
----2*x,x+=2第三章单元测试1【判断题】(1分)所有关系运算符的运算优先级相同。
----错2【判断题】(1分)关系运算符是双目运算符,其功能是将两个运算对象进行大小比较。
----对3【判断题】(2分)当a=1,b=2,c=3时,执行语句“if(a>c){b=a;a=c;c=b;}”后,变量c中的值为2。
----错4【单选题】(2分)为表示关系100≥b≥0,应使用C语言表达式______。
----(100>=b)&&(b>=0)5【判断题】(1分)else子句不能单独作为语句使用,它是if语句的一部分,必须与if配对使用。
----对第四章单元测试1【判断题】(1分)在循环外的语句不受循环的控制,在循环内的语句也不受循环的控制。
----错2【判断题】(1分)循环for(;;)的循环条件始终为真。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)()是关于C语言数据类型的正确叙述。
A) 枚举类型不是基本类型
B) 变量使用前应定义相应的数据类型
C) 不允许使用空类型
D) 数组不是构造类型
(2) 下列()对结构类型变量定义是错误的。
A) struct teacher
{ int num;
int age;
};
struct teacher teach1;
B) struct
{ int num;
int age;
} teach1, teach2;
C) struct
{ int num;
int age;
} teacher;
struct teacher teach1;
D) struct teacher
{ int num;
int age;
} teach1;
(3) 若有定义:
char ch;
int j,k;
enum day {sun, mon, tue, wed, thu, fri, sat};
int a[sat];
则()对下列语句是否符合语法规则的判断是正确的。
sun=0; /*语句1*/
j=mon+tue; /*语句2*/
if (a[mon]>0) j++; /*语句3*/
A) 语句1、2、3均正确
B) 语句2正确,语句1和语句3错误
C) 语句1错误,语句2和语句3正确
D) 语句1、2、3均错误
(4) 若有定义:
struct teacher
{ int num;
char sex;
int age;
} teacher1;
则下面叙述错误的是()。
A) teacher1是结构类型名
B) struct teacher是用户定义的结构类型
C) num、sex、age都是结构变量teacher1的成员
D) struct是结构类型的关键字
(5) 下列程序段运行后,表达式()的值为3。
struct point
{ int x;
int y;
} *p;
struct point a[3]={1,2,3,4,5,6};
p=a;
A) p[1].x
B) *(p+2)
C) p[3].x
D) p[2].x
(6) 若有定义:
typedef int NUM[100];
NUM n;
则()语句是正确的。
A) n[0]=2;
B) NUM=2;
C) NUM=n;
D) n=2;
(7) 若有定义int a=1,b=2,t=3;
struct data
{ char a;
float b[3];
long c;
}d1;
则变量d1的长度是()。
A) 4
B) 17
C) 12
D) 15
(8) 若有定义
struct teacher
{ int num;
char name[10];
char sex;
int age;
}t1={2001,”Li Ming”,’M’,35};
则下列()对结构变量引用是正确的。
A) t1->name
B)
C) [0]
D) t1->name[0]
(9) 若有定义enum day{sun,mon,tue,wed,thu,fri,sat};,则枚举常量sun、mon的值分别为()。
A) 0 1
B) 7 1
C) 7 0
D) 1 2
(10) 若有定义
union u_type
{ int x;
float y[3];
char z;
}a;
则变量a的长度是()
A) 4
B) 1
C) 15
D) 12
(11)()对枚举类型的定义是错误的。
A) enum b{1,2,3};
B) enum a{A,B,C};
C) enum d{X=0,Y=5,Z=9};
D) enum c{D=3,E,F};
(12) 以下程序段的运行结果是()。
union
{ int num1;
int num2;
}s;
s.num1=20;
s.num2=30;
printf(“%d”,s.num1);
A) 2030
B) 20
C) 50
D) 30
(13) 若有定义
Typedef int * INTEGER;
INTEGER p;
则下面叙述正确的是()
A) p是与INTEGER相同的类型
B) 程序中可用INTEGER定义int类型指针变量
C) p是一个整型变量
D) 程序中可用INTEGER定义int类型变量
(14) 若有定义:enum num{a1,a2=3,a3,a4=0};,则枚举常量a2、a3的值分别为()。
A) 2 3
B) 3 4
C) 3 3
D) 1 2
(15) 下列程序段的运行结果是()。
union data
{
int a;
char b;
} data1;
data1.b=’A’;
data1.a++;
printf(“%c\n”,data1.b);
A、66
B、65
C、B
D、A
(16) 若已定义:
struct teacher
{ int num;
char name[20];
} t1,*p=&t1;
下列对结构变量t1中成员num合法的引用是()。
A、teacher.num
B、t1->num
C、p->num
D、*p.num
(17) 以下语句正确的是()。
A、typedef INTEGER int;
B、typedef INTEGER=int;
C、typedef int INTEGER;
D、typedef INTEGER:int;
(18) 下列不属于C语言数据类型的是()。
A、枚举类型
B、复数类型
C、双精度型
D、长整型
(19) 以下程序段的运行结果是()。
union
{
int x;
float y;
char c;
} m,n;
m.x=5;
m.y=7.5;
m.c=’A’;
n.x=8;
printf("%d",m.x);
}
A) 5
B) 8
C) 7.5
D) 65
(20) 若已定义:
struct student
{
int num;
float score;
} stu[2]={{101, 85.5},{102, 90.0}},*p=stu;
下列对结构体数组引用错误的是()。
A、(*p).num
B、stu[0].num
C、p[1]->num
D、p->num。