数据结构实验标准答案Word格式.docx
- 文档编号:15933535
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:65
- 大小:615.48KB
数据结构实验标准答案Word格式.docx
《数据结构实验标准答案Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构实验标准答案Word格式.docx(65页珍藏版)》请在冰豆网上搜索。
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、调试程序:
对一维数组中的元素进行逆序排列。
#defineN10
inta[N]={0,1,2,3,4,5,6,7,8,9},i,temp。
printf(“theoriginalArrayis:
\n”)。
for(i=0。
N。
printf(“%4d”,a[i])。
N/2。
i++){/*交换数组元素使之逆序*/
temp=a[i]。
a[i]=a[N-i-1]。
a[N-i-1]=temp。
}
printf(“\nthechangedArrayis:
\n”)。
3、调试程序:
在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点。
要求从键盘上输入一个二维数组,当鞍点存在时,把鞍点找出来。
#defineM3
#defineN4
inta[M][N],i,j,k。
printf(“请输入二维数组的数据:
M。
for(j=0。
j<
j++)
scanf(“%d”,&
a[i][j])。
i++){/*输出矩阵*/
printf(“%4d”,a[i][j])。
printf(“\n”)。
i++){
k=0。
for(j=1。
j++)/*找出第i行的最大值*/
if(a[i][j]>
a[i][k])
k=j。
j++)/*判断第i行的最大值是否为该列的最小值*/
if(a[j][k]<
break。
if(j==M)/*在第i行找到鞍点*/
printf(“%d,%d,%d\n”),a[i][k],i,k)。
4、调试程序:
利用指针输出二维数组的元素。
inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}。
int*p。
for(p=a[0]。
p<
a[0]+12。
p++){
if((p-a[0])%4==0)printf(“\n”)。
printf(%4d”,*p)。
5、调试程序:
输入10个学生的成绩,每个学生成绩包括学号、姓名和三门课的成绩。
要求打印出三门课的平均成绩及成绩最高者的姓名和成绩。
#defineN10。
structstudent{
charnum[6]。
/*学号*/
charname[8]。
/*姓名*/
intscore[3]。
/*成绩*/
floatavr。
/*平均成绩*/
}stu[N]。
inti,j,max,maxi,sum。
floataverage。
i++){/*输入10个学生的成绩信息*/
printf(“\n请输入第%d学生的成绩:
\n”,i+1)。
printf(“学号:
”)。
scanf(“%s”,stu[i].num)。
printf(“姓名”)。
scanf(“%s”,stu[i].name)。
for(j=0。
3。
j++){
printf(“成绩%d”,j+1)。
stu[i].score[j])。
}
average=0。
max=0。
maxi=0。
i++){/*计算平均成绩,找出成绩最高的学生*/
sum=0。
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)。
10。
printf(“%8s%10s”,stu[i].num,stu[i].name)。
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)。
运行结果
3、实验小结
对C语言中函数、数组、指针和结构体的概念,有了进一步的加深。
并且可以利用C语言进行初步程序设计。
四、教师评语
实验一顺序表与链表
1、掌握线性表中元素的前驱、后续的概念。
2、掌握顺序表与链表的建立、插入元素、删除表中某元素的算法。
3、对线性表相应算法的时间复杂度进行分析。
4、理解顺序表、链表数据结构的特点(优缺点)。
1、阅读下面程序,在横线处填写函数的基本功能。
并运行程序,写出结果。
malloc.h>
#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。
length=0。
listsize=INIT_SIZE。
returnOK。
}/*InitList*/
intCreateList_sq(Sqlist*L,intn){
ElemTypee。
n。
printf("
inputdata%d"
i+1)。
scanf("
%d"
&
e)。
ListInsert_sq(L,i+1,e))
returnERROR。
}/*CreateList*/
/*输出顺序表中的元素*/
intPrintList_sq(Sqlist*L){
for(i=1。
=L->
length。
%5d"
L->
slist[i-1])。
}/*PrintList*/
intListInsert_sq(Sqlist*L,inti,ElemTypee){
intk。
if(i<
1||i>
length+1)
returnERROR。
if(L->
length>
listsize){
slist=(ElemType*)realloc(L->
slist,
(INIT_SIZE+INCREM)*sizeof(ElemType))。
slist)
listsize+=INCREM。
for(k=L->
length-1。
k>
=i-1。
k--){
slist[k+1]=k。
slist[i-1]=e。
length++。
}/*ListInsert*/
/*在顺序表中删除第i个元素*/
intListDelete_sq(Sqlist*L,inti)
{
if((i<
1)||(i>
length))returnERROR。
for(p=i-1。
->
p++)
slist[p]=L->
slist[p+1]。
length--。
/*在顺序表中查找指定值元素,返回其序号*/
intListLocate(Sqlist*L,ElemTypee){
Sqlistsl。
intn。
pleaseinputn:
"
)。
/*输入顺序表的元素个数*/
n)。
if(n>
0){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 标准答案