算法与程序设计实验报告文档格式.docx

上传人:b****3 文档编号:15701722 上传时间:2022-11-15 格式:DOCX 页数:14 大小:147.96KB
下载 相关 举报
算法与程序设计实验报告文档格式.docx_第1页
第1页 / 共14页
算法与程序设计实验报告文档格式.docx_第2页
第2页 / 共14页
算法与程序设计实验报告文档格式.docx_第3页
第3页 / 共14页
算法与程序设计实验报告文档格式.docx_第4页
第4页 / 共14页
算法与程序设计实验报告文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

算法与程序设计实验报告文档格式.docx

《算法与程序设计实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《算法与程序设计实验报告文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

算法与程序设计实验报告文档格式.docx

实验代码:

的递归算法的编写。

#include<

stdio.h>

intdigui(intn)

{

if(n==1)

return1;

else

returnn*digui(n-1);

}

voidmain()

intn;

printf("

请输入待求阶乘数(小于15的一个数):

"

);

scanf("

%d"

&

n);

结果为:

%d\n"

digui(n));

2、计算Fib(n)的递归算法

longFib(intn){

if(n==1||n==2)//终止递归条件

return1;

else

returnFib(n-1)+Fib(n-2);

请输入裴波那契数列的待求项数:

裴波那契数列第%d项值为%ld\n"

n,Fib(n));

3、二分查找法的实现。

intBinarySearch(inta[],intn,intx)/*二分查找功能函数*/

intl=0,r=n,i;

while(l<

=r){

i=(l+r)/2;

if(x==a[i])returni;

elseif(x<

a[i])r=i-1;

elsel=i+1;

return-1;

voidmaopao(inta[])/*冒泡排序功能函数*/

inti,j;

intn=10;

for(i=0;

i<

n;

i++)

for(j=0;

j<

n-i-1;

j++)

if(a[j]>

a[j+1])

{

inttemp;

temp=a[j];

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

a[j+1]=temp;

}

inti,a[10],x;

intflag=-1;

请输入10个带查找数据(空格分隔):

10;

scanf("

a[i]);

maopao(a);

带查序列有序化后变为:

printf("

%d,"

a[i]);

\n"

请输入待查关键字:

x);

flag=BinarySearch(a,10,x);

if(flag==-1)

未找到带查关键字!

找到关键字,位于有序序列的第%d个位置!

flag+1);

算法与程序设计实验报告三(4学时)

6、了解贪心算法思想

7、掌握贪心法典型问题,如背包问题、作业调度问题等。

4、键盘输入一个高精度的正整数n(n<

10位)去掉任意s个数字后剩下的数字按原左右次序组成一个新的正整数。

编程对给定的n和s,寻找一种方案,使得剩下的数最小。

5、设计实现超市收银程序,假设顾客在超市购买各种商品,来到收银台结账,收银员具有面值为100,20,10,5和1元的纸币和各种面值为5角、2角、1角的硬币。

设计程序计算顾客各种所买商品的钱数,并根据顾客所付的钱数输出零钱的数目及要找的各种货币的数目。

算法思想:

贪心算法的基本思路

1.建立数学模型来描述问题。

2.把求解的问题分成若干个子问题。

3.对每一子问题求解,得到子问题的局部最优解。

4.把子问题的解局部最优解合成原来解问题的一个解。

1.键盘输入一个高精度的正整数n(n<

#include<

string.h>

#defineM100

main()

{charch[M];

intr[M],d[M],l,s,i,j,k;

请输入正整数:

gets(ch);

请输入删除的位数:

s);

l=0;

ch[i]!

='

\0'

;

{

r[i]=i;

l++;

}

s;

for(j=0;

l-i-1;

if(ch[j]>

ch[j+1])

break;

if(j==l-i)

k=l-i-1;

elsek=j;

d[i]=r[k];

for(j=k;

j++)

{

ch[j]=ch[j+1];

r[j]=r[j+1];

ch[j]='

删除%d后最小的整数为:

%s\n"

s,ch);

删除的数位为:

i++)

%d\t"

d[i]+1);

return0;

2.设计实现超市收银程序,假设顾客在超市购买各种商品,来到收银台结账,收银员具有面值为100,20,10,5和1元的纸币和各种面值为5角、2角、1角的硬币。

doubleprice,total=0,givemoney,leamoney;

intn,i,k=0,m=0,x=0,y=0;

请输入商品的数目:

输入每件商品的价格:

for(i=1;

=n;

{

第%d件:

i);

%lf"

price);

total=total+price;

总的价格=%5.2f\n"

total);

输入顾客所给的钱:

givemoney);

leamoney=givemoney-total;

剩余的钱为%5.2f\n"

leamoney);

\n各种货币的数目如下:

\n"

while(leamoney>

=100)

leamoney=leamoney-100;

k++;

if(leamoney<

100)

100元=%d张\n"

k);

while(leamoney>

=20)

leamoney=leamoney-20;

x++;

20)

20元=%d张\n"

x);

=10)

leamoney=leamoney-10;

10元=1张\n"

=5)

leamoney=leamoney-5;

5元=1张\n"

=1)

leamoney=leamoney-1;

m++;

1)

1元=%d张\n"

m);

=0.5)

leamoney=leamoney-0.5;

5角=1\n"

=0.2)

leamoney=(float)(leamoney-0.2);

y++;

0.2)

2角=%d张\n"

y);

=0.1)

leamoney=(float)(leamoney-0.1);

1角=1张\n"

算法与程序设计实验报告四(4学时)

8、流程图的绘制。

9、背包问题求解。

6、绘制下列各题的程序流程图。

1.输人一个数到变量a,输出它的绝对值。

(分别用单双分支绘制)

单分支结构算法:

(1)输入任意数并赋值给变量a;

(2)判断a是否小于0,如果a小于0,取a的相反数;

(3)输出a。

双分支结构算法:

(1)输人任意数并赋值给变量a;

(2)判断a是否小于0,如果a小于0则输出a的相反数,否则输出a。

2.最值问题:

(1)求输人的两个数中的最大值。

(2)求输人的三个数中的最大值。

(3)求输入的十个数中的最大值。

3.循环求和(不同的控制循环方法)

(1)求输人20个数的和。

计数法

(知道循环次数,可以采用循环变量i来控制循环次数)

(2)求输入的若干个学生成绩的和,输入-1表示结束。

标志法

(不能确定次数,可以用输入的数据的值来进行控制)

(3)对输入的数据求和,当所求的和超过100则停止输入并输出求和结果(设此题中输人的数皆为正数)。

(没有指出输人数据的具体个数,且不能依据对输入数据的值来控制循环,控制循环的关键就在于对循环体中变量s的判断)

7、利用贪心策略解决背包问题。

现有载重为M公斤的背包和n种货物。

第i种货物的重量为Wi,它的总价值为Pi,假定M、Wi、Pi均为整数。

设计程序给出装货方法,使装入背包的货物总价值达到最大。

(2)求输人的三个数中的最大值。

3.循环求和

1.求输人20个数的和。

计数法

2.求输入的若干个学生成绩的和,输入-1表示结束。

(不能确定次数,可以用输入的数据

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

当前位置:首页 > 成人教育 > 成考

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

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