文档库 最新最全的文档下载
当前位置:文档库 › 实验项目10 结构体简单应用

实验项目10 结构体简单应用

实验项目10  结构体简单应用
实验项目10  结构体简单应用

实验项目10 结构体简单应用

●实验目的

1.掌握结构体数据类型的基本概念。

2.掌握结构体类型变量的定义和使用方法。

3.掌握结构体类型数组与指针的关系及使用方法。

4.掌握结构体类型变量和数组作为函数参数的使用方法和技巧

5.掌握C语言中的存储分配函数使用方法。

6.理解链式存储结构与数组的区别。

7.掌握单链表中的建立、访问、插入和删除等最常见操作的C语言处理方法。

●实验内容

1.程序填空

(1)下面程序的功能是统计每个候选人的选票和无效的选票,请填空完成程序。

#include

#include

struct candidate

{

char name[20];

int count;

};

int main()

{

int i,n;

char temp[20];

struct candidate list[]={{"Invalid",0},{"Li",0},{"Wang",0},{"Sun",0}};

printf("请输入参加投票的人数:");

scanf("%d",&n);

while(n--)

{

printf("Enter the Name of Candidate:");

scanf("%s",temp);

for(i=1;i<4;i++)

if( )

{

list[i].count++;

;

}

if(i==4)

;

};

for (i=0; i<=3; i++)

printf("%s:%d\n",list[i].name,list[i].count);

return 0;

}

(2)下面程序的功能是:从键盘上输入3个学生的姓名、英语成绩、数学成绩,然后计算每个学生的总成绩并输出,请填空完成程序。

#include

#define Total 3

struct Student

{

char Name[20];

int English;

int Math;

int Sum;

}Person[Total];

void Input(struct Student *p,int N)

{

int i;

for (i=0; i

{

printf("\nInput Name and Score:");

scanf("%s%d%d", );

}

}

int main( )

{

struct Student *p;

int i;

p=Person;

Input( );

for (i=0; i

p->Sum=p->English+p->Math;

for (i=0; i

printf("%s %d\n", );

return 0;

}

2.程序改错

(1)下面程序中实现的功能是:用结构体变量表示复数,进行2个复数的加法和乘法运算,并输出结果。程序中标有星号行存在错误,请改正这些错误。

#include

#include

struct Complex

{

int r;

int i;

};

struct Complex Add(struct Complex x,struct Complex y)

{

struct Complex z;

z.i=x.i+y.i;

z.r=x.r+y.r;

return z;

};

struct Complex* Mulitply(struct Complex x,struct Complex y)

{

struct Complex z; //*****

z.r=x.r*y.r-x.i*y.i;

z.i=x.r*y.i+x.i*y.r;

return z; //*****

}

void Input(struct Complex x) //*****

{

printf("\nInput the values of r and i:");

scanf("%d%d",x->r,x->i); //*****

return;

}

int main( )

{

struct Complex a,b=(1,1),z,*p; //*****

Input(&a);

printf("a=%d+%di\n",a.r,a.i);

printf("b=%d+%di\n",b.r,b.i);

p=Mulitply(a,b);

z=Add(a,b);

printf("a+b=%d+%di\n",z.r,z.i);

printf("a*b=%d+%di\n",p->r,p->i);

return 0;

}

(2)下面程序的功能是计算教师的年龄并输出。程序中存在若干错误,请改正这些错误。#include

#include

#define ThisYear 2016

struct Date

{ int Year;

int Month;

};

struct Teacher

{ char name[20];

char sex;

struct Date birthday;

int age;

};

struct Teacher Person[2]={"Wang","M",1970,3,0,"Li","F",1980,2,0};

int main()

{ struct Teacher p;

int i,t,Total;

Total=sizeof(Person);

for (i=0; i

{ https://www.wendangku.net/doc/3a6021039.html,=Person[i].name;

p.birthday=Person[i].birthday;

p.age=ThisYear-p.birthday->Year;

printf("\n%s %d",https://www.wendangku.net/doc/3a6021039.html,,p.age);

}

return 0;

}

3.程序设计

(1)编程序实现功能:定义一个结构体数据类型(包括年、月、日),利用该类型计算某日是该年中的第几天?

(2)编程序实现功能:使用链式存储结构(堆栈)实现颠倒字符串。

四、集中实验的实验项目

1. 输入一个年份,按顺序输出各个月份的月历。

2. 设计并实现一个可供小学数学运算的程序:10 以内加减乘除法,能根据输入的题数,由计算机自动出题,判断做题是否正确,最后计算分数。如:请输入题数:2

3. 通讯录管理系统:该系统通过文本菜单进行操作,功能包括:创建通讯录、显示记录、查询记录、修改记录、添加记录、删除记录和记录排序等,各功能模块均采用独立的函数来表示,通过主函数直接或是间接调用,特别注意的是,通讯录数据采用结构体定义和管理,并可以直接从文件中读入数据或是将数据写入文件中,体会这样做的的优越性。

4.设计并实现一个学生选课管理系统。选修课程管理,每门选课课程的信息包括:课程名、学分、人数限制、面向专业、面向年级;选课时学生需要提供:姓名、学号、班级等信息。实现功能:具有选择某门课程功能、退选某门课程功能、按照课程浏览选课学生名单功能、按照学生姓名和学号查询某人的选修课程情况功能、根据选修课程的选修条件自动排除不满足条件的选修请求功能、输出某门选修课的选修名单到文件功能、输出某人的选修课情况到文件功能。

5. 学生成绩管理系统。

6. 设计并实现一个图书信息管理系统。图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

实现功能:

(1)系统以菜单方式工作

(2)图书信息录入功能(图书信息用文件保存)--输入

(3)图书信息浏览功能--输出

(4)查询和排序功能(至少一种查询方式)--算法

●按书名查询

●按作者名查询

(5)图书信息的删除与修改

6. 用链表实现学生成绩管理系统。

7. 设计并实现一个实验设备管理系统。实验设备信息包括:设备编号、设备种类(微机、打印机、扫描仪等等)、设备名称、设备价格、设备购入日期、是否报废、报废日期等。

要求整个系统设计为:实验设备信息输入模块、实验设备信息添加模块、实验设备信息修改模块、实验设备信息分类统计模块、实验设备查询输入模块。

实现功能:

(1)能够完成对设备的录入和修改

(2)对设备进行分类

(3)设备的查询

(4)设备的破损耗费和遗损处理

数组指针结构体实验报告

验证性实验:数组指针结构体实验报告 1.实验目的 (1)复习c++语言数组的用法。 (2)复习c++语言指针的用法。 (3)复习c++语言结构体的用法。 (4)理解算法时间复杂度分析的基本方法。 (5)通过实验程序,分析它们的时间复杂度。 2.实验内容 (1)将1~10存入数组a[10],并将其逆序输出。 (2)用指针方式编写程序:从键盘输入10个整数数据,并存入数组,要求将10个数中最大的数与第1个输入的输交换:将10个数中最小的数和最后一个输入的数交换。(3)有5个学生,每个学生的数据包括学号、姓名3门课的成绩、平均分。 要求:从键盘依次输入5个学生的学号、姓名3门课的成绩,自动计算3门课的平均分,将5个学生的数据在屏幕上输出。 3.实验结果 (1)#include void main() { int i,a[10]; for (i=0;i<=9;i++) a[i]=i+1; for (i=9;i>=0;i--) printf("%3d",a[i]); printf("\n"); } (2)#include void main() { int a[10],*p,*max,*min,k; for (p=a;p*p) min=p;

} p=a; if(*max==*(p+9)&&*min==*p) { k=*p; *p=*(p+9); *(p+9)=k; } else if(*max==*(p+9)) { k=*max;*max=*p;*p=k;k=*min;*min=*(p+9);*(9+p)=k; } else { k=*min;*min=*(p+9);*(p+9)=k;k=*max;*max=*p;*p=k; } for(p=a;p struct STUDENT { char id[10]; char name[8]; int score[3]; double ave; }stu[5]; void main() { int num=5,i,j; for(i=0;i

第10章 结构体及共用体

第10章结构体与共用体 考核知识点 ●结构体与共用体类型数据的定义方法和引用方法 ●用指针和结构体构成链表,单向链表的建立、输出、插入与删除 重要考点 ●对结构体的声明及定义 ●访问结构体的成员的方法 ●熟悉对链表的操作 10.1 用typedef说明一种新类型名 C语言规定可以用typedef说明一种新的类型名,说明新类型名的语句一般形式为:typedef 类型名称标识符; 其中,“类型名”一定是在此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用来标识新的类型名。typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并没有产生新的数据类型,因此,原有的类型名依然有效。 提示: 声明一个新的类型名的具体步骤如下: ⑴先按定义变量的方法写出定义的主体(如float a;). ⑵将变量名换成新类型名(如将a换成FLO)。 ⑶在最左面加上关键字typedef(如typedef FLO). ⑷然后可以用新类型名去定义其他的变量(如FLO b;). 10.2 结构体类型 在实际工作中,当我们需要把一些不同类型,但相互之间又存在着联系的信息组合应用时,就要用到结构体。结构体是一种看似复杂却非常灵活的构造数据类型。在通常情况下,一个结构体类型由若干个称为成员(或称为域)的部分组成。不同的结构体类型可根据需要由不同的成员组成。但对于某个具体的结构体类型,其成员的数量必须固定,这一点与数组相同;但结构体中各个成员的类型可以不同,这是结构体与数组的重要区别。例如,我们常用的“时间”可以由以下3个部分描述:小时(hour)、分(minute)、秒(second)。它们都可以用整型数表示,可以把这3个成员组成一个整体,并给它取名为time,这就是一个简单的结构体。 声明一个结构体类型的一般形式为: struct 结构体名 {成员表列}; struct是C语言中的关键字,是结构体类型的标志。“结构体名”用做结构体类型的标志,它又称“结构体标记”(structure)。大括号内是该结构体中各成员,成员表列是由若干个变量类型名及变量名组成的。这些成员共同组成一个结构体。例如,上面提到的“时间”结构体类型可以说明如下: struct time { int hour; int minute; int second;

结构体实验报告

实 验 报 告 题目:结构体实验报告:XXXXX 学号:XXXXXXXXXXXX 班级:XXXXXXXXXXXXXXXX 专业:XXXXXXXXX 成绩:

一、实验目的 掌握结构类型的定义和使用,学会使用结构数组编程解决问题。 二、实验容、要求与安排方式 1、实验容: 编程解决如下问题:谁的年龄最小、奖学金统计、猴子选大王、选票统计(二)、数星星(二),任选四道题,其中选票统计(二)、数星星(二)必选。 2、要求:能够上机编辑、调试程序并通过OJ测试。 3、实验安排方式:每组1人,独立完成上机实验; 4、注意事项:结构的嵌套定义和引用方法、用指针访问结构。 三、代码及调试结果 1.数星星代码: #include #include #include typedef struct shiquan { int x; int y; } S; //定义结构体 int main() { S s[216]; int n,i,j; int sum=0; scanf("%d",&n); for(i=0; i

图1 数星星调试结果 2.奖学金代码: #include #include typedef struct student { char name[20]; int Last_Score; int Class_Score; char Stu_leader; char w_stu; int article; int sum; } STU; int main() { int n; STU p[11]; int flag=0; int sum=0; int max=0; scanf("%d",&n); int i; for(i=0; i

实验练习八 结构体编程

实验八结构体编程 实验目的 1.掌握结构体类型变量的定义和使用。 2.掌握结构体类型数组的概念和使用。 3.掌握结构体指针及链表的概念,初步学会对链表进行操作,学会在函数之间传送链表的方法。 4.理解共用体的概念与使用。 实验内容 1、结构体类型的变量及数组 (1)利用指向结构体的指针,遍历结构体数组,寻找第一个名字首字母是‘M’的学生,参考代码如下:

2、结构体链表 (1)建立一个创建单链表的函数 (2)在单链表中查找一个会员 定义一个函数find。该函数能在head指向的链表中,查找一个名字和s所指字符串完全一样的会员,并返回其地址。若未找到,则返回NULL。代码如下: struct CStudent * find(struct CStudent *head, char *s){ struct CStudent *p=head; while( p!=NULL && strcmp(p->name, s)!=0 ) p=p->next; return p; } 而在主调函数中可以按如下的方式来调用find函数:

p=find(head, "Sun"); if(p==NULL) printf("没找到\n"); 完整的参考代码如下: (3)设计一个函数,在链表的当前节点之后插入一个节点。 该函数的功能是在链表的当前节点插入一个节点,当前节点还有要插入的数据以函数的形式参数传给函数。 函数原型 data *Insert_link((data *op_list, int value); 其中data数据类型定义如下: //Link list struct typedef struct data{ int value; struct data *next;

数据结构实验报告七查找、

云南大学软件学院数据结构实验报告 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □ C □ 学期:2010秋季学期 任课教师: 实验题目: 查找算法设计与实现 姓名: 王辉 学号: 20091120154 电子邮件: 完成提交时间: 2010 年 12 月 27 日

云南大学软件学院2010学年秋季学期 《数据结构实验》成绩考核表 学号:姓名:本人承担角色: 综合得分:(满分100分) 指导教师:年月日(注:此表在难度为C时使用,每个成员一份。)

(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%) 1 哈希表查找。根据全年级学生的姓名,构造一个哈希表,选择适当的哈希函数和解决冲突的方法,设计并实现插入、删除和查找算法。 熟悉各种查找算法的思想。 2、掌握查找的实现过程。 3、学会在不同情况下运用不同结构和算法求解问题。 4 把每个学生的信息放在结构体中: typedef struct //记录 { NA name; NA tel; NA add; }Record; 5 void getin(Record* a)函数依次输入学生信息 6 人名折叠处理,先将用户名进行折叠处理折叠处理后的数,用除留余数法构造哈希函数,并返回模值。并采用二次探测再散列法解决冲突。 7姓名以汉语拼音形式,待填入哈希表的人名约30个,自行设计哈希函数,用线性探测再散列法或链地址法处理冲突;在查找的过程中给出比较的次数。完成按姓名查询的操作。将初始班级的通讯录信息存入文件。 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 1抽象数据类型的功能规格说明和结构体: #include

第10章 结构体、共用体、枚举类

1 声明一个结构体类型的一般形式为: struct 结构体名 {成员表列}; 如:struct student { int num;char name[20];char sex; int age;float score;char addr[30]; }; 2 定义结构体类型变量的方法 (1)先声明结构体类型再定义变量名 例如:struct student student1, student2; | | | 结构体类型名结构体变量名 (2)在声明类型的同时定义变量 这种形式的定义的一般形式为: struct 结构体名 { 成员表列 }变量名表列; (3)直接定义结构体类型变量 其一般形式为: struct { 成员表列 }变量名表列; 即不出现结构体名。 注意: 成员名可以与程序中的变量名相同,二者不代表同一对象。 3 可以引用结构体变量成员的地址,也可以引用结构体变量的地址。 例如: scanf(″%d″,&student1.num); (输入student1.num的值) printf(″%o″,&student1); (输出student1的首地址) 4 结构体数组的初始化 struct student {int num;char name[20]; char sex; int age; float score; char addr[30]; }stu[2]={{10101,″LiLin″,′M′,18,87.5,″103 BeijingRoad″},{10102,″Zhang Fun″,′M′,19,99,″130 Shanghai Road″}};

5 指向结构体变量的指针 #include #include void main() {struct student{long num;char name[20]; char sex; float score;}; struct student stu_1; struct student* p; p=&stu_1; stu_1.num=89101;strcpy(stu_https://www.wendangku.net/doc/3a6021039.html,,”LiLin”); stu_1.sex=‘M’;stu_1.score=89.5; printf(″No.:%ld\nname:%s\nsex:%c\nscore:%f\n″,stu-1.num,https://www.wendangku.net/doc/3a6021039.html,,stu-1.sex,stu-1.score); printf(″No.:%ld\nname:%s\nsex:%c\nscore:%f\n″,(*p).num,(*p).name,(*p).sex,(*p).score); } 6 以下3种形式等价: 结构体变量.成员名 (*p).成员名 p->成员名 7 用指针处理链表 (1)malloc函数 (2) calloc函数 (3) free函数 其函数原型为void free(void *p); 7.1 typedef struct { int n; struct { int y,m,d; }date; }PERSON; 下面定义结构体数组并赋初值 PERSON x[2]={1,04,10,1,2,04,12,30}; PERSON x[2]={{1,04,10,1},{2,04,12,30}}; PERSON x[2]={1,{04,10,1},2,{04,12,30}}; 7.2 struct person { int id;

第十一章结构体的试题

(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;

电子技术 第十章 结构体与共用体

第十章结构体与共用体 一、选择题 1.在说明一个结构体变量时系统分配给它的存储空间是。(0级) A)该结构体中第一个成员所需存储空间 B)该结构体中最后一个成员所需存储空间 C)该结构体中占用最大存储空间的成员所需存储空间 D)该结构体中所有成员所需存储空间的总和 2.若有以下说明和语句: struct worker {int no; char ﹡name;}work, ﹡p=&work; 则以下引用方式不正确的是。(1级) A) work.no B) (﹡p).noC) p->no D)work->no3.有如下定 义: struct date { int year,month,day; }; structworklist {char name[20]; char sex; struct datebirthday; }person; 对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是。 (1级) A) year=1958B) birthday.year=1958 C) person.birthday.year=1958 D) person.year=19 58 4.以下对结构体类型变量的定义中不正确的是。(1级) A)#define STUDENT struct studentB) struct student STUDENT{ int num; { intnum;floatage; floatage; }std1; }std1; C)struct D) struct {intnum;{ intnum; float age;float age; } student; }std1;structstudent std1; 5.设有以下说明语句 struct stu { int a; float b;}stutype; 则下面的叙述不正确的是。(1级) A)struct是结构体类型的关键字 B)struct stu是用户定义的结构体类型 C)stutype是用户定义的结构体类型名

练习题-第十章 结构体与共用体(有答案)

一、填空题 1.若有如下结构体定义: struct student { int num; float age; char sex; }stud; 则stud所占的内存空间是9 字节。 2.已有定义和语句: union data { int i; char c; float f; }a,*p; p=a; 则对a中成员c的正确访问形式可以是 a.c 或: p->c或:(*p).c。(只需 写出一种) 二、单项选择题: 1.若有下列定义: struct b { float a[5]; double c; int d;}x; 则变量x在内存中所占的字节为下列哪一个:( C ) A.6 B. 10 C. 30 D. 14 2.设有以下说明语句,则下面的叙述不正确的是( C ) struct stu { int a; float b; } stutype; A. struct 是结构体类型的关键字。 B. struct stu 是用户定义的结构体类型。 C. stutype是用户定义的结构体类型名。 D. a和b都是结构体成员名。 3.下面程序的运行结果是( ) #include main( ) { struct date { int year, month, day;

}today; printf(“%d\n”,sizeof(struct date)); } A. 6 B. 8 C. 10 D. 12 4.设有以下说明语句,则下面的叙述正确的是( B ) typedef struct { int a; float b; } stutype; A. stutype是结构体变量名。 B. stutype 是结构体类型名。 C. struct是结构体类型名。 D. typedef struct是结构体类型名。 三、填程序 1.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名和年龄。请填 空。 static struct man { char name[20]; int age; }person[ ]={{“LiMing”,18},{“WangHua”,19},{“ZhangPing”,20}}; main( ) { struct man *p,*q; int old=0; p=person; for(; p age){ q=p; old=p->age ;} printf(“%s %d”, q->name,q->age ); }

C语言结构体实验报告

《高级语言程序设计》实验报告实验序号:8 实验项目名称:结构体

附源程序清单: 1. #include struct student { int num; char name[20]; char classname[20]; float score[3]; float aver_score; }stu[5]; void input() { int i; for(i=1;i<6;i++) { printf("第%d个同学",i); printf("请输入学号名字班级三门课程成绩:\n"); scanf("%d %s %s %f %f %f",&stu[i].num,stu[i].name,stu[i].classname,&stu[i].score[1],&stu [i].score[2],&stu[i].score[3]); } }; void averagescore() {

for(i=1;i<=5;i++) stu[i].aver_score=((stu[i].score[1]+stu[i].score[2]+stu[i].score[3])/3); printf("平均成绩:"); for(i=1;i<6;i++) printf("第%d个同学的平均成绩%f:\n",i,stu[i].aver_score); printf("\n"); }; void max() { int i,k=0; float temp=stu[1].aver_score; for(i=2;i<=5;i++) if(stu[i].aver_score>temp) {temp=stu[i] .aver_score;k=i;}; printf("成绩最好的同学:\n"); printf("%d %s %s %4.2f %4.2f %4.2f %4.2f\n", stu[k].num,stu[k].name,stu[k].classname,stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].aver _score); }; void main() { input(); averagescore(); max(); } 2.#include struct worker { char name[20]; int workyear; float salary; }work[5]; void input() { int i; for(i=1;i<=5;i++) { printf("第%d个工人:",i); printf("请输入名字工作年限工资总额:\n"); scanf("%s %d %f",&work[i].name,&work[i].workyear,&work[i].salary);

第10章练习 结构体

7.2典型例题分析与解答 例题1:下列结构体定义,正确的是()。 A.B. record { struct record { int no; int no; char num[16]; char num[16]; float score ; float score ; } ; } C.D. struct record { struct record { int no; int no char num[16]; char num[16] float score ; } ; float score } 答案:C 分析:结构体类型定义必须以关键字struct 开头,即A不正确,不能选择。D中结构体中定义成员语名没有用分号结束,故不正确,不能选择D。根据结构体类型说明形式要求必须用分号结束,所以B和C中,只能选择C。 例题2:下列声明结构体变量错误的是()。 A.struct student B.struct student {{ int no; int no; char name[16]; char name[16]; }st1,st2; }; struct student st1,st2; C.D. struct student { struct student { int no; int no; char name[16]; char name[16]; }; }; student st1,st2; struct st1,st2; 答案:D 分析:结构体变量定义有两种方式,一是在定义结构体类型时说明结构体变量,如A,即A 是正确的。二是用结构体类型说明结构体变量。如B和C,即B和C也是正确。不能只用结构体关键字去说明结构体变量,即D不正确,只能选择D。 例题3:设有以下说明,则正确的赋值表达式为()。 struct x {int no; char name[20]; float score;} y;

实验5结构体与文件处理

实验5结构体与文件处理(上机调试运行) 1.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中,请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(只有一个最高分)。 2.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,功能是:按照分数的高低排列学生的记录,高分在前。并将数据存入文件中。 3.给定程序的功能:从键盘输入若干行文本(每行不超过80个字符),写的文件myfile4.txt中,用-1作为字符串输入结束的标志,然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText 实现。 二.实验目的 1.掌握结构体的概念及其数据结构 2.有效应用结构体进行二维表格编程 3.掌握C语言中文件的概念及其数据结构 4.熟悉文件的读写操作 实验4 运用指针类型及函数编程练习 一.实验要求 本实验包含三个程序 1.fun函数的功能是:统计一个无符号整数中各位数字值为0的个数,通过形参传回主函数。并把该整数中各位上最大的数字值作为函数值返回。例如,若输入30800,则零的个数为3,各位上数字值最大的是8。 2.fun函数的功能:用指针的形式比较两个字符串的的长度,将长的那个字符串的首地址作为函数值返回。 3.给定函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。偶数在主函数中定义。 二.实验目的 1.掌握指针的概念及其运算 2.掌握以指针作为形参的函数调用及用函数返回一个指针 3.掌握指针与字符串之间的运算关系

实验九结构体

实验九结构体、共用体与枚举类型 实验时间:年月日 【实验目的】 1、掌握结构体类型、共用体类型和结构体类型变量的定义方法; 2、掌握结构体类型变量成员赋值和引用方法; 3、学会使用结构体数组; 4、掌握共用体和枚举类型数据的使用。 【实验内容】 1、结构体类型的定义; 2、结构体变量的定义、赋值与使用; 3、结构体数组与结构体指针的定义与使用; 4、共用体类型的定义,共用体变量的定义与使用; 5、枚举类型的定义与使用; 6、链表与动态内存分配; 7、自定义类型的使用。 【实验步骤】 一、在E或F盘上建立以自己的学号命名的文件夹。 二、上机验证与分析题 1、写出程序ex9_1.c运行的结果。 /*文件名ex9_1.c*/ #include struct HAR { int x,y; struct HAR *p; }h[2]; int 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); return 0; } 2、写出程序ex9_2.c运行的结果。

/*文件名ex9_2.c*/ #include "stdio.h" void main() { int z; union data { int x; int y; }a; a.x=3; a.y=6; z=a.x+a.y; printf("z=%d\n",z); } 3、阅读程序ex9_3.c,预测结果并上机验证。 /*文件名ex9_3.c*/ #include void main() { union data { int i; char ch; float f; }a,b,c; a.i=9; b=a; c=b; printf("b.i=%d,c.i=%d\n",b.i,c.i); } 4、运行下列程序,写出结果 /*文件名ex9_4.c*/ #include void main() { struct List {

第十一章结构体与共用体

第^一章结构体与共用体教学内容 (1) 结构体的定义与结构体变量; (2) 结构体数组; (3) 结构体指针; ⑷链表; (5) 共用体; (6) 枚举类型; 基本要求 掌握结构体的定义方法及其作用;重点掌握链表及其应用了解共用体的概念及其应用

一、概述 、引入原由 我们前面讲过数组,数组类型中的各个元素的类型是相同的,在日常应用中,仅仅有这些数据类型是不够的。有时需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组合在一个整体中的数据是互相联系的。例如:学生的信息(姓名、性别、年龄、成绩、学号)。那么如何实现这种结构呢?采用的是结构体。 女口:struct student { int num; char n ame[20]; char sex; int age; float score; }; 、结构体类型的一般形式 struct 结构体名 {成员表列}; 成员表列:类型名成员名 女口:struct student {int nu m;char sex;}; 二、结构体类型变量的定义、引用、初始化 、定义方法 1、先声明类型再定义变量名 struct stude nt {int nu m;char sex;}; struct stude nt stu1,stu2; 2、在声明类型的同时定义变量 struct stude nt {int nu m;char sex;} stu1,stu2; 3、直接定义结构体类型变量(不给出结构体名) struct {int nu m;char sex;} stu1,stu2; 4、说明: 1 )类型与变量不同(变量:分配空间,可以赋值、存储、运算) 2)成员与普通变量地位相当,域名可以单独使用 3)成员也可以是一个结构体变量 如: struct date

C语言实验八结构体上机报告

《标准C语言程序设计》上机报告实验八结构体程序设计 专业:电子信息工程 班级:电信1301 学号:U201313480 姓名:秦行 完成日期:2014/6/9

一、实验目的: 1、掌握结构体类型的说明和结构体变量的定义; 2、掌握结构体变量成员的引用和对结构体变量的初始化; 3、掌握结构体数组及结构体指针变量的定义及使用。 4、理解并掌握结构体在函数间的传递; 5、进一步掌握复杂程序编译、连接和调试的技巧。 二、实验内容及要求(鼓励一题多解) ——以下均要求不得使用全局变量: 1 (1)、正确定义该表格内容要求的数据类型; (2)、分别输入各成员项数据,并打印输出(为简便起见,假设只有3名考生)。#include #include #define N 3 struct date { int year; int month; int day; }; struct student { unsigned int num; char name[20]; char sex; struct date birth; }; void main()

{ struct student tester[N]; int i; for(i=0;i #include #include #define N 10 struct worker { char name[20]; int salary; };

实验09结构体实验报告

1.学会结构体类型变量的定义和使用方法。 2.能够运用结构体数组编写程序。 3.学会结构体指针的定义使用方法。 4.能够运用结构体指针作函数参数编写程序。 二、实验环境 (调试程序所使用的软硬件环境) 软件环境:VC++6.0 硬件环境:宏基Intel 奔4 主频2.8GHz,内存256MB 三、实验内容、结果及分析 1、题目1.建立一个有n(3 #include #include using namespace std; const int N=10; struct rem { String num; string name; double mark[3]; double all; }; int main () { int n,i,m; double max; rem loq[N]; cout<<"请输入人数"<>n; for(i=0;i

cout<<"请输入第"<>loq[i].num>>loq[i].name >>loq[i].mark[0] >>loq[i].mark[1] >>loq[i].mark[2]; } for(i=0;imax) { max=loq[i].all; m=i; } } cout<<"总分最高的学生为"<

结构体和共用体习题

习题六 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)。 A (*p). B (*p).a C p-> D 填空 (1)若有以下说明和定义且数组w和变量k已正确赋值,则对w数组中第k个元素中各成员的正确引用形式是 w[k-1].b、 w[k-1].c 、 w[k-1].d 。 struct aa { int b; char c; double d; }; struct aa w[10]; int k=3; (2)若有以下说明和定义,则对成员的另外两种引用形式是 x->b-> 和 . 。 struct st { int a; struct st *b; }*p, x; p=&x; 3.阅读下面程序,写出运行结果。

C语言实验八

实验8 结构体、共用体与枚举类型 一、实验目的和要求 1.掌握枚举类型的基本使用方法。 2.掌握共用体的概念和应用。 3.掌握结构体变量及结构体数组的定义和使用。 4.掌握简单链表的基本使用方法。 二、实验内容和步骤 1.有5个学生,每个学生的数据包括学号、姓名、性别、4门课的成绩,从键盘输入5个学生的数据,要求输出4门课的平均成绩,以及平均成绩最高的学生信息(包括学号、姓名、性别、4门课的成绩、平均分数)。 同时要求用in函数输入5个学生数据;用aver函数求平均分;用max函数找出平均成绩最高的学生数据;学生的数据在out函数中输出。 2.输入和运行以下程序。 #include union data { char c[4]; long b; int i[2]; }; main() { union data s; scanf("%c,%c,%c,%c",&s.c[0],&s.c[1],&s.c[2],&s.c[3]); printf("i[0]=%d,i[1]=%d\nb=%ld\nc[0]=%c,c[1]=%c,c[2]=%c,c[3]=%c\n", s.i[0],s.i[1],s.b,s.c[0],s.c[1],s.c[2],s.c[3]); } (1)输入4个字符a,b,c,d给s.i[0],s.c[1],s.c[2],s.c[3],并分析运行结果。 (2)将scanf()改为: scanf("%ld",&s.b); 输入876543给b,分析运行结果。 3.请用枚举类型表示一年的十二个月份,并输出每个月的天数。 4.建立一个有5个结点的单向链表,每个结点包含姓名、年龄和工资。编写两个函数,一个用于建立链表,另一个用来输出链表。 5.在上面的基础上,写一函数find,根据姓名查找一个结点,并输出该结点信息。 6.在上面的基础上,写一函数del,根据姓名(假定姓名不能重名)删除一个结点,并输出删除后的链表。 7.在上面的基础上,写一函数insert,插入一个结点,并输出插入后的链表。 对应答案:实验8 结构体、共用体与枚举类型1.分析 有5个学生,每个学生的数据包括学号、姓名、性别、4门课的成绩,可建立结构体数组的数据结构如下。 struct student /*定义结构体*/ { long num; /*学号*/ char name[20]; /*姓名*/ char sex; /*性别*/

相关文档