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

合集下载

实验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的各成员值。

c语言实验报告实验

c语言实验报告实验

c语言实验报告实验C 语言实验报告实验一、实验目的本次 C 语言实验的主要目的是通过实际操作和编程实践,加深对 C 语言基本语法、数据类型、控制结构、数组、指针等重要概念的理解和掌握,提高编程能力和解决实际问题的能力。

二、实验环境本次实验使用的编程环境为 Visual Studio 2019,操作系统为Windows 10。

三、实验内容1、基本数据类型和运算符的使用定义不同类型的变量,如整数型(int)、浮点型(float、double)、字符型(char)等,并进行赋值和运算操作。

熟悉各种运算符的优先级和结合性,包括算术运算符(+、、、/、%)、关系运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等。

2、控制结构的应用使用ifelse 语句实现条件判断,根据不同的条件执行相应的代码块。

运用 switch 语句进行多分支选择,处理不同的情况。

利用 for 循环、while 循环和 dowhile 循环实现重复执行的操作,例如计算数列的和、打印特定的图案等。

3、数组和字符串的操作定义和使用一维数组、二维数组,进行数组元素的访问、赋值和遍历。

掌握字符串的存储和处理方式,使用字符数组和字符串函数(如strlen、strcpy、strcmp 等)进行字符串的操作。

4、指针的应用理解指针的概念和指针变量的定义,通过指针访问变量和数组元素。

实现指针与数组、指针与函数的结合使用,体会指针在程序中的灵活运用。

5、函数的定义和调用编写自定义函数,实现特定的功能,如计算阶乘、判断素数等。

掌握函数的参数传递方式(值传递和地址传递),理解函数的返回值。

6、结构体和共用体的使用定义结构体类型,创建结构体变量,访问结构体成员。

了解共用体的概念和使用场景,比较结构体和共用体的区别。

四、实验步骤1、实验准备打开 Visual Studio 2019 开发环境,创建一个新的 C 语言项目。

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

第八章结构体、共用体与枚举实验报告
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;
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 ;
具体内容:
1、有以下程序,程序运行后的输出结果是()。
structs
{intx, y;
} data[2] = { 10, 100, 20, 200 } ;
main( )
{structs *p = data;
printf( "%d\n", ++ ( p->x ) ) ;
}
2、有以下程序,程序运行后的输出结果是()。
main()
{
printf("%d",sizeof(a));
}
4、下面程序的输出结果是( )
typedef union{lonBiblioteka a[1] ;char y ;
char c[10];

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结构体、共用体定义方式、引用方式和功能的相同点与不同点。

华水《C语言程序设计》实验报告实验七参考模板

华水《C语言程序设计》实验报告实验七参考模板
程序代码:
#include<stdio.h>
void main()
{ struct man
{char name[10];
int years;
}boy[4]={{"zhang san",20},{"li si",22},{"wang ping",23},{"little",0}};
码:
#include<stdio.h>
#include<string.h>
struct person
{ char name[20];
int count;
}leader[5]={"zhang",0,"wang",0,"li",0,"zhao",0,"liu",0};
void main()
{ int i,j;
char select[20];
for(i=0;i<5;i++)
{ printf("%d please input your result:",i+1);
scanf("%s",select);
for (j=0;j<5;j++)
{if (strcmp(leader[j].name,select)==0)
leader[j].count++;
}
}
printf("the result:\n");
for(j=0;j<5;j++)
printf("%s\t%d\n",leader[j].name,leader[j].count);

C语言实验报告9模板

C语言实验报告9模板
编程思路:定义结构体含No.、name、score1、score2、score3、average共6个成员,其中No。、name为字符数组,score1、score2、score3为整型变量,average为浮点型变量。然后再定义5个元素的结构体数组,并赋初值.用一重循环计算average并输出结果.
宁夏师范学院数学与计算机科学学院
《高级语言程序设计》实验报告
实姓 名
专业、班级
12级数应(2)班
实验地点
指导教师
郑利珍
时间
一、实验目的及要求
1、熟悉结构体类型的概念和定义方法以及结构体变量的定义和引用。
2、掌握指向结构体变量的指针变量的概念和应用,特别是链表的概念和应用。
签名:郑利珍
日期:2013年月日
成绩
100
2、在上题中,按平均成绩由高到低排序后,输出每个学生的成绩,输出格式与上题相同。
注意:在排序中交换average成员的数据时,其他成员的数据也要作对应的交换。
四、分析与讨论
五、教师评语
1.按时完成实验;
2.实验内容和实验过程记录完整;
3.回答问题完整、正确;
4.有关于实验的心得;
5.实验报告的撰写认真、报告格式符合要求。
3、掌握运算符“。”和“-〉"的应用。
4、掌握共用体的概念和应用。
二、实验设备(环境)及要求
硬件:PC(P 以上,128M以上内存);
软件:Windows XP操作系统、Visual C++ 6.0。
三、实验内容、步骤及结果
1、有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,用赋初值的方法输入5个学生的数据到结构体数组中,输出每个学生的3门课平均成绩(保留2位小数)。输出格式为:

Ex10c语言实验报告

Ex10c语言实验报告

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

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

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

程序运行如下:
(2)13个人围成一圈,从第1个人开始顺序报号1、2、3。

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

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

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

(4)输入和运行以下程序并运行:
输入两个整数10000、20000赋给u.i[0]和u.i[1]。

运行结果如下:
将scanf语句改为:
scanf("%ld,"&u.b);
输入60000赋给b。

运行结果如下:
实验总结:
结构体、公用体定义方式、引用方式和功能的相同点与不同点。

枚举类型的定义及应用场合。

1、在做实验内容(1)、(2)时,先分析运行结果,注意结构体、公用体的不同特性,再上机运行,对照结果是否一致。

2、实验内容综合性较强,包括函数调用和结构体的应用,提前做好预习工作,再上机实验。

实验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占一行每个学生的学号、姓名、三科成绩占一行,空格分开。

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

实验九参考程序实验 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#include <stdio .h> typedef struct _PRODUCTint iNumber;char strName[32];float fPrice;float fDiscount; * 编号 名称价格 折扣 *1010键盘 89.50 0.85 *1021冰箱 1024.00 0.95 *1022 空调 2058.500.90 *1023 电视 3001.88 0.95*************************************************************** */}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 ]);}}I****************************************************************函数名称:input()参数:PRODUCT *pProduct -PRODUCT 结构体指针,用来存放输入数据* 返回值:无** 说明:*该函数用来完成PRODUCT吉构体数据的输入**************************************************************/void input(PRODUCT †pProduct){printf ( "\n 请输入商品的编号:\n" );scanf ("%d" ,&pProduct->iNumber);printf ( " 请输入商品的名称:\n" );scanf ("%s" ,pProduct->strName);printf ( " 请输入商品的价格:\n" );scanf ("%f" ,&pProduct->fPrice);printf ( " 请输入商品的折扣:\n" );scanf ("%f" ,&pProduct->fDiscount);}I**************************************************************函数名称:display()参数:PRODUCT pProduct -PRODUCT 结构体数据printf ( " 商品的价格:%.2f\n" ,pProduct->fPrice);printf ( " 商品的折扣:%.2f\n" ,pProduct->fDiscount);}实验9-/***************************************************************** 实验9.2†返回值:无** 说明:*该函数用来完成PRODUCT吉构体数据的显示。

*****************************************************************/void display(PPRODUCT pProduct){printf ( "\n 商品的编号:%d\n" ,pProduct->iNumber);printf ( " 商品的名称:%s\n" ,pProduct->strName);* (1 )利用链表结构(PLAY_LIST) ,为某媒体播放器建立一个播放列表(playList) ,* 该链表的每一个节点包括:歌曲编号(number) 、歌曲名称(name) 、歌手姓名(artist) 、歌曲长度(time) ,见表9-2 。

* (2)建立4个函数,以实现对播放列表操作。

函数的原型如下:* 创建播放列表PLAY_LIST* createList();* 在播放列表中添加一首歌曲PLAY_LIST* insertItem(PLAY_LIST* pPlayList,PLAY_LIST* pNewPlayList);* 在播放列表中删除编号为iItemNumber 的歌曲PLAY_LIST*deleteItem(PLAY_LIST* pPlayList, int iItemNumber);* 显示整个播放列表中的所有信息voiddisplayIList(PLAY_LIST* pPlayList);* (3 )在主函数中定义一个链表playList 。

* A) 利用函数createList 创建播放列表playList ,并在其节点上依次存储编号为1100 、1102 、1103 的3首歌曲,* 并调用displayList 函数显示此时整个播放列表中的所有信息。

* B) 调用insertItem 函数将编号为1101 的歌曲添加到playList 中,并显示整个播放列表中的所有信息。

* C) 调用deleteItem 函数将编号为1102 的歌曲从playList 中删除,并显示整个播放列表中的所有信息。

表9-2歌曲编号歌曲名称歌手姓名歌曲长度1100 落叶归根王力宏05:161101 风吹麦浪李健04:071102 往事随风齐秦04:381103 天空王菲03:42***************************************************************#include <stdio .h>typedef struct _PLAY_LIST{int iNumber;char strName[64];char strArtist[32];struct _TIME{int iMinutes;int iSeconds;} sTime;struct _PLAY_LIST * pNext ;}PLAY_LIST,*PPLAY_LIST;PLAY_LIST* createList();PLAY_LIST* insertItem(PLAY_LIST* pPlayList,PLAY_LIST* pNewPlayList);PLAY_LIST* deleteItem(PLAY_LIST* pPlayList, int voidiItemNumber);displayList(PLAY_LIST* pPlayList);int inputItem(PLAY_LIST* pPlayList);void main(){PLAY_LIST *pPlayList= NULL;PLAY_LIST *pNewPlayList= NULL;pPlayList=createList();printf ( " 播放列表:\n" );displayList(pPlayList);printf ( "\n 播放列表插入曲目:\n" ); pNewPlayList=createList();pPlayList=insertItem(pPlayList,pNewPlayList);printf ( " 插入新的曲目之后的播放列表:\n" ); displayList(pPlayList);printf ( "\n 播放列表删除曲目:\n" );pPlayList=deleteItem(pPlayList,1102);printf ( " 删除编号为1102 的曲目之后的播放列表:\n" ); displayList(pPlayList);} /**************************************************************** ** 函数名称:createList()** 参数:无返回创建好的播放列表链表说明:该函数用来创建播放列表链表************************************************************刘PLAY_LIST* createList(){int iResult=0;PLAY_LIST *pListHead,*pTemp,*pNewList;pTemp=pNewList=(PLAY_LIST*) malloc ( sizeof (PLAY_LIST)); pNewList-> pNext =NULL;pListHead= NULL;printf ( " 创建新播放列表\n" );iResult=inputItem(pNewList);if (iResult){ pListHead=pNewList;}while (iResult){pNewList=(PLAY_LIST*) malloc ( sizeof (PLAY_LIST)); pNewList->pNext =NULL;iResult=inputItem(pNewList);if (iResult){ pTemp-> pNext =pNewList; pTemp=pNewList;}}return pListHead;}函数名称:insertItem()I***************************************************************参数:PLAY_LIST* pPlayList - PLAY_LIST* pNewPlayList - 操作的播放列表链表插入的新项目* 返回值:PLAY_LIST* - 返回操作后的播放列表链表** 说明:* 该函数用来完成播放列表链表的新项目插入。

相关文档
最新文档