数据结构上机实验答案
《数据结构实验指导书》答案
实验一:
1、请编写函数int fun(int *a, int *b),函数的功能是判断两个指针a和b所指存储单
元的值的符号是否相同;若相同函数返回1,否则返回0。这两个存储单元中的值都不为0。在主函数中输入2个整数、调用函数fun、输出结果。
#include <>
int fun(int *a, int *b)
{
if (*a*(*b)>0) return(1);
else return(0);
}
\
main()
{
int x,y;
scanf("%d%d",&x,&y);
if (fun(&x,&y)) printf("yes\n");
else printf("no");
}
2、计算1+2+3+……+100,要求用指针进行设计。即设计函数int fun(int *n)实现求
1+2+3+……+*n,在主函数中输入、调用、输出结果。
#include <>
:
int fun(int *n)
{
int i,sum=0;
for (i=1;i<=*n;i++)
sum+=i;
return(sum);
}
main()
{
int x,sum;
…
scanf("%d",&x);
printf("the sum is %d\n",fun(&x));
}
3、函数的功能是求数组a中最大数的位置(位序号)。在主函数中输入10个整数、调用函
数fun、输出结果。
#define N 10
#include <>
void input(int *a,int n)
{
"
int i;
for (i=0;i scanf("%d",a+i); /*scanf("%d",&a[i]);*/ } int fun(int *a,int n) { int i,*max; max=a; ] for (i=1;i if (a[i]>*max) max=a+i; return(max-a); } main() {int a[N],maxi; input(a,N); maxi=fun(a,N); printf("\n the max position is %d\n",maxi); " } 4、请编写函数fun(int *a,int n, int *odd, int *even),函数的功能是分别求出数组a 中所有奇数之和和所有偶数之和。形参n给出数组中数据的个数;利用指针odd和even分别返回奇数之和和偶数之和。在主函数中输入10个整数、调用函数fun、输出结果。 #define N 10 #include <> void input(int *a,int n) { int i; for (i=0;i [ scanf("%d",a+i); /*scanf("%d",&a[i]);*/ } void fun(int *a,int n, int *odd, int *even) { int i,sum1=0,sum2=0; for (i=0;i | { if (a[i]%2==0) sum1+=a[i]; else sum2+=a[i]; } *odd=sum1; *even=sum2; } main() {int a[N],odd,even; ; input(a,N); fun(a,N, &odd, &even); printf("the odd is %d\tthe even is %d\n",odd,even); } 5、请编写函数int fun(int *a, int *b,int n),函数的功能是把数组a中所有为偶数的数,放在另一个数组中b。在主函数中输入10个整数、调用函数fun、输出结果。 #define N 10 #include <> void input(int *a,int n) { 【 int i; for (i=0;i scanf("%d",a+i); /*scanf("%d",&a[i]);*/ } void output(int *a,int n) { int i; printf("\nthe odd is:\n"); for (i=0;i printf("%5d",*(a+i)); /*printf("%d",a[i]);*/ } int fun(int *a, int *b,int n) { int i,j=0; for (i=0;i if (a[i]%2==0) { b[j]=a[i]; j++;} return(j); ~ } main() {int a[N],b[N],m; input(a,N); m=fun(a,b,N); output(b,m); } { 6、请编写函数int fun(int *a,,int n),函数的功能是把数组a中最大数和最小数交换。在主函数中输入10个整数、调用函数fun、输出结果。 #define N 10 #include <> void input(int *a,int n) { int i; for (i=0;i scanf("%d",a+i); /*scanf("%d",&a[i]);*/ } ) void output(int *a,int n) { int i; printf("\nthe result is:\n"); for (i=0;i printf("%5d",*(a+i)); /*printf("%d",a[i]);*/ } void fun(int *a,int n) { int i,*max,*min,temp; max=min=a; for (i=1;i { if (a[i]>*max) max=a+i; if (a[i]<*min) min=a+i; } printf("the max is %d,the position is %d\n",*max,max-a); printf("the min is %d,the position is %d\n",*min,min-a); 《 if (max!=min) {temp=*max;*max=*min;*min=temp;} } main() {int a[N],m; input(a,N); fun(a,N); / output(a,N); } 7、请编写函数int fun(int a[4][4]),函数的功能是把矩阵a转置。在主函数中输入、调用函数fun、输出结果。 #define N 4 #include <> void input(int a[][4],int n) { int i,j; < for (i=0;i for (j=0;j scanf("%d",&a[i][j]); } void output(int a[][4],int n) { int i,j; printf("\nthe result is:\n"); for (i=0;i {printf("\n"); for (j=0;j printf("%4d",*(*(a+i)+j)); /*printf("%d",a[i][j]);*/ } } void fun(int a[][4],int n) { int i,j,temp; & for (i=0;i for (j=0;j {temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;} } main() {int a[N][N]; input(a,N); fun(a,N); # output(a,N); } 8、请编写函数int fun(char *a),函数的功能是分别求出字符串a 的长度。在主函数中 输入1个字符串、调用函数fun、输出结果。 #include <> int fun(char *a) { int i=0; char *p; p=a; & while (*p) {i++; p++; } return(i); } main() { char str[20],*cp; cp=str; gets(cp); printf("the length of %s is %d\n",cp,fun(cp)); } 9、 10、 #include <> #include <> } #define N 2 typedef struct student /*定义数据结构(数据类型)*/ {long num; char name[10]; int score[3]; /*存放三门课成绩 */ float average; /*/平均成绩*/ } stu; void intput(stu s[],int n) /*输入数据 */ {int i,j; /*i表示处理学生的下标,J表示成绩编号 */ : for (i=0;i { printf("input num:\n"); scanf("%ld",&s[i].num); printf("input name:\n"); scanf("%s",s[i].name); printf("input 3 score:\n"); for (j=0;j<3;j++) scanf("%d",&s[i].score[j]); 、 } } void stu_av(stu s[],int n)/*求每个学生的平均成绩*/ { int i,j,sum; for (i=0;i { sum=0; for (j=0;j<3;j++) , sum+=s[i].score[j] ; s[i].average=sum/; } } float av(stu s[],int n)/*求总平均成绩*/ { int i; float sum=,ave; for (i=0;i : sum+=s[i].average; ave=sum/n; return(ave); } int max(stu s[],int n)/*求平均成绩最高学生的下标*/ { int i,maxi=0; for (i=1;i if (s[i].average>s[maxi].average) ! maxi=i; return(maxi); } main() {int maxi,j; stu a[N];/*定义变量 */ intput(a,N); stu_av(a,N); printf("the score average is %f\n", av(a,N)); ^ maxi=max(a,N); printf("the max average student data:\n"); printf("%10ld",a[maxi].num); printf("%10s",a[maxi].name); for (j=0;j<3;j++) printf("%5d",a[maxi].score[j]); printf("%5.1f",a[maxi].average); getch(); } 实验二 ? 1、 #include <> #define MaxLen 50 typedef int elemtype; struct datatype {elemtype *elem; int length; }; typedef struct datatype sqlist; void create (sqlist *a) ! { int i,n; a->elem=(elemtype *)malloc(MaxLen*sizeof(elemtype)); printf("创建一个顺序表\n"); printf("输入元素个数\n"); scanf("%d",&a->length); for (i=0;i { printf("输入第%d个元素值:",i+1); scanf("%d",a->elem+i); [ } } void invert(sqlist *a) { int m=a->length/2,i; elemtype temp; for (i=0;i { temp=*(a->elem+i); : *(a->elem+i)=*(a->elem+a->length-1-i); *(a->elem+a->length-1-i)=temp; } } void disp(sqlist *a) { int i; for (i=0;i printf("%5d:%d\n",i+1,*(a->elem+i)); getch(); } | void main() { sqlist a; create(&a); disp(&a); invert(&a); disp(&a); } ! 2、 #include <> #include <> #define NULL 0 typedef int elemtype; typedef struct linknode { elemtype data; struct linknode *next; }nodetype; ! nodetype *create() { elemtype d; nodetype *h,*s,*t; int i=1; h=NULL; printf("建立一个单链表\n"); while (1) { | printf("输入第%d节点data域值:",i); scanf("%d",&d); if (d==0) break ; /*以0表示输入结束*/ if(i==1) /*建立第一个结点*/ { h=(nodetype *)malloc(sizeof(nodetype)); h->data=d;h->next=NULL;t=h; else { | s=(nodetype *)malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s; /*t始终指向生成的单链表的最后一个结点*/ } i++; } return h; } void disp(nodetype *h) { { nodetype *p=h; printf("输出一个单链表:\n"); if (p==NULL) printf("空表"); while (p!=NULL) { printf("%d",p->data);p=p->next; } printf("\n"); getch(); } ` int len(nodetype *h) { int i=0; nodetype *p=h; while (p) {i++;p=p->next;} return(i); } 、 nodetype *invert(nodetype *h) { nodetype *p,*q,*r; if (len(h)<=1) {printf("逆置的单链表至少有2个节点\n"); return(NULL); else {p=h;q=p->next; ! while (q!=NULL) {r=q->next; q->next=p; p=q;q=r; } h->next=NULL; h=p; return h; } } 、 void main() { nodetype *head; head=create(); disp(head); head=invert(head); disp(head); } 。 4、 (1) #include <> #define MaxLen 50 typedef struct {long num; int score; }elemtype; typedef struct datatype {elemtype *elem; ; int length; }sqlist; void create (sqlist *a) { long i=0,n; int s; a->elem=(elemtype *)malloc(MaxLen*sizeof(elemtype)); printf("创建一个顺序表\n"); printf("输入学生学号和成绩:0作为结束标志\n"); ! scanf("%ld%d",&n,&s); while (n!=0) { (a->elem)[i].num=n; (a->elem)[i].score=s; i++; scanf("%ld%d",&n,&s); } a->length=i; } ( void disp(sqlist *a) { int i; for (i=0;i printf("%5d:%ld %d\n",i+1,(a->elem)[i].num,(a->elem)[i].score); getch(); } void main() 。 { sqlist a; create(&a); disp(&a); } (2)见5(2) 5、 . (1) #include <> #define MaxLen 50 typedef struct {long num; int score; }elemtype; typedef struct datatype {elemtype *elem; int length; ^ }sqlist; void create (sqlist *a) { long i=0,n; int s; a->elem=(elemtype *)malloc(MaxLen*sizeof(elemtype)); printf("创建一个顺序表\n"); printf("输入学生学号和成绩:0作为结束标志\n"); scanf("%ld%d",&n,&s); % while (n!=0) { (a->elem)[i].num=n; (a->elem)[i].score=s; i++; scanf("%ld%d",&n,&s); } a->length=i; } · void sort(sqlist *a) { int i,j,k,s; long n; for (i=0;i {k=i; for (j=i+1;j if ((a->elem)[j].score<(a->elem)[k].score) k=j; if (k!=i) { n=(a->elem)[i].num;(a->elem)[i].num=(a->elem)[k].num; > (a->elem)[k].num=n; s=(a->elem)[i].score;(a->elem)[i].score=(a->elem)[k].score; (a->elem)[k].score=s; } } } void disp(sqlist *a) { int i; for (i=0;i — printf("%5d:%ld %d\n",i+1,(a->elem)[i].num,(a->elem)[i].score); getch(); } void main() { sqlist a; create(&a); disp(&a); sort(&a); ` disp(&a); } (2) #include <> #include <> #define NULL 0 typedef struct linknode { long num; & int score; struct linknode *next; }nodetype; nodetype *create() { long n; int sc; nodetype *h,*s,*t; } h=(nodetype *)malloc(sizeof(nodetype));; h->next=NULL; t=h; printf("创建一个顺序表\n"); printf("输入学生学号和成绩:0作为结束标志\n"); scanf("%ld%d",&n,&sc); while (n!=0) { s=(nodetype *)malloc(sizeof(nodetype)); ^ s->num=n;s->score=sc;t->next=s;t=s; scanf("%ld%d",&n,&sc); } t->next=NULL; return h; } void disp(nodetype *h) { ; nodetype *p=h->next; printf("输出一个单链表:\n"); while (p!=NULL) { printf("%ld %d\n",p->num,p->score);p=p->next; } printf("\n"); getch(); } 】 nodetype *insertorder(nodetype *h,nodetype *s) { nodetype *p,*q; q=h;p=q->next; while (p!=NULL && s->score>p->score) { q=p; p=p->next; } } s->next=p; q->next=s; return(h); } nodetype *sort(nodetype *h) { nodetype *p,*s; p=h->next; h->next=NULL; ¥ while (p!=NULL) { s=p->next; h=insertorder(h,p); p=s; } return h; } void main() ( { nodetype *head; head=create(); disp(head); head=sort(head); disp(head); } 实验三: 7、试写一个算法,识别依次读入的一个以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中不包含字符’&’,且序列2是序列1的逆序列。例如,‘a+b&b+a’是属于该模式的字符序列,而‘1+2&2-1’则不是。 — int IsReverse()0’9’0’0’9’0’.的各行中第 0,2,4,...列的所有元素之和,函数中用 i 和 j 变量控制即可。 (3)本小题中一条对角线是 A[i][i],其中(0≤i≤m-1),另一条对角线是A[m-i-1,i],其中(0≤i≤m-1),因此用循环实现即可。实现本题功能的程序如下: #include <> /*实现(1)小题功能的函数*/ void proc1(maxix A) { int s=0,i,j; for (i=0;i s=s+A[i][1]; for (i=0;i . s=s+A[i][n]; for (j=0;j s=s+A[1][j]; for (j=0;j s=s+A[m][j]; for (j=0;j s=s+A[1][j]; for (j=0;j s=s+A[m][j]; s=s-A[0][0]-A[0][n-1]-A[m-1][0]-A[m-1][n-1]; 【 /*减去 4 个角的重复元素值*/ printf("s=%d\n",s); } /*实现(2)小题功能的函数*/ void proc2(maxix A) { int s=0,i,j; i=0; while(i { j=0; < while(j { s=s+A[i][j]; j=j+2; /*跳过一列*/ } i=i+2; /*跳过一行*/ } printf("s=%d\n",s); } /*实现(3)小题功能的函数*/ void proc3(maxix A) { int i,s; if (m!=n) printf("m≠n"); else { s=0; for (i=0;i s=s+A[i][i]; /*求第一条对角线之和*/ for (i=0;i s=s+A[n-i-1][i]; /*累加第二条对角线之和*/ printf("s=%d\n",s); } } main() { int m,n,i,j; maxix A; printf("m,n:"); scanf("%d,%d",&m,&n); printf("元素值:\n"); for (i=0;i for (j=0;j scanf("%d",&A[i][j]); proc1(A); /*调用 proc1()*/ proc2(A); /*调用 proc2()*/ proc3(A); /*调用 proc3()*/ } 8、假设稀疏矩阵A采用三元组表示,编写一个函数计算其转置矩阵B,要求B也采用三元组表示。 解:三元组表示中要求按行的顺序存放,所有转置过程不能直接将行下标和列下标转换,还必须使得列按顺序存放。因此在 A 中首先找出第一列中的所有元素,它们是转置矩阵第一行的非0元素,并把它们依次放在转置矩阵三元组数组B中;然后依次找出第二列中的所有元素,把它们依次放在数组B中;按照同样的方法逐列进行,直到找出第n列的所有元素,并把它们依次放在数组 B 中。实现本题功能的函数如下: void transpose(A,B) smatrik A,B; /*A 是稀疏矩阵的三元组形式,B 是存放 A 的转置矩阵的三元组数组*/ { int m,n,p,q,t,col; /*m 为 A 中的行数; n 为 A 中的列数; t 为 A 中非 0 元素个数*/ /*q 为 B 的下一项位置; p 为 A 的当前项*/ m=A[0][0]; n=A[0][1]; t=A[0][2]; B[0][0]=n; B[0][1]=m; B[0][2]=t; /*产生第 0 行的结果*/ if (t>0) /*非 0 矩阵才做转置*/ { q=1; for (col=0;col for (p=1;p<=t;p++) if (A[p][1]==col) { B[q][0]=A[p][1]; B[q][1]=A[p][0]; B[q][2]=A[p][2]; q++; } } } 实验六: 11、编写递归算法,求二叉树中以元素值为x 的结点为根的子树的深度。 int Get_Sub_Depth(Bitree T,int x)https://www.360docs.net/doc/dc7452536.html,st]含结点值。试编写算法由此顺序存储结构建立该二叉树的二叉链表。 Status CreateBitree_SqList(Bitree &T,SqList sa)arent) dep++; //求每一个结点的深度 if(dep>maxdep) maxdep=dep; } return maxdep; }//GetDepth_PTree 对以孩子-兄弟链表表示的树编写计算树的深度的算法。 int GetDepth_CSTree(CSTree T)//求孩子兄弟链表表示的树T的深度 { if(!T) return 0; //空树 else { for(maxd=0,p=T->firstchild;p;p=p->nextsib) if((d=GetDepth_CSTree(p))>maxd) maxd=d; //子树的最大深度 return maxd+1; } }//GetDepth_CSTree 数据结构上机实验报告 学院:电子工程学院 专业:信息对抗技术 姓名: 学号: 教师:饶鲜日期: 目录 实验一线性表................................................. - 4 - 一、实验目的................................................ - 4 - 二、实验代码................................................ - 4 - 三、实验结果............................................... - 14 - 四、个人思路............................................... - 15 -实验二栈和队列.............................................. - 15 - 一、实验目的............................................... - 15 - 二、实验代码............................................... - 16 - 三、实验结果............................................... - 24 - 四、个人思路............................................... - 25 -实验三数组.................................................. - 26 - 一、实验目的............................................... - 26 - 二、实验代码............................................... - 26 - 三、实验结果............................................... - 28 - 四、个人思路............................................... - 28 -实验四树.................................................... - 29 - 一、实验目的............................................... - 29 - 二、实验代码............................................... - 29 - SQL-Server数据库上机实验报告 《数据库系统原理》上机实验报告 学号:1120131743 姓名:谈兆年 班级:07111301 一、实验目的与要求: ●熟练使用SQL语句 ●掌握关系模型上的完整性约束机制 二、实验内容 1:利用SQL语句创建Employee数据库 CREATE DATABASE Employee; 结果: 2:利用SQL语句在Employee数据库中创建人员表person、月薪表salary及部门表dept。 做法:按表1、表2、表3中的字段说明创建 表1 person表结构 字段名数据 类型 字段 长度 允许空 否 字段说明 P_no Char 6 Not Null 工号,主键P_na Varch10 Not 姓名 me ar Null Sex Char 2 Not Null 性别 Birth date Dateti me Null 出生日期 Prof Varch ar 10 Null 职称 Dept no Char 4 Not Null 部门代码,外键 (参照dept表)表2 salary表结构 字段名数据 类型 字段 长度 允许空 否 字段说明 P_no Char 6 Not Null 工号,主键,外键(参照person表) Base Dec 5 Null 基本工资Bonu s Dec 5 Null 奖金,要求>50 Fact Dec 5 Null 实发工资=基本工 资+奖金 Mont h Int 2 Not Null 月份 表3 dept表结构 字段名数据 类型 字段 长度 允许空 否 字段说明 Dept no Char 4 Not Null 部门代码,主键, Dna me Varch ar 10 Not Null 部门名称 程序为: CREATE TABLE dept( deptno CHAR(4) PRIMARY KEY NOT NULL, dname V ARCHAR(10) NOT NULL) CREATE TABLE Person( P_no CHAR(6) PRIMARY KEY Not Null, P_name V ARCHAR(10) Not Null, Sex CHAR(2) Not Null, Birthdate Datetime Null, Prof V ARCHAR(10) Null, Deptno CHAR(4) Not Null, FOREIGN KEY(Deptno) REFERENCES 《数据结构实验指导书》答案 实验一: 1、请编写函数int fun(int *a, int *b),函数的功能是判断两个指针a和b所指存储单 元的值的符号是否相同;若相同函数返回1,否则返回0。这两个存储单元中的值都不为0。在主函数中输入2个整数、调用函数fun、输出结果。 #include 数fun、输出结果。 #define N 10 #include 数据分析实验报告 文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58- 第一次试验报告 习题1.3 1建立数据集,定义变量并输入数据并保存。 2数据的描述,包括求均值、方差、中位数等统计量。 分析—描述统计—频率,选择如下: 输出: 统计量 全国居民 农村居民 城镇居民 N 有效 22 22 22 缺失 均值 1116.82 747.86 2336.41 中值 727.50 530.50 1499.50 方差 1031026.918 399673.838 4536136.444 百分位数 25 304.25 239.75 596.25 50 727.50 530.50 1499.50 75 1893.50 1197.00 4136.75 3画直方图,茎叶图,QQ 图。(全国居民) 分析—描述统计—探索,选择如下: 输出: 全国居民 Stem-and-Leaf Plot Frequency Stem & Leaf 5.00 0 . 56788 数据分析实验报告 【最新资料,WORD 文档,可编辑修改】 2.00 1 . 03 1.00 1 . 7 1.00 2 . 3 3.00 2 . 689 1.00 3 . 1 Stem width: 1000 Each leaf: 1 case(s) 分析—描述统计—QQ图,选择如下: 输出: 习题1.1 4数据正态性的检验:K—S检验,W检验数据: 取显着性水平为0.05 分析—描述统计—探索,选择如下:(1)K—S检验 结果:p=0.735 大于0.05 接受原假设,即数据来自正太总体。 (2 )W 检验 结果:在Shapiro-Wilk 检验结果972.00 w ,p=0.174大于0.05 接受原假设,即数据来自正太总体。 习题1.5 5 多维正态数据的统计量 数据: 数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件 #include nodetype *create()//建立单链表,由用户输入各结点data域之值,//以0表示输入结束 { elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"< 数据库实验 (第三次) 题目1 实验内容: 1. 检索上海产的零件的工程名称; 2. 检索供应工程J1零件P1的供应商号SNO; 3. 检索供应工程J1零件为红色的供应商号SNO; 4. 检索没有使用天津生产的红色零件的工程号JNO; 5. 检索至少用了供应商S1所供应的全部零件的工程号JNO; 6. 检索购买了零件P1的工程项目号JNO及数量QTY,并要求对查询的结果按数 量QTY降序排列。 1 select jname from j where jno in (select jno from spj where sno in (select sno from s where city ='上海' ) ); 2 select sno from spj where jno ='j1'and pno ='p1' 3 selectdistinct sno from spj where pno in (select pno from p where color='红'and pno in (select pno from spj where jno ='j1' ) ); 4 selectdistinct jno from spj where pno notin (select pno from p where color ='红'and pno in (select pno from spj where sno in (select sno from s where city ='天津' ) ) ) 5 select jno from spj where sno ='s1' 6 select jno,qty from spj where pno ='p1' orderby qty desc 四﹑思考题 1.如何提高数据查询和连接速度。 建立视图 2. 试比较连接查询和嵌套查询 有些嵌套查询是可以用连接来代替的,而且使用连接的方式,性能要比 嵌套查询高出很多 当查询涉及多个关系时,用嵌套查询逐步求解结构层次清楚,易于构造,具有结构化程序设计的优点。但是相比于连接运算,目前商用关系数据库管理系统对嵌套查询的优化做的还不够完善,所以在实际应用中,能够用连接运算表达的查询尽可能采用连接运算。 实验一~实验四任选一题;实验五~实验九任选一题。 实验一运动会分数统计 一、实验目的: (1)熟练掌握线性表的两种存储方式 (2)掌握链表的操作和应用。 (3)掌握指针、结构体的应用 (4)按照不同的学校,不同项目和不同的名次要求,产生各学校的成绩单、团体总分报表。 二、实验内容: 【问题描述】 参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。 【基本要求】 产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。 【测试数据】 对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。 【实现提示】 可以假设m≤20,m≤30,w≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。 【选作内容】 允许用户指定某些项目可采取其他名次取法。 实验二停车场管理 一、实验目的: (1)熟练掌握栈顺存和链存两种存储方式。 (2)掌握栈的基本操作及应用。 (3)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。 二、实验内容: 【问题描述】 设停车场是一个可停放n辆汽车的长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车信放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场院,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 【基本要求】 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。 【测试数据】 设n=2,输入数据为:(A,1,5),(A,1,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中:A表示到达(Arrival);D表示离去(Departure);E表示输入结束(End)。 【实现提示】 需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。 【选作内容】 (1)两个栈共享空间,思考应开辟数组的空间是多少? (2)汽车可有不同种类,则他们的占地面积不同收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。(3)汽车可以直接从便道开走,此时排在它前面的汽车要先开走让路,然后再依次排到队尾。 (4)停放在便道上的汽车也收费,收费标准比停放在停车场的车低,请思考如何修改结构以满足这种要求。 数据结构实验报告 一.顺序表 要求:实现顺序表的初始化、在指定位置插入和删除元素。 算法思路:线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素。顺序表的初始化操作就是为顺序表分配一个预定义大小的空间,并将线性表的当前长度设为“0”。线性表的插入操作是在线性表的第i-1个数据元素和第i个元素之间插入新的数据元素,使得长度为n的线性表变成长度为n+1的线性表,而删除恰好相反长度变为n-1的线性表,而且删除点后面的元素要往前移动一个位。 程序代码: #include for(i=0;i For the things that have been done in a certain period, the general inspection of the system is also a specific general analysis to find out the shortcomings and deficiencies 数据库上机实验报告正式 版 数据库上机实验报告正式版 下载提示:此报告资料适用于某一时期已经做过的事情,进行一次全面系统的总检查、总评价,同时也是一次具体的总分析、总研究,找出成绩、缺点和不足,并找出可提升点和教训记录成文,为以后遇到同类事项提供借鉴的经验。文档可以直接使用,也可根据实际需要修订后使用。 数据库上机实验报告 试验内容 1、数据表的建立 基本表《简单的》带有主键 带有外码约束的(外码来自其他表或者本表) 2、数据表的修改 添加删除列 修改列属性类型 添加删除约束(约束名) 元组的添加,修改,删除 删除数据表 试验过程 1、createtablestudent ( snochar(9)primarykey,/*sno是主码列级完整性约束条件*/ snamechar(20)unique,/*sname取唯一值*/ ssexchar(2), sagesmallint,/*类型为smallint*/ sdeptchar(20)/*所在系*/ ); createtablecourse ( cnochar(4)primarykey,/*列级完整性约束条件,cno是主码*/ cnamechar(40), cpnochar(4),/*cpno的含义是先行课*/ ccreditsmallint, foreignkey(cpno)referencescourse(cno) /*表级完整性约束条件,cpno是外码,被参照表是course,被参照列是 cno*/ ); createtablesc ( snochar(9), cnochar(4), gradesmallint, 数据结构基础及深入及考试 复习资料 习题及实验参考答案见附录 结论 1、数据的逻辑结构是指数据元素之间的逻辑关系。即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。 2、数据的物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。它依赖于计算机。存储结构可分为4大类:顺序、链式、索引、散列 3、抽象数据类型:由用户定义,用以表示应用问题的数据模型。它由基本的数据类型构成,并包括一组相关的服务(或称操作)。它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机)。 4、算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。 5、在数据结构中,从逻辑上可以把数据结构分成( C ) A、动态结构和表态结构 B、紧凑结构和非紧凑结构 C、线性结构和非线性结构 D、内部结构和外部结构 6、算法的时间复杂度取决于( A ) A、问题的规模 B、待处理数据的初态 C、问题的规模和待处理数据的初态 线性表 1、线性表的存储结构包括顺序存储结构和链式存储结构两种。 2、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为( E ),删除一个元素需要移动的元素的个数为( A )。 A、(n-1)/2 B、n C、n+1 D、n-1 E、n/2 F、(n+1)/2 G、(n-2)/2 3、“线性表的逻辑顺序与存储顺序总是一致的。”这个结论是( B ) A、正确的 B、错误的 C、不一定,与具体的结构有关 4、线性表采用链式存储结构时,要求内存中可用存储单元的地址( D ) A、必须是连续的 B、部分地址必须是连续的C一定是不连续的D连续或不连续都可以 5、带头结点的单链表为空的判定条件是( B ) A、head==NULL B、head->next==NULL C、head->next=head D、head!=NULL 6、不带头结点的单链表head为空的判定条件是( A ) A、head==NULL B、head->next==NULL C、head->next=head D、head!=NULL 7、非空的循环单链表head的尾结点P满足( C ) A、p->next==NULL B、p==NULL C、p->next==head D、p==head 8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是( B ) A、O(1) B、O(n) C、O(n2) D、O(nlog2n) 9、在一个单链表中,若删除p所指结点的后继结点,则执行( A ) 实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。 4.使用string类定义字符串对象,编程实现两字符串的连接。在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。程序名:lab6_4.cpp。 5.在employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,在成员函数中,构造函数用来初始化所有数据成员;display()中使用cout显示 数据库上机实验报告 4 学号:姓名:日期:年月日 实验目的:(1)练习连接查询;(2)练习视图的创建与使用;(3)学习使用ODBC的方法;(4)体验T-SQL的功能;体验存储过程的功能;体验表值函数、标量值函数的作用;体验ranking等功能。 1 练习视图及连接查询。 (1)创建一个视图,视图名为viNF,视图内容为select id,count(*) as nf from friends group by id。执行成功后,将SQL语句复制到下方。 (2)基于viNF视图,查找拥有最多好友的用户、最少好友的用户。执行成功后,将SQL语句复制到下方。 (3)基于users表和viNF视图进行连接查询。分别进行内连接、全外连接、左外连接、右外连接四种操作。执行成功后,将SQL语句复制到下方,并回答:四种结果表,哪两个的结果是一致的,为什么? (4)将题(3)中全外连接保存为一个新的视图viUAF。 2 通过ODBC用Excel打开users表。 3 体验T-SQL。 回顾实验2中的题目: 定义最低价格为成本价;依据此成本价做如下计算: 连接Goods,Goods_Extent,Sellers表,按照总利润,输出前10名;要求输出表的格式为(商品名称,卖家名称,商品价格,运费,卖家信誉,卖家好评率,历史销量,历史利润,期内销量,期内利润,总销量,总利润) 利用如下语句进行查询,体会和之前有什么不同。如感兴趣,自己可以仿照写一个变量定义、赋值及应用的例子。 declare @cost as float; select @cost=min(good_price)from goods; select top 10 good_name as商品名称, goods.seller_name as卖家名称, good_price as商品价格, good_shipping as运费, 《数据结构与算法》课程实验内容与要求 一、课程简介 本课程着重讲述①线性结构、树型结构、图等典型数据结构的逻辑特点、存储结构及其相应的基本算法。②各种查找算法③典型内部排序算法。 二、实验的作用、地位和目的 数据结构是一门技术基础课,通过实验深刻理解各种逻辑结构、存储结构的特性,培养为实际问题分析其数据对象、基本操作,选择逻辑结构、存储结构灵活应用基本算法,设计出具有专业水准的应用程序的能力。 三、实验方式与要求 ①首先要求学生在课下完成问题分析、算法设计,基本完成程序设计。 ②实验时,每位学生使用一台微机,独立调试,完成程序。 ③程序调试好后,由指导教师检测运行结果,并要求学生回答相关的问题。教师评出检查成绩。 ④学生记录程序的输入数据,运行结果及源程序。 ⑤在一周内完成实验报告。 四、考核方式与实验报告要求 实验成绩由指导教师根据学生的实验完成情况、源程序质量、回答问题情况、实验报告质量、实验纪律等方面给分。 学生在实验后的一周内提交实验报告。实验报告按照首页附件中实验报告模版书写。实验报告中应包括如下内容: ?实验内容按任课教师下达的实验任务填写(具体实验题目和要求); ?实验过程与实验结果应包括如下主要内容: 算法设计思路简介 算法描述:可以用自然语言、伪代码或流程图等方式 算法的实现和测试结果:包括算法运行时的输入、输出,实验中出现的问题及解决办法等 ?源程序清单与实验结果或其它说明可打印,并装订在实验报告首页之后。 ?实验报告雷同者,本次实验成绩为0分或雷同实验报告平分得分 五、实验的软硬件环境 硬件环境:PⅡ以上微型计算机 软件环境:Windows98/2000, VC++6.0或turbo C 六、实验内容安排 实验一线性表应用 实验时间:2016年3月14日1-4节(地点:7-215) 实验目的:理解线性表的逻辑特点;掌握顺序表、链表存储结构,以及线性表的基本操作,如插入、删除、查找,以及线性表合并等操作在顺序存储结构和链式存储结构上的实现算法,并能够在实际问题背景下的灵活运用线性表来解决问题,实现相应算法。 具体实验题目与要求:(任课教师根据实验大纲自己指定) 每位同学可从下面题目中选择1-2题实现: 1.一元稀疏多项式简单的计算器 1)问题描述:用线性表表示一元稀疏多项式,设计一个一元多项式运算器 2)要求: (1)采用单链表存储结构一元稀疏多项式 (2)输入并建立多项式 (3)输出多项式 (4)实现多项式加、减运算 2.单链表基本操作练习 1)问题描述:在主程序中提供下列菜单: 1…建立链表 2…连接链表 3…输出链表 0…结束 2)实验要求:算法中包含下列过程,分别完成相应的功能: CreateLinklist(): 从键盘输入数据,创建单链表 ContLinklist():将前面建立的两个单链表首尾相连 OutputLinklist():输出显示单链表 3.约瑟夫环问题 1)问题描述:有编号为1, 2…n 的n 个人按顺时针方向围坐一圈,每人持有一个正整数密码。开始给定一个正整数m,从第一个人按顺时针方向自1开始报数,报到m者出列,不再参加报数,这时将出列者的密码作为m,从出列者顺时针方向的下一人开始重新自1开始报数。如此下去,直到所有人都出列。试设计算法,输出出列者的序列。 2)要求: 采用顺序和链式两种存储结构实现 实验报告格式及要求:按附件中实验报告模版书写。(具体要求见四) 《数据结构》课程上机实验指导书 实验一 【实验名称】顺序表的基本算法 【实验目的】 创建一个顺序表,掌握线性表顺序存储的特点。设计和验证顺序表的查找、插入、删除算法。 【实验要求】 (1)从键盘读入一组整数,按输入顺序形成顺序表。并将创建好的顺序表元素依次打印在屏幕上。 设计一个带选择菜单的主函数,菜单中具备任意选择删除、插入、查找数据元素(2)的功能。 当选择删除功能时,从键盘读入欲删除的元素位置或元素值,按指定方式删除;3()当选择插入功能时,从键盘读入新元素值和被插入位置,在指定位置插入;当选择查找功能时,从键盘读入欲查找的元素值,返回其位置序号。 (4)每种操作结束后,都能在屏幕上打印出此时顺序表元素的遍历结果。 【实验步骤】、实验前先写好算法。1 上机编写程序。2、编译。3、调试。4、 综合实例!,2-62-8!带菜单的主函数参考书上2.5,,,书上参考算法例程:2-12-42-5注意:顺序表的结构体!typedef struct { datatype items[listsize]; int length; }SpList; 实验二 【实验名称】单链表的基本算法 【实验目的】 创建一个单链表,掌握线性表链式存储的特点。设计和验证链表的查找、插入、删除、求表长的算法。【实验要求】 (1)从键盘读入一组整数,按输入顺序形成单链表。并将创建好的单链表元素依次打印在屏幕上。(注意:选择头插法或者尾插法!) 设计一个带选择功能菜单的主函数,菜单中至少具备任意选择删除、插入、查找(2)数据元素,和求单链表表长等几项功能。 当选择删除功能时,从键盘读入欲删除的元素位置,按指定位置删除;当选择插)(3入功能时,从键盘读入新元素值和被插入位置,在指定位置插入;当选择查找功能时,从键盘读入欲查找的元素值,返回其位置序号;当选择求表长功能时,返回该单链表表长的数值。 (4)每种操作结束后,都能在屏幕上打印出此时单链表元素的遍历结果。 【实验步骤】、实验前先写好算法。1 、上机编写程序。2 编译。3、调试。4、 综合实例!!带菜单的主函数参考书上,2-132-15,2-172.5,,书上参考算法例程:2-102-12 另外,注意,指针的初始化!指针的操作必须谨慎!链表的结构体如下:typedef struct Node { Datatype ch; struct Node *next; }LNode, *Pnode, *Linklist; 实验三 【实验题】 1.狐狸逮兔子 围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:“可以,但必须找到我,我就藏身于这十个洞中,你先到1号洞找,第二次隔1个洞(即3号洞)找,第三次隔2个洞(即6号洞)找,以后如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里? (提示:这实际上是一个反复查找线性表的过程。) 【数据描述】 定义一个顺序表,用具有10个元素顺序表来表示这10个洞。每个元素分别表示围着山顶的一个洞,下标为洞的编号。 #define LIST_INIT_SIZE 10 //线性表存储空间的初始分配量 typedef struct { ElemType *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量(以sizeof(ElemType)为单位) }SqList; 【算法描述】 status InitList_Sq(SqList &L) { //构造一个线性表L L.elem=(ElemType )malloc(LIST_INIT_SIZE*sizeof(ElemType)); If(!L.elem) return OVERFLOW; //存储分配失败 L.length=0; //空表长度为0 L.listsize=LIST_INIT_SIZE; //初始存储容量 return OK; } //InitList_Sq status Rabbit(SqList &L) { //构造狐狸逮兔子函数 int current=0; //定义一个当前洞口号的记数器,初始位置为第一个洞口 for(i=0;i 数据分析实验报告 【最新资料,WORD文档,可编辑修改】 第一次试验报告 习题1.3 1建立数据集,定义变量并输入数据并保存。 2数据的描述,包括求均值、方差、中位数等统计量。 分析—描述统计—频率,选择如下: 输出: 方差1031026.918399673.8384536136.444百分位数25304.25239.75596.25 50727.50530.501499.50 751893.501197.004136.75 3画直方图,茎叶图,QQ图。(全国居民) 分析—描述统计—探索,选择如下: 输出: 全国居民Stem-and-Leaf Plot Frequency Stem & Leaf 9.00 0 . 122223344 5.00 0 . 56788 2.00 1 . 03 1.00 1 . 7 1.00 2 . 3 3.00 2 . 689 1.00 3 . 1 Stem width: 1000 Each leaf: 1 case(s) 分析—描述统计—QQ图,选择如下: 输出: 习题1.1 4数据正态性的检验:K—S检验,W检验数据: 取显着性水平为0.05 分析—描述统计—探索,选择如下:(1)K—S检验 单样本Kolmogorov-Smirnov 检验 身高N60正态参数a,,b均值139.00 标准差7.064 最极端差别绝对值.089 正.045 负-.089 Kolmogorov-Smirnov Z.686 渐近显着性(双侧).735 a. 检验分布为正态分布。 b. 根据数据计算得到。 结果:p=0.735 大于0.05 接受原假设,即数据来自正太总体。(2)W检验 重庆邮电大学移通学院 数据库集中上机报告 学生:马志鹏 学号: 022******* 班级: 02210901 专业:计算机应用技术 重庆邮电大学移通学院 2011年6月 第一天:Access数据库基本操作 1 实验目的 1、熟悉的掌握Access数据库结构与创建 2、了解创建、修改、删除、查询、保存等操作 3、输入数据创建、设计器创建、向导创建。 2 实验内容 3 实验结果 1. 2. 2 重庆邮电大学移通学院 3 2 Access 数据表的编辑 第二天 数据表基本操作 1 表关系与编辑数据 1 实验目的: 1、实现一对一,一对多,多对多的实体关系 2、对“学生基本信息”表中的记录进行排序,按出生日期降序排列 3、从“学生基本信息”表中筛选出所有计算机系男生的记录 4、从“学生基本信息”表中筛选出回族和蒙古族的所有学生记录 2 实验内容 1. SELECT 学生基本信息表.学生姓名, 成绩档案表.* FROM 成绩档案表INNER JOIN 学生基本信息表ON 成绩档案表.学生学号= 学生基本信息表.学生学号 WHERE (((学生基本信息表.学生姓名)="张冰冰")); 2 SELECT 学生基本信息表.* FROM 学生基本信息表 WHERE (((学生基本信息表.性别)="男") AND ((学生基本信息表.班级名称)="计算机系")); 3 SELECT 成绩档案表.C语言, 课程表.* FROM 成绩档案表, 课程表; 4 SELECT 学生基本信息表.*, 学生基本信息表.性别, 学生基本信息表.班级名称FROM 学生基本信息表WHERE (((学生基本信息表.性别)<>"男") AND ((学生基本信息表.班级名称)<>"计算机系")); 5 SELECT 学生基本信息表.*, 学生基本信息表.出生日期 FROM 学生基本信息表WHERE (((Month([出生日期]))=9) AND ((Day([出生日期]))=1)); 6 SELECT 学生基本信息表.* FROM 学生基本信息表WHERE (((学生基本信息表.学生姓名) Like "李*")); 3 实验结果 4数据结构上机实验报告
SQL-Server数据库上机实验报告
数据结构上机实验答案
数据分析实验报告
数据结构实验报告全集
数据库上机实验报告
数据结构课程设计题目及要求
数据结构上机实验报告
数据库上机实验报告正式版
数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(c语言版)
C上机实验报告实验四
数据库上机实验报告4
《数据结构与算法》上机实验要求
数据结构上机实验指导
数据结构实验题参考答案
数据分析实验报告
数据库上机实验报告 总结