算法实验报告.docx

上传人:b****6 文档编号:6957883 上传时间:2023-01-13 格式:DOCX 页数:13 大小:98.28KB
下载 相关 举报
算法实验报告.docx_第1页
第1页 / 共13页
算法实验报告.docx_第2页
第2页 / 共13页
算法实验报告.docx_第3页
第3页 / 共13页
算法实验报告.docx_第4页
第4页 / 共13页
算法实验报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

算法实验报告.docx

《算法实验报告.docx》由会员分享,可在线阅读,更多相关《算法实验报告.docx(13页珍藏版)》请在冰豆网上搜索。

算法实验报告.docx

算法实验报告

 

常熟理工学院

计算机科学与工程学院

实验报告

2018-2019学年第1学期

 

实验报告要求

1.在实验课前要认真预习实验内容,熟习实验的原理、方法及算法等。

2.根据实验指导书要求,认真完成实验内容;实验结束后,按照实验报告的要求认真填写相关内容。

3.实验时要带好实验指导书、实验报告本。

4.实验时要严肃认真,不得互相抄袭。

5.实验课的成绩由实验预习、实验过程、实验结果和实验报告四部分构成。

 

实验名称

实验一

实验目的

求最大公约数和最小公倍数

实验设备

机房

实验日期

2018年9月5日

一、实验预习

二、实验内容(原理、方法、框图)

三、实验过程(步骤、实现代码)

#include

#include

intmain()

{

intm,n,a,b,c,d;

printf("Pleaseentertwointeger:

");

scanf("%d%d",&m,&n);

d=m*n;

if(m

{

a=n;

n=m;

m=a;

}

for(b=m%n;b!

=0;b=m%n)

{

m=n;

n=b;

}

c=d/n;

printf("最大公约数为%d\n",n);

printf("最小公倍数为%d\n",c);}

}

#include

#include

intmain()

{

inta,b,num1,num2,temp;

printf("pleaseinputtwonumber:

\n");

scanf("%d%d",&num1,&num2);

if(num1

{

temp=num1;

num1=num2;

num2=temp;

}

a=num1;

b=num2;

while(b!

=0)

{/*利用辗除法,直到b为0为止*/

temp=a%b;

a=b;

b=temp;

}

printf("最大公约数:

%d\n",a);

printf("最小公倍数:

%d\n",num1*num2/a);

}

五、心得体会(实验收获)

通过本次实验我再一次了解了求最大公约数和最小公倍数的原理。

了解了辗转相除法的算法机制,收获很大

实验预习20%

实验过程20%

实验结果30%

实验报告30%

成绩

日期

实验名称

实验二

实验目的

实验设备

实验日期

一、实验预习

二、实验内容(原理、方法、框图)

斐波那契数列:

F[n]=F[n-1]+F[n-2](n>=3,F[1]=1,F[2]=1)任意输入一个n,求F[n].分别采用数组和指针来做,并比较时间复杂度和空间复杂度

三、实验过程(步骤、实现代码)

用数组方式实现:

#include

#include

intmain()

{

intn;

do

{

printf("请输入任意一个整数n,用以求F[n]:

");

scanf("%d",&n);

if(n<3||n>46)

printf("您输入的n数值范围有误,请重新输入\n");

}while(n<3||n>46);

//当n值为临界值47时,溢出

fun(n);

return0;

}

voidfun(intn)

{

inti;

inta[n+1];

a[1]=1;

a[2]=1;

for(i=3;i<=n;i++)

{

a[i]=a[i-1]+a[i-2];

}

printf("F[n]数值为:

%d\n",a[n]);

}

用指针方式实现:

#include

#include

intmain()

{

intn;

do

{

printf("请输入任意一个整数n,用以求F[n]:

");

scanf("%d",&n);

if(n<3||n>46)

printf("您输入的n数值范围有误,请重新输入\n");

}while(n<3||n>46);

//当n值为临界值47时,溢出

fun(n);

return0;

}

voidfun(intn)

{

int*F=(int*)malloc((n)*sizeof(int));//Applynmemoryspace.

int*p,*q,*now;

p=F;

q=p+1;

now=q+1;

*p=1;

*q=1;

printf("该数列为:

%d%d",*p,*q);

while(now-F

{

*now=*p+*q;

printf("%d",*now);

p++;

q++;

now++;

}

}

四、实验结果(遇到的问题及解决方法)

五、心得体会(实验收获)

实验预习20%

实验过程20%

实验结果30%

实验报告30%

成绩

日期

实验名称

实验三利用动态内存分配对n个整数进行排序,输出结果。

实验目的

实验设备

实验日期

2018年10月31日

三、实验过程(步骤、实现代码)

以数组形式实现

#include

#include

intmain()

{

int*a=NULL;

inti=0,temp=0,j=0;

//动态创建一个具有10个int类型的数组

a=malloc(sizeof(int)*10);

if(a==NULL)

{

fprintf(stderr,"memoryerror!

");

return-1;

}

printf("请输入10个整数元素:

");

//读取10个元素的数值

for(i=0;i<10;i++)

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

for(i=0;i<10;i++){

for(j=0;j<9-i;j++){

if(a[j]>a[j+1]){

temp=a[j+1];

a[j+1]=a[j];

a[j]=temp;

}

}

}

printf("排序后输出:

");

for(i=0;i<10;i++){

printf("%d",a[i]);

}

//释放动态分内的空间

free(a);

return;

}

以链表形式实现

#include

#include

 

typedefstructnode

{

intdata;/*data为数据元素*/

structnode*next;

}LNode,*LinkList;

LinkListCreat(void)/*创建链表,结束标志为当输入的数据为0*/

{

LinkListH,p1,p2;

intn=0;

p1=p2=(LinkList)malloc(sizeof(LNode));

printf("输入数据:

");

scanf("%d",&p1->data);

H=NULL;

while(p1->data!

=0)

{

n=n+1;

if(n==1)

H=p1;

else

p2->next=p1;

p2=p1;

p1=(LinkList)malloc(sizeof(LNode));

scanf("%d",&p1->data);

}

p2->next=NULL;

return(H);

}

LinkListSort(LinkListSL)/*递增排序函数:

入口参数:

链表的头指针,此为链表中的排序函数*/

{

LinkListp,q;

inttemp;

for(p=SL;p!

=NULL;p=p->next)

{

for(q=p->next;q!

=NULL;q=q->next)

{

if(p->data>q->data)

{

temp=q->data;

q->data=p->data;

p->data=temp;

}

}

}

returnSL;

}

intmain()

{

LinkListL,S,K;

L=Creat();

printf("初始化的单链表数据序列为:

\n");

for(S=L;S!

=NULL;S=S->next)

printf("%d",S->data);

Sort(L);

printf("\n按递增顺序排序后的序列为:

\n");

for(K=L;K!

=NULL;K=K->next)

printf("%d==>",K->data);

return0;

}

四、实验结果(遇到的问题及解决方法)

以数组形式实现

以链表形式实现

五、心得体会(实验收获)

实验预习20%

实验过程20%

实验结果30%

实验报告30%

成绩

日期

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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