搜档网
当前位置:搜档网 › (1)定义结构体的关键字是

(1)定义结构体的关键字是

(1)定义结构体的关键字是
(1)定义结构体的关键字是

(1)定义结构体的关键字是

摘要:(1) 定义结构体的关键字是,定义共用体的关键字是.(2) 结构体和共用体的相同点是,不同点是.(3) 若有以下定义和语句,则sizeof(a)的值是__ ___,...

关键词:关键字

类别:专题技术

来源:牛档搜索(https://www.sodocs.net/doc/f88716277.html,)

本文系牛档搜索(https://www.sodocs.net/doc/f88716277.html,)根据用户的指令自动搜索的结果,文中内涉及到的资料均来自互联网,用于学习交流经验,作品其著作权归原作者所有。不代表牛档搜索(https://www.sodocs.net/doc/f88716277.html,)赞成本文的内容或立场,牛档搜索(https://www.sodocs.net/doc/f88716277.html,)不对其付相应的法律责任!

1. 填空题

(1) 定义结构体的关键字是,定义共用体的关键字是。

(2) 结构体和共用体的相同点是,不同点是。

(3) 若有以下定义和语句,则sizeof(a)的值是__ ___,而sizeof(b)的值是__ _。struct tu

{ int m; char n; int y;}a;

struct

{ float p, char q; struct tu r} b;

(4) 设有下面结构类型说明和变量定义,则变量a在内存所占字节数是。如果将该结构改成共用体,结果为。

struct stud

{ char num[6]; int s[4]; double ave; } a;

(5) 下面程序用来输出结构体变量ex所占存储单元的字节数,请填空。

struct st

{ char name[20]; double score; };

main()

{ struct st ex ; printf("ex size: %d\n",sizeof( )); }

(6) 下面定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。

struct node

{ int info; link; }

(7) 以下程序执行后输出结果是。

main()

{ union { unsigned int n; unsigned char c; } u1;

u1.c='A'; printf("%c\n",u1.n); }

(8) 变量root如图所示的存储结构,其中sp是指向字符串的指针域,next是指向该结构的指针域,data用以存放整型数。请填空,完成此结构的类型说明和变量root的定义。

root

struct

{ char *sp ; __ __; _ _; } root;

2. 阅读下面的程序,写出程序结果

(1)

struct info

{ char a,b,c;};

main()

{ struct info s[2]={{‘a’,‘b’,‘c’},{‘d’,‘e’,‘f’}};int t;

t=(s[0].b-s[1].a)+(s[1].c-s[0].b);

printf("%d\n",t); }

(2)

void main()

{ union { char i[2]; int k; } stu;

stu.i[0]='2'; stu.k=0;

printf("%s,%d\n",stu.i,stu.k);

}

(3)

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); }

3. 程序设计题

(1)设计一个程序,用结构类型实现两个复数相加。

(2)定义一个结构类型变量(包括年、月、日)实现:输入一个日期显示它是该年第几天。

结构体定义区

/******************** * 结构体定义区 * ********************/ typedef struct PID { int16_t pConst; // 比例常数 Proportional Const int16_t iConst; // 积分常数 Integral Const int16_t dConst; // 微分常数 Derivative Const int16_t position; int16_t hisPosition; int16_t lastPosition[10]; }PID; /*********************************************************** * 函数名称:PID参数初始化 * 功能描述:初始化PID参数,并实现P、I、D三个参数的整定 * 参数列表: * 返回结果:无 ***********************************************************/ void PIDInit(PID *iPID) { memset(iPID, 0, sizeof(iPID)); //将所有值清零 iPID->pConst = 2; // 比例常数 Proportional Const iPID->iConst = 0; // 积分常数 Integral Const iPID->dConst = 8; // 微分常数 Derivative Const } /*********************************************************** * 函数名称:PID控制程序 * 功能描述: * 参数列表: * 返回结果:无 ***********************************************************/ void PIDCalc( PID *cPID) { int16_t pGain; //P增益

C语言自定义数据类型

自定义数据类型 结构体 结构体是程序员在程序中自定义的一种数据类型,在说明和使用之前必须先定义它,也就是构造它。定义一个结构体的语法格式如下: Struct 结构体类型名 { 成员1的数据类型名成员1名称; 成员2的数据类型名成员2名称; . . 成员n的数据类型名成员n名称; }结构体变量表={成员初始化}; 注意成员可以由若干个不同的数据类型组成,每个成员也可以是结构体,即可以嵌套定义。 例如: Struct student { Long num; Char name; Char sex; Float score; }; 已经定义的某种结构体类型可以视为一种标准的数据类型,它的使用方法与标准数据类型使用方法相同,可以用来定义变量、数组、指针。 结构体变量说明 结构体变量的说明在程序的变量说明部分给出,一般在结构定义之后,它的语法格式如下: Struct 结构类型名结构变量名表; 例如: Struct student stu; 指出了结构变量stu是student类型的变量,它由四个成员组成,每个成员的数据类型和名字都与student结构定义中给出的相同。系统完全按照结构定义时制定的内存模式为结构变量分配内存空间。 可以在定义结构体类型的同时给出结构体变量。 Struct student { Long num; Cha name[20]; Cha sex; Float score; }stu1,stu2; 这种形式与前面给出的结构定义和结构说明分开处理效果相同。

结构体成员访问 结构体成员是通过结构体变量名和成员名进行访问的,不能把他作为一个整体进行访问。其访问格式如下: 结构体变量名.成员名 其中运算符.是成员访问运算符,其运算级别是最高的,和圆括号运算符()、下标运算符[]是同一级别的。如果结构体成员是指针变量,则访问格式为: *https://www.sodocs.net/doc/f88716277.html, 如果某个结构体变量的成员数据类型又是一个结构体,则访问方式为: 外层结构体变量名.外层成员名.内层成员名 可以在定义结构体变量的同时对结构体变量初始化。 {结构体成员}结构体变量={初始数据}; struct student { long num; char name[20]; char sex; float score; } stu1={200401L,"ZhangHong",'f',92.5f}; 对于嵌套的结构体类型数据,访问格式为: 结构体变量名1.结构体变量名2.成员名 结构体变量初始化的格式如下: struct 结构体名 {结构体成员}结构体变量={初始数据}; 初始数据类型必须与结构成员的数据类型相匹配,并且先后顺序一一对应赋值。 要对结构体变量的成员地址进行访问,其语法格式为: &结构体变量.成员名 当一个指针变量用来指向一个结构变量时,称为结构体指针变量。结构体指针变量中的值是所指向的结构体变量的首地址。 结构体指针变量: Struct 结构名*结构体指针变量名 Struct student *pstu; 必须先赋值后使用,把结构体变量的首地址赋给指针变量,不能把结构名或结构体变量名赋给指针变量。 pstu=&stu1; 结构体名和结构体变量是两个不同的概念,结构体名只能表示一个结构形式,编译系统并不对它分配内存空间,只有当某变量被说明为这种类型的结构时,才对该变量分配存储空间。这是因为结构体变量被定义后相当于标准数据类型被使用。 利用结构体指针变量访问成员如下: (*结构体指针变量).成员名 或者: 结构体指针变量->成员名 后一种形式较为方便,容易区分。

结构体的使用方法

下面介绍了结构体的创建和使用方法: 创建过程: 定义一个名字为addr_t的结构体,其内容为名位addr的数组,数组大小为NET_ADDR_SIZE。 typedef struct { addr_t *addr;//地址 u8 *msg;//信息 u8 len;//信息长度 u8 port;//端口 } ioctlRawSend_t;//发送信息结构体 定义一个名字为ioctlRawSend_t的结构体,其内容为一个结构体,一个无符号类型指针和两个无符号数。将内容中的结构体代入这个结构体类型中,其内容可以写成(这样写只是为了看得更清晰) typedef struct { u8 addr[NET_ADDR_SIZE];//地址 u8 *msg;//信息 u8 len;//信息长度 u8 port;//端口 } ioctlRawSend_t;//发送信息结构体 这是一个联合体(共用体),很好理解,就是把两个结构体成员(ioctlRawSend_t,ioctlRawReceive_t)放在了一起用同一个名字(ioctl_info)表示,成员占用相同的内存单元,其中内容同步变化。 从变量观察窗口我们可以看到变量是如何组织在一起的。

到现在就从最基础的数组组成了一个联合体,下面我们使用它。 下面的语句中显示了如何向刚才建立的联合体中写要求的数据。 下面进行逐句分析 第一行中写广播地址(具体数字可以认为变动,一般为{0xFF,0xFF,0xFF,0xFF})到联合体中的 发送地址中。下面是变量窗口中发生的变化(红色表示变化)。

接下来的一句为向信息中填充内容,下面是变量观察窗口的变化。其中msg只显示0号元素,是因为它是一个指针,指向的是首地址,其实其他的内容也已经变化。

c语言结构体用法(转载)

C语言,结构体(struct) 用法 结构(struct) 结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 结构中可以使用不同的数据类型。 1. 结构说明和结构变量定义 在T urbo C中, 结构也是一种数据类型, 可以使用结构变量, 因此, 象其它 类型的变量一样, 在使用结构变量时要先对其定义。 定义结构变量的一般格式为: struct 结构名 { 类型变量名; 类型变量名; ... } 结构变量; 结构名是结构的标识符不是变量名。 类型为第二节中所讲述的五种数据类型(整型、浮点型、字符型、指针型和 无值型)。 构成结构的每一个类型变量称为结构成员, 它象数组的元素一样, 但数组中 元素是以下标来访问的, 而结构是按变量名字来访问成员的。

下面举一个例子来说明怎样定义结构变量。 struct string { char name[8]; int age; char sex[2]; char depart[20]; float wage1, wage2, wage3, wage4, wage5; } person; 这个例子定义了一个结构名为string的结构变量person, 如果省略变量名 person, 则变成对结构的说明。用已说明的结构名也可定义结构变量。这样定义 时上例变成: struct string { char name[8]; int age; char sex[2]; char depart[20]; float wage1, wage2, wage3, wage4, wage5; }; struct string person; 如果需要定义多个具有相同形式的结构变量时用这种方法比较方便, 它先作 结构说明, 再用结构名来定义变量。 例如: struct string T ianyr, Liuqi, ...; 如果省略结构名, 则称之为无名结构, 这种情况常常出现在函数内部, 用这 种结构时前面的例子变成:

结构体的定义及初始化

?结构体类型定义 struct [结构体名] { 类型标识符成员名; 类型标识符成员名; ……………. };成员类型可以是基本型或构造型 struct是关键字,不能省略合法标识符 可省:无名结构体 结构体的说明及结构体变量的定义

例struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; name num sex age score addr 2字节 2字节 20字节 1字节 4字节 30字节 … ….. 结构体类型定义描述结构 的组织形式,不分配内存 例子图解

?结构体类型定义 struct [结构体名] { 类型标识符成员名; 类型标识符成员名; ……………. };成员类型可以是基本型或构造型 struct是关键字,不能省略合法标识符 可省:无名结构体 结构体的说明及结构体变量的定义

(1) 在结构体说明的同时定义结构体变量,例如:struct example { char *name; int age; }guo,zhang;(2)直接定义结构体变量,例如: struct {char *name; int age; }guo,zhang 未给 出结 构体 名 (3) 把定义和说明分开,例如:struct example { char *name; int age; }; struct example guo,zhang;结构体变量占用内存的大小可用sizeof()运算来求出 ?结构体变量的定义

结构体的说明及结构体变量的定义?变量说明形式 struct 结构体名结构体变量名; ?注意: 结构变量的存储类型概念、它的寿命、可见 性及使用范围与普通变量、数组等完全一致。 结构体变量说明必须在结构类型定义之后, 二者也可同时进行。

C语言结构体习题及答案

第9章结构体 1.定义以下结构体类型 struct s { int a; char b; float f; }; 则语句printf("%d",sizeof(struct s))的输出结果为【】。 A) 3 B) 7 C) 6 D) 4 2.当定义一个结构体变量时,系统为它分配的内存空间是【】 A)结构中一个成员所需的内存容量 B)结构中第一个成员所需的内存容量 C)结构体中占内存容量最大者所需的容量 D)结构中各成员所需内存容量之和 3.定义以下结构体类型 struct s { int x; float f; }a[3]; 语句printf("%d",sizeof(a))的输出结果为【】 A) 4 B) 12 C) 18 D) 6 4.定义以下结构体数组 struct c { int x; int y; }s[2]={1,3,2,7}; 语句printf("%d",s[0].x*s[1].x)的输出结果为【】 A) 14 B) 6 C) 2 D) 21 5.运行下列程序段,输出结果是【】 struct country { int num; char name[10]; }x[5]={1,"China",2,"USA",3,"France",4, "England",5, "Spanish"}; struct country *p; p=x+2; printf("%d,%c",p->num,(*p).name[2]); A) 3,a B) 4,g C) 2,U D) 5,S

6.下面程序的运行结果是【】。 struct KeyWord { char Key[20]; int ID; }kw[]={"void",1,"char",2,"int",3,"float",4,"double",5}; main() { printf("%c,%d\n",kw[3].Key[0], kw[3].ID); } A) i,3 B) n,3 C) f,4 D) l,4 7.定义以下结构体类型 struct student { char name[10]; int score[50]; float average; }stud1; 则stud1占用内存的字节数是【】。 A) 64 B) 114 C) 228 D) 7 8.如果有下面的定义和赋值,则使用【】不可以输出n中data的值。struct SNode { unsigned id; int data; }n,*p; p=&n; A) p.data B) n.data C) p->data D) (*p).data 9.根据下面的定义,能输出Mary的语句是【】。 struct person { char name[9]; int age; }; struct person class[5]={"John",17,"Paul",19,"Mary",18,"Adam",16}; A) printf("%s\n",class[1].name); B) printf("%s\n",class[2].name); C) printf("%s\n",class[3].name);

(1)定义结构体的关键字是

(1) 定义结构体的关键字是,定义共用体的关键字是。 (2) 结构体和共用体的相同点是,不同点是。 (3) 若有以下定义和语句,则sizeof(a)的值是__ ___,而sizeof(b)的值是__ _。struct tu { int m; char n; int y;}a; struct { float p, char q; struct tu r} b; (4) 设有下面结构类型说明和变量定义,则变量a在内存所占字节数是。如果将该结构改成共用体,结果为。 struct stud { char num[6]; int s[4]; double ave; } a; (5) 下面程序用来输出结构体变量ex所占存储单元的字节数,请填空。 struct st { char name[20]; double score; }; main() { struct st ex ; printf("ex size: %d\n",sizeof( )); } (6) 下面定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。 struct node { int info; link; } (7) 以下程序执行后输出结果是。 main() { union { unsigned int n; unsigned char c; } u1; u1.c='A'; printf("%c\n",u1.n); } (8) 变量root如图所示的存储结构,其中sp是指向字符串的指针域,next是指向该结构的指针域,data用以存放整型数。请填空,完成此结构的类型说明和变量root的定义。 root struct { char *sp ; __ __; _ _; } root; 2. 阅读下面的程序,写出程序结果 (1) struct info { char a,b,c;}; main() { struct info s[2]={{‘a’,‘b’,‘c’},{‘d’,‘e’,‘f’}};int t; t=(s[0].b-s[1].a)+(s[1].c-s[0].b); printf("%d\n",t); } (2)

C语言-基础教程-结构体类型变量的定义和引用

C语言-基础教程-结构体类型变量的定义和引用 前面的课程我们学习了一些简单数据类型(整型、实型、字符型)的定义和应用,还学习了数组(一维、二维)的定义和应用,这些数据类型的特点是:当定义某一特定数据类型,就限定该类型变量的存储特性和取值范围。对简单数据类型来说,既可以定义单个的变量,也可以定义数组。而数组的全部元素都具有相同的数据类型,或者说是相同数据类型的一个集合。 在日常生活中,我们常会遇到一些需要填写的登记表,如住宿表、成绩表、通讯地址等。 在这些表中,填写的数据是不能用同一种数据类型描述的,在住宿表中我们通常会登记上姓名、性别、身份证号码等项目;在通讯地址表中我们会写下姓名、邮编、邮箱地址、电话号码、E - m a i l等项目。这些表中集合了各种数据,无法用前面学过的任一种数据类型完全描述,因此C引入一种能集中不同数据类型于一体的数据类型-结构体类型。结构体类型的变量可以拥有不同数据类型的成员,是不同数据类型成员的集合。 在上面描述的各种登记表中,让我们仔细观察一下住宿表、成绩表、通讯地址等。 住宿表由下面的项目构成: 这些登记表用C提供的结构体类型描述如下: 住宿表: suct accommod { char name[20]; / *姓名* / char sex; / *性别* / char job[40]; / *职业* / int age; / *年龄* / long number; / *身份证号码* / } ; 成绩表: suct score

{ char grade[20]; / * 班级* / long number; / * 学号* / char name[20]; / *姓名* / float os; / *操作系统* / float datasu; / * 数据结构* / float compnet; / * 计算机网络* / } ; 通讯地址表: suct addr { char name[20]; char department[30];/ * 部门* / char address[30]; / *住址* / long box; / * 邮编* / long phone; / * 电话号码* / char email[30]; / * E m a i l * / };

c语言结构体定义结构体

c语言结构体定义结构体 代码1 定义结构体_m_usmart_devstruct _m_usmart_dev{struct _m_usmart_nametab *funs;//函数名指针 void (*init)(u8);//初始化u8 (*cmd_rec)(u8*str);//识别函数名及参数void (*exe) (void); //执行void (*scan)(void); //扫描u8 fnum; //函数数量u8 pnum; //参数数 量u8 id;//函数idu8 sptype;//参数显示类型(非字符串参数):0,10 进制;1,16 进制; u16 parmtype;//参数的类型u8 plentbl[MAX_PARM]; //每个参数的长度暂存表u8 parm[PARM_LEN]; //函数的参数}; 代码2 定义_m_usmart_dev 类型的结构体并对其赋初始值 struct _m_usmart_dev usmart_dev={usmart_nametab,usmart_init,usmart_cmd_rec,usmart_exe,usmart_scan, sizeof(usmart_nametab)/sizeof(struct _m_usmart_nametab),//函数数量0, //参数数 量0, //函数ID1,//参数显示类型,0,10 进制;1,16 进制0,//参数类型.bitx:,0,数字;1, 字符串0, //每个参数的长度暂存表,需要MAX_PARM 个0 初始化0,//函数的参 数,需要PARM_LEN 个0 初始化}; 上边代码可理解为 struct _m_usmart_dev{struct _m_usmart_nametab *funs;//函数名指针 void (*init)(u8);//初始化u8 (*cmd_rec)(u8*str);//识别函数名及参数void (*exe) (void); //执行void (*scan)(void); //扫描u8 fnum; //函数数量u8 pnum; //参数数 量u8 id;//函数idu8 sptype;//参数显示类型(非字符串参数):0,10 进制;1,16 进制; u16 parmtype;//参数的类型u8 plentbl[MAX_PARM]; //每个参数的长度暂存表u8 parm[PARM_LEN]; //函数的参数} usmart_dev={usmart_nametab,usmart_init,usmart_cmd_rec,usmart_exe,usmart_scan,

C语言结构体(struct)常见使用方法

C语言结构体(struct)常见使用方法 基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量。 结构体定义: 第一种:只有结构体定义 [cpp]view plain copy 1.struct stuff{ 2.char job[20]; 3.int age; 4.float height; 5.}; 第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义 [cpp]view plain copy 1.//直接带变量名Huqinwei 2.struct stuff{ 3.char job[20]; 4.int age; 5.float height; 6.}Huqinwei; 也许初期看不习惯容易困惑,其实这就相当于: [cpp]view plain copy 1.struct stuff{ 2.char job[20]; 3.int age;

4.float height; 5.}; 6.struct stuff Huqinwei; 第三种:如果该结构体你只用一个变量Huqinwei,而不再需要用 [cpp]view plain copy 1.struct stuff yourname; 去定义第二个变量。 那么,附加变量初始化的结构体定义还可进一步简化出第三种: [cpp]view plain copy 1.struct{ 2.char job[20]; 3.int age; 4.float height; 5.}Huqinwei; 把结构体名称去掉,这样更简洁,不过也不能定义其他同结构体变量了——至少我现在没掌握这种方法。 结构体变量及其内部成员变量的定义及访问: 绕口吧?要分清结构体变量和结构体内部成员变量的概念。 就像刚才的第二种提到的,结构体变量的声明可以用: [cpp]view plain copy 1.struct stuff yourname; 其成员变量的定义可以随声明进行: [cpp]view plain copy 1.struct stuff Huqinwei = {"manager",30,185}; 也可以考虑结构体之间的赋值: [cpp]view plain copy

C结构体应用全攻略

C结构体应用全攻略——入门、进阶、提高、扩展 在学习结构体之前,你会很自然的想到使用如下的变量来描述: name, height, weight, strong, modfile。 好了,现在来给Kula和K分别进行描述,你就需要在变量名上加以区分。对于Kula你有了 Kula_name, Kula_height, Kula_weight, Kula_strong, Kula_modfile 对于K,你有了 K_name, K_height, K_weight, K_strong, K_modfile 好,设想你现在要制作KOF2003了,我们需要一个函数根据这些信息在战斗中评价两位选手,这个函数看上去像是这样 int value(char *name, int height, int weight, int strong, char *modfile); 当然在实际测试中一个人物的信息可能不止这几个,也许他有30个之多,我相信你是不会写一个有30个参数的函数的(除非你为Microsoft工作)。更糟糕的是,如果由于版本更新发现30个参数里有15个是多余的,在修改了函数定义之后,你还要修改无数的不只位置函数调用。汗! 现在,结构体来救你了(e文:the struct comes to rescue)。看看如何用结构体定义一个拳皇人物吧。首先我们定义一个结构体类型: struct FIGHTER { char *name; /*元素1*/ int height; /*元素2*/ int weight; /*元素3*/ int strong; /*元素4*/ char *modfile; /*元素5*/

C语言结构体习题及答案知识讲解

C语言结构体习题及 答案

第9章结构体 1.定义以下结构体类型 struct s { int a; char b; float f; }; 则语句printf("%d",sizeof(struct s))的输出结果为【】。 A) 3 B) 7 C) 6 D) 4 2.当定义一个结构体变量时,系统为它分配的内存空间是【】 A)结构中一个成员所需的内存容量 B)结构中第一个成员所需的内存容量 C)结构体中占内存容量最大者所需的容量 D)结构中各成员所需内存容量之和 3.定义以下结构体类型 struct s { int x; float f; }a[3]; 语句printf("%d",sizeof(a))的输出结果为【】 A) 4 B) 12 C) 18 D) 6 4.定义以下结构体数组 struct c { int x; int y; }s[2]={1,3,2,7}; 语句printf("%d",s[0].x*s[1].x)的输出结果为【】 A) 14 B) 6 C) 2 D) 21

5.运行下列程序段,输出结果是【】 struct country { int num; char name[10]; }x[5]={1,"China",2,"USA",3,"France",4, "England",5, "Spanish"}; struct country *p; p=x+2; printf("%d,%c",p->num,(*p).name[2]); A) 3,a B) 4,g C) 2,U D) 5,S 6.下面程序的运行结果是【】。 struct KeyWord { char Key[20]; int ID; }kw[]={"void",1,"char",2,"int",3,"float",4,"double",5}; main() { printf("%c,%d\n",kw[3].Key[0], kw[3].ID); } A) i,3 B) n,3 C) f,4 D) l,4 7.定义以下结构体类型 struct student { char name[10]; int score[50]; float average; }stud1; 则stud1占用内存的字节数是【】。 A) 64 B) 114 C) 228 D) 7 8.如果有下面的定义和赋值,则使用【】不可以输出n中data的值。 struct SNode { unsigned id; int data; }n,*p; p=&n; A) p.data B) n.data C) p->data D) (*p).data 9.根据下面的定义,能输出Mary的语句是【】。

定义多个结构体

定义多个结构体 #include #include struct Weather{ int temp; int day; int outdoor; struct Weather* pNext; }; int main(void) { //连续插入多个结构体的算法过程如下: //1.声明一个结构体指针pLast,这个指针专门指向最后一个结构体struct Weather* pLast =NULL; struct Weather* pNew=NULL; int i=0; //2.向内存申请一个结构体空间,结构体空间地址存储在pLast pLast=(struct Weather*)malloc(sizeof(struct Weather)); //3.从屏幕中输入数据,填充到结构体中 printf("请输入天气情况\n"); printf("天气是周几?:\n"); scanf("%d",&(pLast->day)); printf("温度(单位是摄氏度)是:\n"); scanf("%d",&(pLast->temp)); printf("是否适宜外出(0:表不合适,1:表合适):\n"); scanf("%d",&(pLast->outdoor)); //4.这样就建立了第一个结构体 //5.声明一个结构体指针pNew,这个指针专门指向新的结构体 //6.开始循环 for(i=1;i<=6;i++) { //7.向内存申请一个结构体空间,空间地址存储在pNew中 pNew=(struct Weather* )malloc(sizeof(struct Weather)); //8.从屏幕中输入数据,填充到这个新的结构体空间中 printf("请输入天气数据\n"); printf("天气是周几?:\n"); scanf("%d",&(pNew->day)); printf("天气的温度是:\n"); scanf("%d",&(pNew->temp)); printf("是否适宜外出(0:表不合适,1:表合适):\n");

二级C语言结构体定义及应用部分练习题(十三)(精)

(1)有以下程序段 typedef struct NODE { int num; struct NODE *next; } OLD; 以下叙述中正确的是C A)以上的说明形式非法 B)NODE是一个结构体类型 C)OLD是一个结构体类型 D)OLD是一个结构体变量(2)若有以下说明和定义union dt { int a; char b; double c; }data; 以下叙述中错误的是 C A)data的每个成员起始地址都相同 B)变量data所占内存字节数与成员c所占字节数相等 C)程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000 D)data可以作为函数的实参(3)设有如下说明 typedef struct ST { long a; int b; char c[2]; } NEW; 则下面叙述中正确的是 C A)以上的说明形式非法 B)ST是一个结构体类型 C)NEW是一个结构体类型 D)NEW是一个结构体变量(4)以下对结构体类型变量td的定义中,错误的是 C A)typedef struct aa { int n; float m; }AA; AA td; B)struct aa { int n; float m; } td; struct aa td; C)struct { int n; float m; }aa; struct aa td; D)struct { int n; float m; }td; (5)设有以下语句 typedef struct S { int g; char h;} T; 则下面叙述中正确的是B A)可用S定义结构体变量 B)可以用T定义结构体变量 C)S是struct类型的变量 D)T是struct S类型的变量(6)设有如下说明 typedef struct { int n; char c; double x;}STD; 则以下选项中,能正确定义结构体数组并赋初值的语句是B A)STD tt[2]={{1,'A',62},{2, 'B',75}}; B) STD tt[2]={1,"A",62},2, "B",75}; C) struct tt[2]={{1,'A'},{2, 'B'}}; D)structtt[2]={{1,"A",62.5},{2, "B",75.0}}; (7)设有以下说明语句 typedef struct { int n; char ch[8]; }PER; 则下面叙述中正确的是B A) PER 是结构体变量名 B) PER是结构体类型名 C) typedef struct 是结构体类型 D)struct 是结构体类型名(8)设有以下说明语句 struct ex { int x ; float y; char z ;} example; 则下面的叙述中不正确的是B A) struct结构体类型的关键字 B)example是结构体类型名 C) x,y,z都是结构体成员名 D) struct ex是结构体类型(9)有如下定义 struct person{char name[9]; int age;}; strict person class[10]={“Johu”, 17, “Paul”, 19 “Mary”, 18, “Adam 16,}; 根据上述定义,能输出字母M的语句是D A) prinft(“%c\n”,class[ 3].mane); B) pfintf(“%c\n”,class[3].name[1]); C) prinft (“%c\n”,class[2].n ame[1]); D) printf(“%^c\n”,class[2].name[0]); (10)变量a

实验13结构体的定义、引用与赋初值(精)

实验13 结构体的定义、引用与赋初值 一、实验目的 1.掌握结构体类型和结构体类型变量的定义方法。 2.掌握结构体类型变量成赋值员赋值和引用方法。 3.学会使用结构体数组。 二、实验要求 1.通过阅读和编写程序,掌握结构体类型和结构体类型变量的定义方法。 2.通过阅读和编写程序,掌握结构体类型变量成赋值员赋值和引用方法。 3.通过阅读和编写程序,学会使用结构体数组,以及用结构体类型变量作为函数参数。 三、实验内容 1.阅读程序,指出程序的功能,并写出运行结果。 main () { struct people { char name[11]; int age; }; int i ,j; struct people pe[10]; for ( i=1 ; i<=10; i++ ) { printf ( “ %s %d” ,pe[i] , &pe[i].age ); scanf ( “ %s %d” ,pe[i] , pe[i].age ); } printf (“ Enter a number in range 1----10\n” ); scanf (“ %d ” , &j); printf (“ The %dth person : %s , %d \n ” , j, pe[j].name ,pe[j].age ); } 问: (1)本程序的功能是什么? (2)请自己设计一组数据并输入,写出输出结果。 2 . 设有10个学生,每个学生包括学号、姓名、三门课的成绩。求每个学生的总成绩并输出总分为最高的学生的各门课的成绩及总分。 struct student { int num; char name [10] ; int score [3];

结构体定义 typedef struct 用法详解和用法小结

结构体定义 typedef struct 用法详解和用法小结 typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。 具体区别在于: 若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n; 若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n; 区别就在于使用时,是否可以省去struct这个关键字。 第三篇:struct和typedef struct 分三块来讲述: 1 首先: 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1; 如果没有typedef就必须用struct Student stu1;来声明 这里的Stu实际上就是struct Student的别名。 另外这里也可以不写Student(于是也不能struct Student stu1;了) typedef struct { int a; }Stu; 但在c++里很简单,直接 struct Student { int a; }; 于是就定义了结构体类型Student,声明变量时直接Student stu2; =========================================== 2其次: 在c++中如果用typedef的话,又会造成区别: struct Student { int a; }stu1;//stu1是一个变量 typedef struct Student2 { int a; }stu2;//stu2是一个结构体类型

C语言1-结构体类型概述、结构体类型变量

章节名称结构体类型概述、结构体类型变量 授课类型□理论□实验?理实一体□实训□实习 班级地点周次星期节次授课进度 ?符合□超前□滞后 ?符合□超前□滞后 ?符合□超前□滞后 教学目标知识目标 1.掌握结构体类型的声明方法 2.掌握结构体类型变量的定义、初始化和引用方法能力目标能根据实际需要声明结构体类型 教学重点1.结构体类型的声明方法 2.结构体类型变量的定义、初始化和引用方法 教学难点结构体类型的声明、结构体变量的引用教学方法讲授法、对比法、启发法、练习法 教学手段多媒体、机房电脑、板书 教学资源教材、教学PPT、微课视频、课程网站 教学设计 教学环节内容要点教学方法 与手段 时间 分配 导入 前面已经学习了基本类型(整型、实型、字符型)和一种构造类型——数 组,数组是将相同类型的多个数据组合在一起。在实际问题中,一组数据往 往具有不同的数据类型。例如,在学生成绩表中,一个学生的学号为整型、 姓名为字符型、成绩为实型,显然不能用一个数组将某个学生的这些数据组 合在一起。为解决这一问题,用户可以建立由不同类型数据组成的组合型数 据结构——结构体。 5 新课教学一、结构体类型的声明:关键字struct、结构体名、成员名讲授法10 二、结构体类型变量 1、定义结构体变量的方法 (1)先声明结构体类型,再定义结构体变量 (2)在声明结构体类型的同时定义结构体变量 (3)不指定结构体名而直接定义结构体变量 2、说明:(1)结构体成员也可以是一个结构体变量 (2)结构体成员名可与程序中其他变量同名 讲授法、 对比法 30 二、结构体变量的初始化和引用 1、结构体变量的初始化 2、结构体变量成员的引用:结构体变量名.成员名 【例6.1】 讲授法、 练习法 30 3、结构体变量的说明:(1)结构体变量成员的运算 (2)结构体变量地址和成员地址的引用 讲授法10 课堂小结结构体类型声明的方法,结构体变量的定义、初始化及引用方法 3 作业布置复习本次课内容;预习6.3节“结构体类型数组” 2 7S管理整理、整顿、清扫、清洁、素养、节约、安全课后 教学效果及改进思路

实验8-结构体

《高级语言程序设计》实验报告 实验序号:8 实验项目名称:结构体 一、实验目的及要求 1、掌握结构体变量的定义和使用; 2、掌握结构体数组的定义和使用; 3、了解结构指针的定义和使用 二、实验设备(环境)及要求 使用Turbo C 或Visual C++ 6.0;windows系列操作系统的环境。 三、实验内容与步骤 1.学生成绩管理:有5个学生,每个学生的数据包括学号、班级、姓名、三门课成绩。从键盘输入5个学生数据,要求打印出每个学生三门课的平均成绩,以及每门课程平均分、最高分学生数据(包括学号、班级、姓名、三门课成绩,平均分)。 【实验要求】 (1)定义学生结构体。 (2)用一个函数实现5个学生数据的输入,用另一个函数负责求每个学生三门课程的平均成绩,再用一个函数求出平均分最高的学生并输出该学生的数据。要求平均分和平均分最高的学生数据都在主函数种输出。 【实验提示】 (1)结构体定义 struct Student { int num;//学号 char name[20];//班级注意字节长度 char classname[20];//班级 float score[3];//三门课程成绩 float aver_score; //平均分 } (2)数据组织提示: 在主函数中定义一个结构体数组。 Student stu[20] //定义有20个变量的元素的结构体数组(根据需要确定数组的大小)。 (3)结构体数组使用 ①循环输入学生信息: ②平均分计算函数,以数组名作参数 void averagescore(student stu[], int number) {

int i; for(i = 0; i<= number; i++) { Stu[i] = (stu[i].score[0]+ stu[i].score[1]+stu[i].score[2])/3.0 } } ③求平均分最高的学生 int averagescore(student stu[], int number) { int k = 0; //查找最高平均分并记录在数组中的下标值 for( int i = 0; i<= number; i++) { ……… } return k; //返回最高平均分数组元素的下标 } 【测试数据】 自己设计一组测试数据。 运行结果截图: 【思考与扩展】 如果这样定义结构体 typedef struct Student { int num;//学号 char name[20];//姓名注意字节长度 char classname[20];//班级 float score[3];//三门课程成绩 float aver_score; //平均分 } STU,* pSTU; 说明如下三条语句的含义: student stu1; STU stu2; pSTU pstu; 2.采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,初始化5名职工的信息,最后再对工作年限超过30年的职工加100元工资,然后分别输出工资变化之前和之后的所有职工的信息。 运行结果截图:

相关主题