数据结构实验报告[1]

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

云南大学

数据结构实验报告

第一次实验

学号:

姓名:

一、实验目的

1、复习变量、数据类型、语句、函数;

2、掌握函数的参数和值;

3、了解递归。

二、实验内容

1、(必做题)采用函数统计学生成绩:输入学生的成绩,计算并输出这些学生的最低分、最高分、平均分。

2、(必做题)采用递归和非递归方法计算k阶裴波那契序列的第n项的值,序列定义如下:f0=0, f1=0, …, fk-2=0, fk-1=1, fn= fn-1+fn-2+…+fn-k(n>=k) 要求:输入k(1<=k<=5)和n(0<=n<=30),输出fn。

3、(选做题)采用递归和非递归方法求解汉诺塔问题,问题描述如下:有三根柱子A、B、C,在柱子A上从下向上有n个从大到小的圆盘,在柱子B和C上没有圆盘,现需将柱子A上的所有圆盘移到柱子C上,可以借助柱子B,要求每次只能移动一个圆盘,每根柱子上的圆盘只能大的在下,小的在上。要求:输入n,输出移动步骤。

三、算法描述

(采用自然语言描述)

1、①先输入需统计的学生人数。

②根据学生人数输入成绩,计算成绩总和和平均分。

③比较成绩大小,得出最低分和最高分。

④输出计算结果。

2、⑴①写出不同情况下求k阶裴波那契序列的第n项的值的递归函数。

②输入k和n。

③输出计算结果。

四、详细设计

(画出程序流程图)

1、

2、⑴

五、程序代码

(给出必要注释)

1、

#include

#include

#define N 100 /*先预计输入人数在0~100内,如果人数多于100再将100改成更大的数*/

void main()

{int i,x[N],a;

int max,min;

float ave,sum=0.0;

printf("请输入不多于%d的学生人数:",N);

scanf("%d",&a); /*输入学生数*/

for(i=0;i

{printf("请输入第个%d学生成绩(整数):",i+1);

scanf("%d",&x[i]);

sum=sum+x[i];} /*输入分数*/

ave=sum/a; /*计算平均分*/

max=x[0];

min=x[0];

for(i=0;i

{if(x[i]>=max)

{max=x[i];}

if(x[i]<=min)

{min=x[i];} }

printf("平均分是:%f",ave);

printf("最高分是:%d",min);

printf("最低分是:%d",max);/*输出平均分,最低分,最高分*/ return 0;

}

2、

#include

#include

int k;

int Fibonacci (int n1)

{if(n1

return 0;

else if(n1==k-1||n1==k)

return 1;

else if(n1==k+1)

return 2;

else

return (2*Fibonacci(n1-1)-Fibonacci(n1-k-1));

}

int main()

{int n,fn=0;

printf("请输入整数k(大于等于1):");

scanf("%d",&k);

printf("请输入整数n(大于k):");

scanf("%d",&n);

while(k==1)

{printf("f%d=1\n",n);

break;}

while(k>1)

{fn=Fibonacci(n);

printf("f%d=%d",n,fn);

break;}

return 0;

}

六、测试和结果

(给出测试用例以及测试结果)

1、

2、

七、用户手册

(告诉用户如何使用程序)

1、打开并运行程序,根据提示输入学生人数和学生成绩,每次输入后都按enter键。

2、打开并运行程序,根据提示输入k和n,每次输入后都按enter键。

相关文档
最新文档