实验九结构体
C语言实验-第七章-第九章2

实验七:指针的应用【实验目的】1.掌握指针和指针变量,内存单元和地址、变量与地址、数组与地址的关系;2.掌握指针变量的定义和初始化,指针变量的引用方式;3.能正确使用数组的指针和指向数组的指针变量;【实验内容】1.填空题输入一个字符串,将其中的大写字母转换成小写字母,然后输出本程序主要是比较scanf()输入和gets()输入的区别#include <stdio.h>void main(){ char s[20];char *p=s;scanf(“%s”,p); /*注意用scanf()输入和gets()输入的区别*/while( 1 ){if( 2 ) *p=*p+ (‘a’-‘A’);p++ ;}puts ( 3 );}答案:1、*p!=’\0’2、(*p>='A')&&(*p<='Z')3、s运行结果:输入:Program输出:program输入:This is Program输出:this提示:scanf ()输入时遇到空格认为字符串结束,用gets()输入时只有遇到回车才认为字符串结束。
如键入any boy并回车,则2。
补充程序题输入15个整数存入一维数组,再按逆序重新调整该数组中元素的顺序然后再输出。
下面给出部分程序的内容,请将程序补充完整,然后上机调试。
部分程序清单如下:#include <stdio.h>void main(){ int a[15],*p1,*p2,x;for(p1=a;p1<a+15;p1++)scanf("%d",p1);for(p1=a,p2=a+14;p1<a+7;p1++,p2--){ x=*p1;*p1=*p2;*p2=x;}……}答案:for(p1=a;p1!=a+15;p1++)printf("%d ",*p1); // %d后面有一个空格运行结果:输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15输出:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1提示:(1)在整型数组中,没有结束标志,必须依靠数组中数据元素的个数控制循环次数。
数据结构课程设计之九宫格实验报告

九宫问题一、简介1.设计目的:通过实践掌握用广度优先搜索解决问题的方法2.问题的描述:在一个3*3的九宫中,有1—8这8个数,及一个空格随机的摆放在其中的格子里。
如下面左图所示。
要求实现这样的问题:将九宫问题调整为如右图所示的形式。
调整的规则是:每次只能将与空格(上、下或左、右)相邻的一个数字平移到空格中。
要求:问你通过移动中间的空格是否能达到右图所示的状态,如果能,则输出所走的路径,如果不能,则输出:unsolvable。
最好能画出九宫的图形形式,并在其上动态的演示移动过程。
二、数据结构的设计:1:为了了解九宫格的状态所以需要记录九宫格的当前状态2:因为要采用是两端同时开始搜索的方法,所以要记录结点是从那个方向搜索到的3:为了减少重复搜索,所以要记录当前状态是由父结点怎么移动得来的4:需要输出路径,所以得记录从根节点到当前结点空格的移动路径5:需要一个队列来实现广度优先搜索6:还需要以一种便于访问的方式记录下所有已经访问过的结点,所以构造一个哈希表7:便于找到答案后释放所用空间,还需要将所有已搜索过的结点构造成一个链表综上定义如下结构体:typedef struct LNode{int data;//用一个各位不相等的9位数来表示当前状态,9表示空格int flag;//0表示由初始状态生成,1表示由末状态生成int fangxaing;//表示双亲结点生成此结点时空格的移动方向char *path;//存放路径的数组下标,比实际值小1struct LNode *next,*next1;//next用于队列中,next1用于链表}LNode,*Linklist;typedef struct {Linklist front,rear;}LinkQueue,*Queue;Linklist *hxb;//哈希表hxb=(Linklist*)calloc(362881,sizeof(Linklist));哈希函数为所有比表示这个状态的各位不相等的九位数小的各位不相等的九位数的个数,所以不会产生冲突三、功能(函数)设计:本程序的人物要求是完成九宫格的求解并输出结果,根据任务要求,总体上可以分为五个功能模块,分别为:1:程序功能介绍和操作提示模块:在主函数int main()中显示,用于程序功能的介绍和操作提示。
实验九结构体

实验九结构体、共用体与枚举类型实验时间:年月日【实验目的】1、掌握结构体类型、共用体类型和结构体类型变量的定义方法;2、掌握结构体类型变量成员赋值和引用方法;3、学会使用结构体数组;4、掌握共用体和枚举类型数据的使用。
【实验内容】1、结构体类型的定义;2、结构体变量的定义、赋值与使用;3、结构体数组与结构体指针的定义与使用;4、共用体类型的定义,共用体变量的定义与使用;5、枚举类型的定义与使用;6、链表与动态内存分配;7、自定义类型的使用。
【实验步骤】一、在E或F盘上建立以自己的学号命名的文件夹。
二、上机验证与分析题1、写出程序ex9_1.c运行的结果。
/*文件名ex9_1.c*/#include <stdio.h>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 <stdio.h>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 <stdio.h>void main(){struct List{int data ;struct List *next;};struct List a[3]={1,&a[1],2,&a[2],3,&a[0]}, * p;p=&a[1] ;printf("%d\n",--p->data);printf("%d\n",p->next->data);printf("%d\n",p--->data);}三、编程题:1、试用结构体定义一个工厂职工的信息表,包含如下成员:工号、姓名、性别、年龄、参加工作日期、联系电话。
C语言程序设计实验实验报告

C语⾔程序设计实验实验报告《C语⾔程序设计实验》实验报告实验九⽂件编程(⼀)班级:_07某某专业1班_学号:______姓名:___实验样例_____⽇期:___2008.6.10_____台州学院数信学院计算机系制作⼀、实验⽬的和要求综合使⽤基本结构、基本算法、函数、指针、结构体、链表等知识设计程序。
⼆、实验指导1、注意:本次实验为综合性实验,需要综合本课程以前所学内容,完成编制⼀个⼩型应⽤程序。
需要复习课本以前所学内容,浏览上课讲解的相关内容。
2、实验时间安排:准备实验⽅案,上课时上机编程,课余完成整个设计并完成实验报告。
3、实验具体要求:以⼀张假想的学⽣期中成绩表为实验对象,编制⼀个⼩型应⽤程序,可以考虑实现以下功能:(1)成绩修改;(2)成绩查询;(3)成绩统计;(4)成绩输⼊。
也可以实现其他⾃定义的功能。
界⾯采⽤简易菜单形式,可以分级显⽰。
实验需要进⾏以下步骤:需求分析、程序设计、程序调试、程序运⾏,并对程序运⾏效果进⾏分析,提出改进⽅案。
初步锻炼学⽣的程序设计能⼒、程序调试能⼒、对实验结果进⾏综合分析的能⼒。
4、实验成绩评价标准:参见成绩评定表。
四、实验报告内容(参见样本,请另附页)实验报告必须包含以下内容:1、对你设计的程序功能进⾏的较详细描述。
2、画出程序测试⽤的学⽣期中成绩表(包含:表头、若⼲⾏包含学⽣成绩等信息的数据⾏)。
3、给出程序清单(包含结构体的声明与定义、所有的函数声明、所有的全局变量、所有的函数定义、必要的注释。
注:如果程序过长,可以不⽤给出所有的函数定义,只给出主要的函数定义)。
4、运⾏结果(写出运⾏时的主界⾯、各模块的实现界⾯等,不作具体要求,但要求能清晰地体现出程序的功能)。
5、对你的设计作⼀个评价(可以包含你所花的时间、精⼒,你遇到的困难及如何解决的,你的设计过程所遇到的其他事情;必须包含你对设计的客观评价,以及提出的改进⽅案)。
1、程序功能描述:(略)2、成绩表样表:3、程序清单:(红⾊部分是和上⼀个程序的区别之处)#includestruct student /*期中成绩表的结构声明*/{int num;char name[20];char sex;float YuWen;float ShuXue;float YingYu;float totle;};#define MAX_STU_NUMBER 100 /*宏定义最⼤学⽣数为100⼈*/struct student Stu[MAX_STU_NUMBER]; /*⼀次性定义100个学⽣的存储空间*/int STU_NUMBER; /*存放学⽣数*/char *FileName = "chengji.txt"; /*成绩存放的⽂件*//*所有的函数声明:*/int SelectMainMenu(); /*显⽰并选择主菜单。
实验九-(2-1-5)卷积码编码译码技术

实验九 (2,1,5)卷积码编码译码技术一、实验目的1、掌握(2,1,5)卷积码编码译码技术2、了解纠错编码原理。
二、实验内容1、(2,1,5)卷积码编码。
2、(2,1,5)卷积码译码。
三、预备知识1、纠错编码原理。
2、(2,1,5)卷积码的工作原理。
四、实验原理/卷积码是将发送的信息序列通过一个线性的,有限状态的移位寄存器而产生的编码。
通常卷积码的编码器由K级(每级K比特)的移位寄存器和n个线性代数函数发生器(这里是模2加法器)组成。
若以(n,k,m)来描述卷积码,其中k为每次输入到卷积编码器的bit数,n 为每个k元组码字对应的卷积码输出n元组码字,m为编码存储度,也就是卷积编码器的k元组的级数,称m+1= K为编码约束度m称为约束长度。
卷积码将k 元组输入码元编成n元组输出码元,但k和n通常很小,特别适合以串行形式进行传输,时延小。
与分组码不同,卷积码编码生成的n元组元不仅与当前输入的k元组有关,还与前面m-1个输入的k元组有关,编码过程中互相关联的码元个数为n*m。
卷积码的纠错性能随m的增加而增大,而差错率随N的增加而指数下降。
在编码器复杂性相同的情况下,卷积码的性能优于分组码。
编码器随着信息序列不断输入,编码器就不断从一个状态转移到另一个状态并同时输出相应的码序列,所以图3所示状态图可以简单直观的描述编码器的编码过程。
因此通过状态图很容易给出输入信息序列的编码结果,假定输入序列为110100,首先从零状态开始即图示a状态,由于输入信息为“1”,所以下一状态为b并输出“11”,继续输入信息“1”,由图知下一状态为d、输出“01”……其它输入信息依次类推,按照状态转移路径a->b->d->c->b->c->a输出其对应的编码结果“”。
译码方法⒈代数代数译码是将卷积码的一个编码约束长度的码段看作是[n0(m+1),k0(m+1)]线性分组码,每次根据(m+1)分支长接收数字,对相应的最早的那个分支上的信息数字进行估计,然后向前推进一个分支。
C语言实验报告参考答案

长沙理工大学2010C语言实验报告参考答案实验一熟悉C语言程序开发环境及数据描述四、程序清单1.编写程序实现在屏幕上显示以下结果:The dress is longThe shoes are bigThe trousers are black答案:#include<stdio.h>main(){printf("The dress is long\n");printf("The shoes are big\n");printf("The trousers are black\n");}2.改错题(将正确程序写在指定位置)正确的程序为:#include <stdio.h>main(){printf("商品名称价格\n");printf("TCL电视机¥7600\n");printf("美的空调¥2000\n");printf("SunRose键盘¥50.5\n");2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。
答案:#include<stdio.h>main(){int a,b,c,x,y;a=150;b=20;c=45;x=a/b;y=a/c;printf("a/b的商=%d\n",x);printf("a/c的商=%d\n",y);x=a%b;y=a%c;printf("a/b的余数=%d\n",x);printf("a/c的余数=%d\n",y);}4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a 赋给c。
(提示:用条件运算符)答案:#include<stdio.h>main()int a,b,c;a=0;b=-10;c= (a>b) ? b:a;printf("c = %d\n",c);}五、调试和测试结果1.编译、连接无错,运行后屏幕上显示以下结果:The dress is longThe shoes are bigThe trousers are black3、编译、连接无错,运行后屏幕上显示以下结果:a/b的商=7a/c的商=3a/b的余数=10a/c的余数=154. 编译、连接无错,运行后屏幕上显示以下结果:c =-10实验二顺序结构程序设计四、程序清单1.键盘输入与屏幕输出练习问题1 D 。
c语言第二部分 实验内容

三、实验内容
1.阅读并输入如下程序,查看运行结果,并分析其功能。 # include "stdio.h" main ( ) { int a, b, c, s ; a = 5; b = 4; c = 6; s = (a+b+c)/ 3; printf (" a = %d, b = %d, c = %d \n, s = %d ", a, b, c, s) ; }
C语言程序设计实验·设计·习题
2.下面是一正方形面积的计算程序,通过输入不同的边长,求 出不同的面积。输入此程序并试运行。 注意:程序中含有输入语句,运行时将会停留在另一窗口中等待 输入数据。 # include"stdio.h" main ( ) { int r, s ; scanf (" %d ",&r) ; s= r*r; printf (" s = %d ", s) ; } 3.在Turbo C中调试并修改以下C程序中的错误。
C语言程序设计实验·设计·习题
三、实验内容
1.改正书中所给的相关程序的错误。 2.程序填空。 (1)按程序中注释的要求填输出语句。 (2)要求运行时必须按如下格式输入数据,请填空。 3.程序编译成功,只是说明没有语法错误,但并不一定能得出 正确结果,因为有可能存在编程逻辑错误。这时,我们需要跟踪变量、 调试程序,找出问题所在。调试的一般方法有: (1)单步跟踪:选择Run菜单下的Step命令,也可以直接按快捷键 F7(可跟踪进函数、过程)或快捷键F8,这样可以每条语句单独运行。 (2)运行至光标处:先将光标移至目标语句,然后选择Run菜单下 的Go to Cursor命令,或按快捷键F4,这样可以连续运行从开始到光 标处的一段程序。
C语言_实验九、结构体程序设计

实验九、结构体程序设计一、实验目的1.掌握结构、结构数组、结构指针的定义及使用;2.掌握简单的链表的定义及使用;3.掌握共用体和枚举类型的定义及使用;4.掌握文件的简单的定义、打开、写、关闭等操作。
二、实验内容1.[题目内容]某考点建立一个考生人员情况登记表、表格内容如下:1)根据上表正确定义该表格内容要求的数据类型。
2)分别输入各成员项数据,并打印输出(为简便,假设有3个考生)编程序,然后上机调试运行程序。
2.[题目内容]某单位进行选举,有5位候选人:zhang、wang、li、zhao、liu。
编写一个统计每人得票数的程序。
要求每个人的信息使用一个结构体表示,5个人的信息使用结构体数组。
3.[题目内容]设张三20岁、李四22岁、王平23岁,编程输出3人中年龄最小者的姓名和年龄。
4.[题目内容]定义一个学生成绩结构体类型,包含“学号”、“姓名”、“性别”、“年龄”、“班级”、“英语”、“数学”、“物理”、“总分”、“名次”等信息。
编写6个函数分别用于:(1)使用结构体数组,输入全班10名学生的上述信息;(2)计算每一个学生的总分、平均分;(3)计算每一门课程的平均分;(4)查找成绩有不及格的学生信息;(5)按学生成绩总分降序排序;(6)输出全班学生的学号、总分及名次。
5.[题目内容]利用上一题的结构类型,创建包含10个结点的无序链表。
编写5个函数分别实现下述功能(参考前面第三部分内容):(1)显示链表;(2)添加结点;(3)删除结点;(4)计算每位学生的总分;(5)按英语成绩排序。
三、课后作业(写实验报告)1.学生成绩管理:有5个学生,每个学生的数据包括学号、班级、姓名、三门课成绩。
从键盘输入5个学生数据,要求打印出每个学生三门课的平均成绩,以及每门课程平均分、最高分学生数据(包括学号、班级、姓名、三门课成绩,平均分)。
(1)定义学生结构体。
(2)用一个函数实现5个学生数据的输入,用另一个函数负责求每个学生三门课程的平均成绩,再用一个函数求出平均分最高的学生并输出该学生的数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验九结构体、共用体与枚举类型
实验时间:年月日
【实验目的】
1、掌握结构体类型、共用体类型和结构体类型变量的定义方法;
2、掌握结构体类型变量成员赋值和引用方法;
3、学会使用结构体数组;
4、掌握共用体和枚举类型数据的使用。
【实验内容】
1、结构体类型的定义;
2、结构体变量的定义、赋值与使用;
3、结构体数组与结构体指针的定义与使用;
4、共用体类型的定义,共用体变量的定义与使用;
5、枚举类型的定义与使用;
6、链表与动态内存分配;
7、自定义类型的使用。
【实验步骤】
一、在E或F盘上建立以自己的学号命名的文件夹。
二、上机验证与分析题
1、写出程序ex9_1.c运行的结果。
/*文件名ex9_1.c*/
#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
void main()
{
struct List
{
int data ;
struct List *next;
};
struct List a[3]={1,&a[1],2,&a[2],3,&a[0]}, * p;
p=&a[1] ;
printf("%d\n",--p->data);
printf("%d\n",p->next->data);
printf("%d\n",p--->data);
}
三、编程题:
1、试用结构体定义一个工厂职工的信息表,包含如下成员:工号、姓名、性别、年龄、参加工作日期、联系电话。
源程序以ex9_5.c命名,保存在自己的文件夹内。
2、试用结构体定义一个学院教师的信息表,包含如下成员:工号、姓名、性别、年龄、参加工作日期、联系电话。
源程序以ex9_6.c命名,保存在自己的文件夹内。
试编程求这5位同学该门课程的平均成绩,并输出成绩不及格的同学的班级、学号、姓名与成绩等信息。
源程序以ex9_7.c命名,保存在自己的文件夹内。
试编程求这5位职工的平均月收入,并输出月收入小于3000元的职工的部门、工号、姓名与月收入等信息。
源程序以ex9_8.c命名,保存在自己的文件夹内。
5、已知仓库存书的信息如下表所示
试编程求书的平均价格,并输出价格小于30元的书籍的书号、书名、作者、出版社、出版日期,价格等信息。
源程序以ex9_9.c命名,保存在自己的文件夹内。
【实验小结】
应知:
1、结构体、共用体、枚举类型的概念及其定义方法;
2、结构体变量、共用体变量、枚举类型变量的定义;
3、动态内存分配的概念及动态内存分配函数。
4、链表的概念。
应会:
1、结构体变量、共用体变量、枚举类型变量的使用;
2、结构体数组及结构体指针的使用;
3、动态内存分配函数的使用;
4、链表的使用。
【实验思考】
1、当定义一个结构体变量时,系统为它分配的内存空间是多少?
2、结构体与数组的区别是什么?
3、用结构体指针作为函数参数与用结构体变量作为函数参数有什么不同?。