数据结构实验标准答案.docx

上传人:b****5 文档编号:3022574 上传时间:2022-11-17 格式:DOCX 页数:65 大小:615.48KB
下载 相关 举报
数据结构实验标准答案.docx_第1页
第1页 / 共65页
数据结构实验标准答案.docx_第2页
第2页 / 共65页
数据结构实验标准答案.docx_第3页
第3页 / 共65页
数据结构实验标准答案.docx_第4页
第4页 / 共65页
数据结构实验标准答案.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

数据结构实验标准答案.docx

《数据结构实验标准答案.docx》由会员分享,可在线阅读,更多相关《数据结构实验标准答案.docx(65页珍藏版)》请在冰豆网上搜索。

数据结构实验标准答案.docx

数据结构实验标准答案

 

《数据结构》实验指导

2013/2014学年第2学期

姓名:

______________

学号:

_________

班级:

______________

指导教师:

______________

 

潍坊学院计算机工程学院

2014

预备实验C语言的函数数组指针结构体知识

一、实验目的

1、复习C语言中函数、数组、指针和结构体的概念。

2、熟悉利用C语言进行程序设计的一般方法。

二、实验内容和要求

1、调试程序:

输出100以内所有的素数(用函数实现)。

#include

/*判断一个数是否为素数*/

intisprime(intn){

for(intm=2。

m*m<=n。

m++){

if(n%m==0)return0。

return1。

}

/*输出100以内所有素数*/

intmain(){

inti。

for(i=2。

i<100。

i++)

if(isprime(i)==1)printf(“%4d”,i)。

return0。

}

运行结果:

2、调试程序:

对一维数组中的元素进行逆序排列。

#include

#defineN10

intmain(){

inta[N]={0,1,2,3,4,5,6,7,8,9},i,temp。

printf(“theoriginalArrayis:

\n”)。

for(i=0。

i

i++)

printf(“%4d”,a[i])。

for(i=0。

i

i++){/*交换数组元素使之逆序*/

temp=a[i]。

a[i]=a[N-i-1]。

a[N-i-1]=temp。

}

printf(“\nthechangedArrayis:

\n”)。

for(i=0。

i

i++)

printf(“%4d”,a[i])。

return0。

}

运行结果:

3、调试程序:

在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点。

要求从键盘上输入一个二维数组,当鞍点存在时,把鞍点找出来。

#include

#defineM3

#defineN4

intmain(){

inta[M][N],i,j,k。

printf(“请输入二维数组的数据:

\n”)。

for(i=0。

i

i++)

for(j=0。

j

j++)

scanf(“%d”,&a[i][j])。

for(i=0。

i

i++){/*输出矩阵*/

for(j=0。

j

j++)

printf(“%4d”,a[i][j])。

printf(“\n”)。

}

for(i=0。

i

i++){

k=0。

for(j=1。

j

j++)/*找出第i行的最大值*/

if(a[i][j]>a[i][k])

k=j。

for(j=0。

j

j++)/*判断第i行的最大值是否为该列的最小值*/

if(a[j][k]

break。

if(j==M)/*在第i行找到鞍点*/

printf(“%d,%d,%d\n”),a[i][k],i,k)。

}

return0。

}

运行结果:

4、调试程序:

利用指针输出二维数组的元素。

#include

intmain(){

inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}。

int*p。

for(p=a[0]。

p

p++){

if((p-a[0])%4==0)printf(“\n”)。

printf(%4d”,*p)。

}

return0。

}

运行结果:

5、调试程序:

输入10个学生的成绩,每个学生成绩包括学号、姓名和三门课的成绩。

要求打印出三门课的平均成绩及成绩最高者的姓名和成绩。

#include

#defineN10。

structstudent{

charnum[6]。

/*学号*/

charname[8]。

/*姓名*/

intscore[3]。

/*成绩*/

floatavr。

/*平均成绩*/

}stu[N]。

intmain(){

inti,j,max,maxi,sum。

floataverage。

for(i=0。

i

i++){/*输入10个学生的成绩信息*/

printf(“\n请输入第%d学生的成绩:

\n”,i+1)。

printf(“学号:

”)。

scanf(“%s”,stu[i].num)。

printf(“姓名”)。

scanf(“%s”,stu[i].name)。

for(j=0。

j<3。

j++){

printf(“成绩%d”,j+1)。

scanf(“%d”,&stu[i].score[j])。

}

}

average=0。

max=0。

maxi=0。

for(i=0。

i

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/=10。

printf(“学号姓名成绩1成绩2成绩3平均分\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(“平均成绩是:

%5.2f\n”,average)。

printf(“最好成绩的学生是:

%s,总分是%d”,stu[maxi].name,max)。

return0。

}

运行结果

 

3、实验小结

对C语言中函数、数组、指针和结构体的概念,有了进一步的加深。

并且可以利用C语言进行初步程序设计。

 

四、教师评语

 

实验一顺序表与链表

一、实验目的

1、掌握线性表中元素的前驱、后续的概念。

2、掌握顺序表与链表的建立、插入元素、删除表中某元素的算法。

3、对线性表相应算法的时间复杂度进行分析。

4、理解顺序表、链表数据结构的特点(优缺点)。

二、实验内容和要求

1、阅读下面程序,在横线处填写函数的基本功能。

并运行程序,写出结果。

#include

#include

#defineERROR0

#defineOK1

#defineINIT_SIZE5/*初始分配的顺序表长度*/

#defineINCREM5/*溢出时,顺序表长度的增量*/

typedefintElemType。

/*定义表元素的类型*/

typedefstructSqlist{

ElemType*slist。

/*存储空间的基地址*/

intlength。

/*顺序表的当前长度*/

intlistsize。

/*当前分配的存储空间*/

}Sqlist。

intInitList_sq(Sqlist*L)。

/*初始化顺序表L,并将其长度设为0*/

intCreateList_sq(Sqlist*L,intn)。

/*构造顺序表的长度为n*/

intListInsert_sq(Sqlist*L,inti,ElemTypee)。

/*在顺序线性表L中第i个

元素之前插入新的元素e*/

intPrintList_sq(Sqlist*L)。

/*输出顺序表的元素*/

intListDelete_sq(Sqlist*L,inti)。

/*删除第i个元素*/

intListLocate(Sqlist*L,ElemTypee)。

/*查找值为e的元素*/

intInitList_sq(Sqlist*L){

L->slist=(ElemType*)malloc(INIT_SIZE*sizeof(ElemType))。

if(!

L->slist)returnERROR。

L->length=0。

L->listsize=INIT_SIZE。

returnOK。

}/*InitList*/

intCreateList_sq(Sqlist*L,intn){

ElemTypee。

inti。

for(i=0。

i

i++){

printf("inputdata%d",i+1)。

scanf("%d",&e)。

if(!

ListInsert_sq(L,i+1,e))

returnERROR。

}

returnOK。

}/*CreateList*/

/*输出顺序表中的元素*/

intPrintList_sq(Sqlist*L){

inti。

for(i=1。

i<=L->length。

i++)

printf("%5d",L->slist[i-1])。

returnOK。

}/*PrintList*/

intListInsert_sq(Sqlist*L,inti,ElemTypee){

intk。

if(i<1||i>L->length+1)

returnERROR。

if(L->length>=L->listsize){

L->slist=(ElemType*)realloc(L->slist,

(INIT_SIZE+INCREM)*sizeof(ElemType))。

if(!

L->slist)

returnERROR。

L->listsize+=INCREM。

}

for(k=L->length-1。

k>=i-1。

k--){

L->slist[k+1]=k。

}

L->slist[i-1]=e。

L->length++。

returnOK。

}/*ListInsert*/

/*在顺序表中删除第i个元素*/

intListDelete_sq(Sqlist*L,inti)

{

if((i<1)||(i>L->length))returnERROR。

for(p=i-1。

p<->length-1。

p++)

L->slist[p]=L->slist[p+1]。

L->length--。

returnOK。

}

/*在顺序表中查找指定值元素,返回其序号*/

intListLocate(Sqlist*L,ElemTypee){

}

intmain(){

Sqlistsl。

intn。

printf("pleaseinputn:

")。

/*输入顺序表的元素个数*/

scanf("%d",&n)。

if(n>0){

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1