课程实验报告十 结构体和共同体

合集下载

专题10 结构体和共用体的概念及应用

专题10 结构体和共用体的概念及应用

4)使用typedef说明一个结构体类型,再用新类型名来定义变量(常用)
typedef { struct
typedef struct ST { struct date birthday; a; long int b; float sc[4]; char c[2]; }STREC; } NEW; // STREC是一个具体的结构体类型名,可以用它来定义相应的变量,就如int、char 则下面叙述中正确的是 一样,用它来定义变量时,就不能用struct A)以上的说明形式非法 B)ST是一个结构体类型 C)NEW是一个结构体类型 D)NEW是一个结构体变量 STREC std,pers[3],*pstd;
练习
3.以下结构体类型说明和变量定义中正确的是 [08年4月份题目] A)typedef struct {int n; char c;}REC; REC t1,t2; B)struct REC; {int n; char c;}; A REC t1,t2; C)typedef struct REC ; {int n=0; char c='A';}t1,t2; D)struct {int n;char c;}REC REC t1,t2;
练习
4.有以下程序[08年9月] C #include<stdio.h> struct st {int x,y;}data[2]={1,10,2,20}; main() { struct st *p=data; printf("%d,",p->y); printf("%d\n",(++p)->x); } 程序的运行结果是 A) 10,1 B)20,1 C) 10,2 D)20,2 5.有以下程序[08年9月] main() D { struct STU { char name[9]; char sex; double score[2];}; struct STU a={"Zhao",'m',85.0,90.0},b={"Qian",'f',95.0,92.0}; b=a; //结构体变量可以直接赋值 printf("%s,%c,%2.0f,%2.0f\n", , b.sex, b.score[0], b.score[1]); } 程序的运行结果是( ) A) Qian,f,95,92 B) Qian,m,85,90 C) Zhao,f,95,92 D) Zhao,m,85,90

实验 结构体与共用体_C语言程序设计实用实践教程_[共3页]

实验  结构体与共用体_C语言程序设计实用实践教程_[共3页]

C 语言程序设计实用实践教程
三、本章常见错误小结
(1)定义结构体类型或共用体类型时,忘记在最后的花括号}后面加分号。 (2)将一种类型的结构体变量对另一种类型的结构体变量进行赋值。 (3)对两个结构体或共用体进行比较。 (4)将结构体指向运算符的两个组成-和>之间插入空格或写成→。 (5)直接使用结构体的成员变量名访问结构体成员。 (6)使用指向运算符访问结构体变量的成员。
{ int x; int y;
} cnum[2]={1,3,2,7}; printf("% d\n",cnum[0].X*cunm[1].x); }
(2)分析程序的运行结果,掌握“->”和“*”运算符的优先级及++在前在后的含义。
#include<stdio.h> struct x { int a;
四、实验环节
实验 结构体与共用体
168
【实验目的和要求】 1.掌握结构体类型、结构体变量、结构体数组和结构体指针的定义与使用。 2.理解共用体的结构特征,掌握其定义和使用方法。 3.了解枚举类型和自定义类型。 【实验内容】 1. 分析题
(1)分析程序,写出程序的运行结果。
#include<stdio.h> main(r *b; }*p; char y0[]="Li",y1[]="Wang"; struct x xw[]={{1,y0},{4,y1}}; main() { p=xw;
printf("%c",++*p->b); printf("%d",(*p).a); printf("%d",++p->a); printf("%d",(++p)->a); printf("%c\n",*(p++)->b); }

C++程序设计学习指南与上机实训实验10 结构体与共用体

C++程序设计学习指南与上机实训实验10 结构体与共用体
10
2
ቤተ መጻሕፍቲ ባይዱ
3
4
5
6
7
8
第三节 实验目的 1)复习教材“第8章”的内容,熟习结构体 2)复习掌握结构体、共同体和枚举的异同。 3)复习结构体、共同体和枚举的概念及创建 4)结合本教材“学习指南”部分的内容,上
9
5)总结本实验程序的运行调试经验,整理上 6)通过对结构体、共同体和枚举的使用,要 求能熟练掌握结构体、共同体和枚举的定义并在程 7)通过编写程序,进一步熟悉结构体的使用 ,以及结构体在整个C++中的重要地位,熟悉结构 体数组的使用和在C++中使用结构体以及结构体数 组的使用要点。
第一节 实验目的 1)通过上机了解并进一步熟练掌握结构体、 2)掌握结构体、共同体和枚举在程序中的使
实验10
3)掌握结构体、共同体和枚举三种数据结构 在C++语言中的运用方式及它们的运用规则,掌握 发对三种数据结构的描述方式。
1
第二节 实验内容及实验步骤 1)编写input ( )和output ( )函数输入、输出5 个学生的数据记录,两个函数共同用一个结构体类 型变量,该结构体变量的成员包括:学号(num)、 姓名(name),成绩采用实型数组,共有3门课

C程序实验报告十 结构体与共用体

C程序实验报告十 结构体与共用体

实验10 结构体与公用体1.实验目的、要求(1)掌握结构体类型变量的定义和使用。

(2)掌握结构体类型数组的概念和使用。

(3)掌握公用体的概念与使用。

2.实验内容(1)输入程序并运行,观察运行结果#include “stdio.h”int 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 );return(0); }运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按任意键返回源程序行,按ctrl+F9运行,按alt+F5看结果,结果显示:6(2)输入程序并运行,观察运行结果union ks{ int a;int b;};union ks s[4];union ks *p;#include “stdio.h”int main( ){ int n=1, i;printf(“\n”);for(i=0;i<4;i++){ s[i].a=n;s[i].b=s[i].a+1;n=n+2;}p=&s[0];printf(“%d,”,p->a);printf(“%d” ,++ p->a);return(0); }运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按ctrl+F9运行,按任意键返回源程序行,按alt+F5看结果,结果显示:23(3)编写程序有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。

要求用input 函数输入10个学生数据;用average函数求总平均分;用max函数找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。

#include"stdio.h"struct student{char num[6];char name[8];int score[4];float avr;}stu[10];main(){int i,j,max,maxi,sum;float average;for(i=0;i<10;i++){printf("number");scanf("%s",stu[i].num);printf("name");scanf("%s",stu[i].name);for(j=0;j<3;j++){printf("\nscore\n");scanf("%d",&stu[i].score[j]); } }average=0;max=0;maxi=0;for(i=0;i<10;i++){sum=0;for(j=0;j<3;j++)sum+=stu[i].score[j];stu[i].avr=sum/3.0;average+=stu[i].avr;if(sum>max){max=sum;maxi=i; }}average/=5;printf("number name score1 score2 score3 average\n");for(i=0;i<10;i++){printf("%8s%10s",stu[i].num,stu[i].name);for(j=0;j<3;j++)printf("%7d",stu[i].score[j]);printf("%6.2f\n",stu[i].avr); }printf("average=%5.2f\n",average);printf("The best student is %s,sum=%d\n",stu[maxi].name,max);}运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按ctrl+F9运行,按要求输入十个学生的数据,按任意键返回源程序行,按alt+F5看结果,结果显示:number name score1 score2 score3 average01 san 76 87 79 80.6702 tian 65 75 86 75.3303 yuan 98 68 78 81.3304 ping 97 86 78 87.0005 shuo 65 74 82 73.6706 ying 90 80 68 79.3307 xiao 87 80 58 75.0008 hu 64 98 60 74.0009 xing 65 82 90 79.0010 xu 60 98 76 78.00average=156.67The best student is ping,sum=2613.思考及总结(1结构体、共用体定义方式、引用方式和功能的相同点与不同点。

结构体与共用体zlh

结构体与共用体zlh
数据类型
结构体中每个成员可以是不同的 数据类型,而共用体中所有成员 必须是相同的数据类型。
结构体与共用体的区别与联系
• 使用方式:结构体中每个成员都可以单独访问和操作,而 共用体中一次只能使用其中一个成员。
结构体与共用体的区别与联系
自定义类型
结构体和共用体都是用户自定义的数据类型 ,可以根据需要组合不同的数据类型。
对于大型结构体和共用体,可以使用指针成 员来减少直接内存占用。
在跨平台编程时,要注意不同平台下的内存 对齐规则可能不同,需要进行相应的调整。
05
结构体与共用体的应用案例
案例一:使用结构体实现学生信息管理
定义学生结构体
包含学生姓名、学号、性别、年龄等字段。
创建学生信息数组
根据学生数量,创建相应大小的学生信息数组。
访问速度较慢
访问结构体的成员变量时,需要通过 指针或引用等方式进行间接访问,相 对于直接访问基本数据类型,速度较 慢。
结构体与共用体的优缺点分析
内存占用小
共用体中的所有成员变量共享同一块内存空间,因此相对于 结构体,共用体的内存占用较小。
访问速度快
访问共用体的成员变量时,可以直接通过内存地址进行访问 ,速度较快。
封装性好
结构体可以将多个变量封装在一起,形成一个自定义的数据类型,方便数据的 处理和管理。
结构体与共用体的优缺点分析
• 可扩展性强:结构体可以方便地添加或删除成员 变量,以适应不同的应用场景和需求。
结构体与共用体的优缺点分析
内存占用较大
由于结构体中每个成员变量都占用独 立的内存空间,因此相对于基本数据 类型,结构体的内存占用较大。
赋值给共用体变量
可以给共用体的任何一个成员赋值,如`data.f = 3.14;`,表示将 `data`的`f`成员赋值为3.14。

实验十一 结构体(struct)与共用体(union)

实验十一 结构体(struct)与共用体(union)

实验十一结构体(struct)与共用体(union)实验目的理解并掌握使用不同数据类型的变量组合成一个数据的组合体-结构体与共用体的定义与引用;正确使用结构体数组、结构体与函数及指向结构体的指针。

要点提示1.结构体定义的一般格式为:struct 结构体类型名{数据类型成员名1;数据类型成员名2;……数据类型成员名n;};2.结构体变量的说明struct 结构体类型名结构体变量名;3.引用结构体成员结构体变量名.成员名共用体与结构体有相似的使用形式实验内容●结构体的定义与引用●结构体与函数●结构体数组●指向结构体的指针●共用体的定义与引用实验步骤读懂并输入程序,完成填空后输出结果1.建立学习成绩单结构,并建立一个同学王林(wanglin)的记录。

#include <stdio.h>main(){struct grade /* 定义结构体类型*/{int number;char name;int math;int english;};struct 【】wanglin; /* 说明结构体变量*/printf("Please input the number, name, math, english:\n");scanf("%d,%d,%d",&【】,& wanglin. name,【】& wanglin.english);printf("wanglin 'grade is: %d/%d/%d\n", wanglin. number, , wanglin.math, wanglin.english);}程序执行过程与结果:Please input the number, name, math, english::26,A, 85,90wanglin ' grade is:#include <stdio.h>main(){struct grade /* 定义结构体类型*/{int number;char name;int math;int english;};struct grade wanglin; /* 说明结构体变量*/printf("Please input the number, name, math, english:\n");scanf("%d,%c,%d,%d",&wanglin. number,& wanglin. name,& wanglin. math,& wanglin.english);printf("wanglin 'grade is: %d/%c/%d/%d\n", wanglin. number, , wanglin.math, wanglin.english);}Please input the number, name, math, english:26,A,85,90wanglin 'grade is: 26/A/85/90Press any key to continue请再建立一个刘芳(liufang)的成绩记录, 比较一下。

实验9-1 结构体与共用体

实验9-1 结构体与共用体

实验9-1 结构体和共用体(1)1【实验目的】掌握结构体类型变量的定义和使用掌握结构体类型数组的概念和应用了解链表的概念和操作方法【实验要求】掌握结构体类型变量的定义和使用了解链表的概念和操作方法【实验环境】(1) Microsoft XP操作系统(2) Microsoft VC++ 6.0【实验内容】1、第几天/acmhome/problemdetail.do?&method=showdetail&id=1071描述:给定一个日期,输出这个日期是该年的第几天。

输入输入数据有多组,每组占一行,数据格式为YYYY-MM-DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。

输出:对于每组输入数据,输出一行,表示该日期是该年的第几天。

样例输入:2000-01-01样例输出:12、学生成绩/JudgeOnline/problem.php?id=1518题目描述现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。

编写一个函数input,用来输入一个学生的数据记录。

编写一个函数print,打印一个学生的数据记录。

在主函数调用这两个函数,读取N条记录输入,再按要求输出。

N<100输入:学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。

输出:每个学生的学号、姓名、三科成绩占一行,逗号分开。

样例输入2a100 zhblue 70 80 90b200 newsclan 90 85 75样例输出a100,zhblue,70,80,90b200,newsclan,90,85,753、平均分和最高分/JudgeOnline/problem.php?id=1519题目描述有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)输入:学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。

第10章结构体与共用体

第10章结构体与共用体

一般形式:
struct { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列; 用无名结构体直接定义 变量只能一次
10/31/2018
江苏海事职业技术学院-------第10章 结构体与共用体
说明:
结构体类型与结构体变量概念不同 类型:不分配内存; 变量:分配内存 类型:不能赋值、存取、运算; 变量:可以 结构体可嵌套 结构体成员名与程序中变量名可相同,不会混淆 结构体类型及变量的作用域与生存期
struct [结构体名] { 类型标识符 成员名; 类型标识符 成员名; ……………. };
合法标识符 可省:无名结构体 成员类型可以是 基本型或构造型
struct是关键字, 不能省略
10/31/2018
江苏海事职业技术学院-------第10章 结构体与共用体
num
2字节

name
20字节 1字节 2字节 4字节
10/31/2018
江苏海事职业技术学院-------第10章 结构体与共用体
10.8 共用体
共用体类型定义 定义形式:
union 共用体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. };
****类型定义不分配内存
例 union data { int i; char ch; float f; };
10/31/2018
江苏海事职业技术学院10章 结构体与共用体
用typedef定义类型
功能:用自定义名字为已有数据类型命名 类型定义简单形式: typedef type name; 例 typedef int INTEGER; 例 typedef float REAL; 例 INTEGER a,b,c; REAL f1,f2;

C语言程序设计实验报告(结构体和共用体)

C语言程序设计实验报告(结构体和共用体)

C语言程序设计实验报告(结构体和共用体)1实验目的1、掌握结构体类型变量的定义和使用;2、掌握结构体类型变量数组的概念和使用;3、掌握链表的概念,初步学会对链表进行操作;4、掌握共用体的概念和使用。

2实验内容1)在一个结构体数组中存入三个人的姓名及年龄,输出三者中年龄居中者的姓名及年龄。

要求:1、三个人的数据采用直接初始化的方式赋值;2、利用结构体指针实现处理过程。

3算法描述流程图4源程序#include<stdio.h>main(){struct students{char name[10];int age;} stu[3]={{"Jack",17},{"Anne",16},{"Tom",19}},stu1[3];struct students *stu2=&stu[0],*t=&stu1[0];int i,j,k;for(i=0;i<2;i++){k=i;for(j=i+1;j<3;j++){if(((stu2+j)->age)<((stu2+k)->age))k=j;}*t=*(stu2+k);*(stu2+k)=*(stu2+i);*(stu2+i)=*t;}printf("三人中年龄居中者姓名:%s,年龄:%d\n",stu[1].name,stu[1].age); }5测试数据{"Jack",17},{"Anne",16},{"Tom",19}6运行结果7出现问题及解决方法;实验中,引用结构体数组出现错误,忘记写{},指针的初始化忘记写*,这些问题都是些低级错误,不应该犯的,在循环中,i的初始化错误。

以后应更加仔细,多注意细节问题,很多时候细节是决定事情的关键。

8实验心得在本次试验中,我通过学习和实践,对结构体类型变量的定义和使用以及链表的概念有了更清楚的理解,初步学会了对链表进行操作,掌握了结构体类型变量数组以及共用体的使用。

实验10结构体及共用体

实验10结构体及共用体

实验十结构体与共用体实验目的:1.结构体类型变量的定义和引用2.结构体类型数组的概念和引用3.指向结构体类型的指针的引用4.共用体的定义及引用5.链表的概念,会实现链表的创建实验相关内容简介:实结构体是个能够包含不同数据类型的一个结构,是一种能够自己定义的数据类型,通常可用来定义表示整体信息的一条记录。

1.结构体类型定义struct 结构类型名{ 数据类型数据项1;数据类型数据项2;……数据类型数据项n;}; //注意此处定义时分号不能少其中的结构类型名表明了一种新的构造数据类型,其中的数据项称为结构体的数据成员。

2.结构体变量定义结构体变量定义的形式通常有如下三种方法:(1)先定义结构体类型,再定义结构体类型变量:struct date{ int day;int month;int year;};struct date time1,time2;(2)定义结构体类型同时定义结构体类型变量:struct stu{long int num;char name[20];char sex;float score;struct date time1; //此处结构的成员也是个结构体}stu1,stu2;(3)直接定义结构体类型变量:struct{char name[20]; / *通讯录姓名* /char sex; / *性别* /long telephone; / *电话* /char address; / *住址* /} person1,person2; / *定义该结构体类型变量* /该定义方法由于无法记录该结构体类型,所以除直接定义外,不能再定义该结构体类型变量。

3.结构体变量成员的引用结构体变量的成员引用形式为:结构体变量名.成员名如time1.year=1980;是给结构体变量time1中的year变量赋上年份值;stu1.time1.year=1985;则是给student中time1成员中的year成员赋值,4.结构体数组的定义struct 结构体类型名结构体变量名[数组长度];如:struct stu std[3];则std是一个包含3个结构体的结构体数组。

C语言程序设计实验结构体与共用体

C语言程序设计实验结构体与共用体

实验8:结构体与共用体一、实验目的1.掌握结构体类型变量的定义和使用;2.掌握共用体的概念与使用。

二、实验内容编写程序,实现如下功能:1.定义结构体变量,用它表示考生的学号、姓名(用英文表示)以及语文、数学、外语成绩。

输入两个考生的信息和各门课成绩并比较(按总分进行高低排序;当总分相同时,依次按语、数、外的顺序排序)。

2.设有一个教师与学生通用的表格,数据项包括:姓名、年龄、职业和单位,其中“职业”一项可分为“教师”和“学生”两类;对“单位”一项,教师填入“系部名称”(用字符类型表示),学生填入“班级编号”(用整型量表示)。

编程输入人员数据,再以表格输出。

三、实验结果记录第1题上机调试后的最终代码及上机调试结果(截图):程序代码运行结果1.总分不同2.总分相同的情况2.1总分完全相同2.2总分相同但语文成绩不同2.3总分相同、语文成绩相同但数学成绩不同第2题上机调试后的最终代码及上机调试结果(截图):程序代码运行结果1.正确输入2.错误输入四、实验小结:经过此次实验,我熟悉掌握了结构体的定义和使用,同时也掌握了共用体的使用。

对于程序1,基本思路是通过结构体定义变量,采用if-else语句嵌套,当总分相同且语文数学成绩均相同时就不必再进行一轮的if语句判断,因为此时两考生的英语成绩一定相同。

对于程序2,在结构体中定义了共用体,可对不同职业进行不同单位的划分。

基本思路是用malloc函数进行动态内存分配,确定要输入的样本数量,再进行数据的输入,在单位数据的输入时需要判断输入对象是学生还是老师,此时要用strcmp函数进行比较判断,输入结束后打印表格,用转义字符\t让表格更加美观,最后通过free进行内存释放。

计算机C语言教程第10章结构体和共同体

计算机C语言教程第10章结构体和共同体

2. 在函数内部的结构体变量进行初始化 上面例子的定义部分可以放到 main 函数中。程 序如下:
main( ) { static struct student { long hum; char name[20]; char sex; char addr[40];
}a={3021103, ”Jiang Linpan”,’M’, ”123 Shaoshan Road”};
/*成员变量是一个结构体变量*/
先定义一个struet date结构体类型,它包括3 个成员: month 、 day 、 year ,分别代表月、日、 年。然后在定义struet member结构体类型时,成 员 birthday 的类型定义为 struet date 类型。已定义 的类型struct date与其他类型 ( 如 int、 char) 一样可 以用来定义成员的类型。
实际上,凡是相关的若干数据对象都可组合成一个结 构体,在一个结构体名下进行管理。例如,由日、月、 年组成的结构体类型为: struct date {
int day;
int month;
int year;
};
又如,某职工信息结构体类型为: struct person { char name[20]; char address[40]; float salary; float cost; struct date hiredate; }; /*姓名*/ /*地址*/ /*工资*/ /*扣款*/ /*聘任日期*/
其中,结构体类型struct person含有一个结构体类型 成员hiredate。 该例子说明结构体类型可以嵌套定义,即一个结构 体类型中的某些成员又是其他结构体类型。但是这 种嵌套不能包含自身,即不能由自己定义自己。 结构体类型说明中,详细列出了一个结构体的组成 情况、结构体的各成员名及其类型。结构体类型说 明了一个数据结构的“模式”,但不定义“实物”, 并不要求分配实际的存储空间。 程序要实际使用结构体,必须定义结构体变量。编 译程序在为结构体变量分配存储空间时,其中各成 员的存储格式及其意义与结构体类型保持一致。

C语言结构体和共用体实验报告

C语言结构体和共用体实验报告

实验九参考程序实验9-1/*****************************************************************实验9.1**(1)为某商店的商品设计合适的结构体(PRODUCT)。

每一种商品包含编号(number)、* 名称(name)、价格(price)、折扣(discount)4项信息,根据表9-1,为这些信息选择合适的数据类型。

*(2)建立2个函数,以实现对商品的操作。

input函数实现商品的输入;* display函数显示商品信息。

要求这2个函数都以商品的结构体(PRODUCT)指针为参数。

*(3)在主函数中为商品键盘定义一个结构体变量(keyboard),利用input函数实现键盘信息的输入;* 定义一个结构体数组(elec_device[3]),利用input函数实现冰箱、空调、电视信息的输入;* 最后利用display函数显示4种商品的信息。

** 表9-1**编号名称价格折扣*1010 键盘89.50 0.85*1021 冰箱1024.00 0.95*1022 空调2058.50 0.90*1023 电视3001.88 0.95*****************************************************************/#include <stdio.h>typedef struct _PRODUCT{int iNumber;char strName[32];float fPrice;float fDiscount;}PRODUCT,*PPRODUCT;void input(PRODUCT *pProduct);void display(PPRODUCT pProduct);void main(){int i;PRODUCT kyeboard;PRODUCT elec_device[3];input(&kyeboard);for(i=0;i<3;i++){input(&elec_device[i]);}display(&kyeboard);for(i=0;i<3;i++){display(&elec_device[i]);}}/******************************************************************函数名称:input()**参数:PRODUCT *pProduct -PRODUCT结构体指针,用来存放输入数据***返回值:无*说明:*该函数用来完成PRODUCT结构体数据的输入。

C语言学习 实验10 结构体和共用体

C语言学习 实验10  结构体和共用体

实验10 结构体和共用体1.实验目的掌握结构体类型变量的定义和使用;掌握结构体类型数组的概念和使用;掌握链表的概念,初步学会对链表进行操作;掌握共用体的概念与使用。

2.实验内容编程序,然后上机调试运行。

(1).有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。

(习题11.5)要求用input函数输入10个学生数据;用average函数求总平均分;用max函数找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。

(2).13个人围成一圈,从第1个人开始顺序报号1、2、3。

凡报到“3”者退出圈子,找出最后留在圈子中的人原来的序号。

(习题11.9)本题要求用链表实现。

(3).建立一个链表,每个结点包括:学号、姓名、性别、年龄。

输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。

(习题11.11)(4).输入和运行以下程序union data{int i[2];float a;long b;char c[4];}u;main ( ){scanf("%d,%d",&u.i[0],&u.i[1]);printf(i[0]=%d,i[1]=%da=%fb=%1dc[0]=%c,c[1]=%c,c[2]=%c,c[3]=%c,u.i[0],u.i[1],u.a,u.b,u.c[0],u.c[1],u.c[2],u.c[3]);}输入两个整数10000、20000给u.i[0]和u.i[l],分析运行结果。

然后将scanf语句改为:scanf("%ld",&u.b);输入60000给b,分析运行结果。

实验10 结构体、共用体

实验10 结构体、共用体

实验11 结构体、共用体一、实验目的:1、掌握结构体类型定义和结构体变量定义、初始化的方法;2、掌握结构体成员的访问方法,熟悉结构体嵌套定义方法;3、掌握结构体数组的定义和使用方法,能够用模块化方法设计程序;4、熟悉typedef的基本用法。

二、实验内容1、下列程序的功能是:先定义结构体Book,再定义两个变量book1、book2,其中一个初始化,另一个从键盘输入数据,最后输出book1、book2的值。

程序运行结果如下:请根据题意和注释填写下列程序所缺代码,并回答相关问题:#include<stdio.h>//定义结构体Book,成员有:书名(title),字符数组,长度为100;//作者(authors),字符数组,长度为30;ISBN,字符数组,长度为20;//页数(pages),整型;价格(price),单精度浮点数。

/*代码段_1*/struct Book {char title[100];char authors[30];char ISBN[20];int pages;float price;};int main(){//定义两个Book型变量book1、book2,其中book1用我们本学期所使用教材的数据初始化Struct Book book1 = {“C程序设计(第四版)”,”谭浩强”,“978-7-302-22446-4”,390,29.0f};//从键盘输入我们本学期所使用实验指导书的数据给book2/*代码段_2*/printf("请输入实验指导书的信息:书名、作者、ISBN、页数、价格:\n");Scanf(“%s %s %s %d %f”,book2.title,book2.authors,book2.ISBN,&book2.pages,&b ook2.price);printf("\n教材、实验书信息如下:\n");printf("书名:%s, 作者:%s,ISBN: %s,\n总页数:%d,价格: %f\n\n",book1.title,book1.authors,book1.ISBN,book1.pages,book1.price);/*代码段_3*///将book1和book2的信息输出return 0;}问题:(1)如何定义结构体类型?(2)怎样定义结构体变量,并初始化?(3)怎样输入、输出结构体变量各成员的值?2、(基础题)请按下列要求编程:(1)先定义一个结构体Date,它包含三个成员:年(year,int)、月(month,int)、日(day,int);(2)再定义一个结构体,它包含三个成员:姓名(name,char[10])、性别(sex,char类型,’m’为男,’f’为女)、出生时间(birthday,Date类型)、身份证号(ID,char[19])、电子邮箱(email,char[60]),并用typedef将该结构体命名为Person类型;(3)然后在主函数中定义一个Person类型的变量me,通过键盘输入自己的信息,然后输出me的各成员值。

9-1 结构体与共用体

9-1 结构体与共用体

北京建筑工程学院计算机教学与网络信息部计算机程序设计基础实验报告实验9-1:实验名称结构体和共用体(1)实验地点大兴基础楼B座201姓名张三专业土木工程班级土081 学号 2 日期2009.05.26【实验目的】(1)掌握结构体类型变量的定义和使用(2)掌握结构体类型数组的概念和应用(3)了解链表的概念和操作方法【实验要求】(1)掌握结构体类型变量的定义和使用(2)了解链表的概念和操作方法【实验环境】(1) Microsoft XP操作系统(2) Microsoft VC++ 6.0【实验内容】1.线性表操作/acmhome/problemdetail.do?&method=showdetail&id= 1214题目描述:请你定义一个线性表,可以对表进行“在某个位置之前插入一个元素”、“删除某个位置的元素”、“清除所有元素”、“获取某个位置的元素”等操作。

键盘输入一些命令,可以执行上述操作。

本题中,线性表元素为整数,线性表的第一个元素位置为1。

线性表的最大长度为1000。

输入:各个命令以及相关数据,它们对应的格式如下:在某个位置之前插入操作:insert,接下来的一行是插入的组数n,下面是n行数据,每行数据有两个值,分别代表位置与插入的元素值清除线性表:clear获取某个位置的元素:getelem,接下来一行是需要获取的元素位置删除某个位置的元素:delete,接下来一行是被删除的元素位置当输入的命令为exit时,程序结束输出:当输入的命令为getelem时,请输出获取的元素值,当输入的命令是delete时,请输出被删除的那个元素值注意,所有的元素均占一行样例输入:insert21 12 2delete1clearinsert21 32 4getelem2exit样例输出:14提示:你也可以使用链表实现作,有空练练吧2.合并表/acmhome/problemdetail.do?&method=showdetail&id= 1215题目描述:已知va和vb分别为非递减有序线性表,将va和vb进行合并为新的线性表vc,并保持vc仍然非递减有序。

结构体与共同体1

结构体与共同体1

电子信息工程学系实验报告课程名称:C程序设计实验项目名称:结构体和共同体实验时间:班级:计算机姓名:学号:实验目的:1.掌握结构体类型变量的定义的使用。

2.掌握结构体类型数组的概念和使用。

3.掌握链表的概念,初步学会对链表进行操作。

4.掌握共用体的概念与使用。

实验环境:操作系统Windows XPTurbo C 2.0 集成系统实验内容及过程、结果及分析:1.有5个学生,每个学生的数据包括学号,姓名,3门课的成绩,从键盘输入5个学生数据,要求输出3门课的总平均成绩,以及最高分的学生的数据(包括学号,姓名,3门课的成绩,平均分数)。

#include <stdio.h>struct student{int num;char name[20];float score[3];float avr;}stu[5];void main(){int i,j,maxi;float sum,max,average;for(i=0;i<5;i++){printf("input scores of student %d:\n",i++);printf("No.:");scanf("%s",stu[i].www.bjl.tw.num);printf("name:");scanf("%s",stu[i].name);for(j=0;j<3;j++){printf("input scores of student %d:",j+1);scanf("%f",&stu[i].score);}}average=0;max=0;maxi=0;for(i=0;i<5;i++){sum=0;for(j=0;j<3;j++)sum=sum+stu[i].score[j];stu[i].avr=sum/3.0;average=average+stu[i].avr;if(sum>max){max=sum;maxi=i;}}average/=5;printf(" No. name score1 score2 score3 average\n");for(i=0;i<5;i++){printf("%5s%10s",stu[i].num,stu[i].name);for(j=0;j<3;j++)printf("%9.2f",stu[i].score[j]);printf(" %8.2f\n",stu[i].avr);}printf("average=%5.2f\n",average);printf("The highest score is :student %s,%s.\n",stu[maxi].num,stu[maxi].name);printf("His scores are:%6.2f,%6.2f,%6.2f,average:%5.2f.\n",stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);getch();return;}运行的情况:input scores of student 1:No.:101name:tuscores1:85scores2:62scores3:80input scores of student 2:No.:102name:jiscores1:92scores2:62scores3:77input scores of student 3:No.:103name:buscores1:85scores2:85scores3:86input scores of student 4:No.:104name:xiscores1:96scores2:86scores3:86input scores of student 5:No.:105name:zaiscores1:95scores2:86scores3:84No. name score1 score2 score3 average 101 tu 85 62 80 75.67 102 ji 92 62 77 77.00 103 bu 85 85 86 85.33 104 xi 96 86 86 89.33 105 zai 95 86 84 88.33 average=83.13The highest score is :student 104,xi.His scores are: 96, 86, 86,average:89.33.。

第八章结构体、共用体与枚举实验报告

第八章结构体、共用体与枚举实验报告
z=x^y<<2;
则z的二进制值是多少?提示,左移的优先级高于^
三、实验结果与思考
inti;floatsum = 0;
for ( i = 0;i<3;i++ )
sum = sum+p->score[i];
printf( "%6.2f\n", sum ) ;
}
3、下面程序的输出结果是( )
typedef struct{
float x ;
char z ;
}mytype;
mytype a ;
main()
{ union{unsigned int t;
unsigned char c;
}u;
u.c='a';
printf("%c\n",u.t); getch();
}
结论:一个共用体中可能有若干个不同类型的成员,但在任何时刻,只有一个成员的值被存储。
这就是最后赋给它的值。
6、设有以下语句
char x=3,y=6,z;
main()
{
printf("%d",sizeof(a));
}
4、下面程序的输出结果是( )
typedef union{
long a[1] ;
char y ;
char c[10];
}S;
S a ;
main()
{
printf("%d",sizeof(a));
}
5、下面程序的输出结果为()
#include "stdio.h"
实验项目编号
C05200C08
实验项目名称
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=0;i<5;i++)
{printf("%6s%7s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%8d",stu[i].score[j]);
printf("%8.2f\n",stu[i].avr);
}
printf("最好成绩的学生是%s,总分为%d\n",stu[maxi].name,max);
出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。
要rage函数求总平均分;用max函数找出最高分学
生数据;总平均分和最高分的学生的数据都在主函数中输出。
四、实验步骤
2.程序清单
#include<stdio.h>
}
3.本程序运行结果
4.实验小结
1熟悉各数组的定义,input输入的使用方法,如input("%d",&stu[i].score[j]);
熟悉for语句的多重使用。还要考虑到程序输出的整齐问题。
}
}
max=0;
maxi=0;
for(i=0;i<5;i++)
{sum=0;
for(j=0;j<3;j++)
sum+=stu[i].score[j];
stu[i].avr=(float)sum/3;
if(sum>max)
{max=sum;
maxi=i;
}
}
printf("学号名字科目1科目2科目3平均分\n");
《程序设计实验》课程实验报告十
实验题目:结构体和共用体
一、实验目的
(1)掌握结构体类型变量的定义和使用;
(2)掌握结构体类型数组的概念和应用;
(3)掌握链表的概念,初步学会对链表进行操作;
(4)掌握共用体的概念与使用。
二、实验环境
1.硬件环境:计算机
2.软件环境:VC++6.0
三、实验内容
1)有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求输
#define input scanf
struct student
{char num[5];
char name[10];
int score[3];
float avr;
}stu[5];
main()
{int i,j,max,maxi,sum;
printf("请输入5个学生的代号。\n");
for(i=0;i<5;i++)
{printf("第%1d个学生的学号:",i+1);
input("%s",stu[i].num);
printf("英文名字:");
input("%s",stu[i].name);
for(j=0;j<3;j++)
{printf("科目%1d的分数:",j+1);
input("%d",&stu[i].score[j]);
相关文档
最新文档