重庆普通高校专升本计算机算法整理.docx 立即下载
2024-11-05
约8.7千字
约15页
0
50KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

重庆普通高校专升本计算机算法整理.docx

重庆普通高校专升本计算机算法整理.docx

预览

免费试读已结束,剩余 10 页请下载文档后查看

20 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

递推算法(常用级数、数列求和、二分法、梯形积分法、穷举法等)
常用级数、数列求和

例累加和
程序1:应用for循环设计
/*for循环求s=1*2+2*3+…99*100*/
main()
{
longi,s;
s=0;
for(i=1;i<=99;i++)/*设置循环i=1,2,…,99*/
s+=i*(i+1);/*把通项i*(i+1)累加到s中*/
printf("1*2+2*3+...+99*100=%ld\n",s);/*此处结果s为long,故用%ld输出*/
}

输出格式符含义:
%d短整形,一般占两个字节,范围:-32768~32767,用于int,shortint
%u无符号短整形,一般占两个字节,范围:0~65535,用于unsignedint
%ld长整形,一般占四个字节,范围:-2147483648~2147483647,用于long,longint
%c字符型,用于char
%s字符串,用于chara[]
%f单精度浮点型,用于float
%lf双精度浮点型,用于double

程序2:应用while循环设计
/*while循环求s=1*2+2*3+…+99*100*/
main()
{
longi,s;
i=1;s=0;
while(i<=99)/*设置循环i=1,2,…,99*/
{
s+=i*(i+1);/*把通项i*(i+1)累加到s中*/
i++;
}
printf("1*2+2*3+…+99*100=%ld\n",s);
}
例代数和
/*求s=1-1/2+1/3-1/4+…-1/100*/
main()
{
intk,n;floats=0;
for(k=1;k<=100;k++)
	if(k%2==1)
	{s+=1.0/k;}/*应用分支实现符号一正一负*/
	else
	{s-=1.0/k;}
printf("s=%9.6f",s);
}
例阶乘计算
/*循环累乘求阶乘n!*/
main()
{
inti,n;
longt;
scanf("%d",&n);/*输入n的值*/
t=1;/*积变量t赋初值1*/
for(i=1;i<=n;i++)
{
t=t*i;/*循环变量i累乘到t,体现阶乘运算*/
}
printf("%d!=%ld\n",n,t);
}


二分法/折半法

(只能对有序数列进行查找)
基本思想:设n个有序数(从小到大)存放在数组a[1]----a[n]中,要查找的数为x。用变量min、max、mid分别表示查找数据范围的底部(数组下界)、顶部(数组的上界)和中间,mid=(max+min)/2,折半查找的算法如下:(1)x=a(mid),则已找到退出循环,否则进行下面的判断;(2)x<a(mid),x必定落在min和mid-1的范围之内,即max=mid-1;(3)x>a(mid),x必定落在mid+1和max的范围之内,即min=mid+1;(4)在确定了新的查找范围后,重复进行以上比较,直到找到或者min<=max。

将上面的算法写成如下程序:
voidmain()
{
inta[10],mid,min,max,x,i,find;
printf("pleaseinputthearray:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("pleaseinputthenumberyouwantfind:\n");
scanf("%d",&x);
printf("\n");
min=0;
max=9;
find=0;/*find用于标记是否找到x*/
while(min<=max&&find==0)
{
mid=(max+min)/2;/*计算中间*/
if(x==a[mid])
{
find=1;/*找到find=1*/
break;/*跳出循环*/
}
elseif(x<a[mid])
max=mid-1;
else
min=mid+1;
}
if(find==1)
printf("thenumberisfoundtheno%d\n",mid);
else
printf("thenumberisnotfound\n");
}

梯形积分法

(这个你应该能看懂什么意思,我看不明白。呵呵呵!)
#include"math.h"
main()
{
inti,n=1000;
floata,b,h,t1,t2,s,x;
printf("请输入积分限a,b:");
scanf("%f,%f",&a,&b);
h=(b-a)/n;
for(s=0,i=1;i<=n;i++)
{
x=a+(i-1)*h;
t1=exp(-x*x/2);
t2=exp(-(x+h)*(x+h)/2);
s+=(t1+t2)*h/2;
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

重庆普通高校专升本计算机算法整理

文档大小:50KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用