0910南航C语言常用算法总结Word下载.docx

上传人:b****6 文档编号:22073847 上传时间:2023-02-02 格式:DOCX 页数:15 大小:25.77KB
下载 相关 举报
0910南航C语言常用算法总结Word下载.docx_第1页
第1页 / 共15页
0910南航C语言常用算法总结Word下载.docx_第2页
第2页 / 共15页
0910南航C语言常用算法总结Word下载.docx_第3页
第3页 / 共15页
0910南航C语言常用算法总结Word下载.docx_第4页
第4页 / 共15页
0910南航C语言常用算法总结Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

0910南航C语言常用算法总结Word下载.docx

《0910南航C语言常用算法总结Word下载.docx》由会员分享,可在线阅读,更多相关《0910南航C语言常用算法总结Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

0910南航C语言常用算法总结Word下载.docx

a=c=0;

for(i=0;

i<

=10;

i=i+2)

{

a+=i;

b=i+1;

c+=b;

}

sumoftheeven=%d\n"

a);

sumoftheodd=%d\n"

c-11);

实验五2求1!

+2!

+3!

+4!

+5!

+…

ints=0,i,t=1;

for(i=1;

=5;

i++)

t=t*i;

s=s+t;

1!

+2!

+3!

+4!

+5!

=%d\n"

s);

下面程序的功能是:

有一个分数序列,

求出这个序列的前20项之和,请填空。

#include<

{floata=2,b=1,sum=0,t;

inti;

for(i=1;

i<

=20;

{sum+=a/b;

t=a;

a+=b;

b=t;

sum=%f\n"

sum);

下面pi函数的功能是根据以下的公式,返回满足精度要求的的值,请填空。

{doubleeps=1e-6,s=0,t=1.0;

intn;

for(n=1;

t>

eps;

n++)

s+=t;

t=t*n/(2*n+1);

PI=%f\n"

2*s);

(2)求素数(判断素数);

math.h>

inti,m,k;

m);

k=sqrt(m);

for(i=2;

=k;

if(m%i==0)break;

if(i==k+1)printf("

%disaprime.\n"

m);

elseprintf("

%disnotaprime.\n"

(3)数的分解,如水仙花数,完数等;

*用数组和循环实现数的分解

#include<

voidmain()

{longn;

inta[5],i=0,k;

scanf(“%d”&

n);

while(n>

0)

{a[i]=n%10;

n=n/10;

i++;

printf(“ws=%d\n”,i);

for(k=i-1;

k>

=0;

k--)

printf(“%4d”,a[k]);

printf(“\n”);

for(k=0;

k<

i;

k++)

printf(“%4d”,a[k]);

*打印出所有的“水仙花数”。

{inti,a,b,c;

/*a百位,b十位,c个位*/

for(i=100;

1000;

i++)

{a=i/100;

b=i/10%10;

c=i%10;

if(a*a*a+b*b*b+c*c*c==i)

printf(“%4d”,i);

*完数(一个数为其因子之和)

inti,j,s;

i++)

s=0;

for(j=1;

j<

j++)

if(i%j==0)s+=j;

if(i==s)

%ditsfactorsare1"

i);

for(j=2;

if(i%j==0)printf("

%4d"

j);

\n"

);

(4)求最大公约数和最小公倍数。

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

iostream.h>

intgys(intm,intn)//用辗转相除法求最大公约数

{

intd,x,u;

d=m>

n?

m:

n;

x=m<

u=d%x;

while(u!

=0)

{d=x;

x=u;

return(x);

intgys(intm,intn)//用辗转相除法求最大公约数的优化算法

{intr;

while((r=m%n)!

{m=n;

n=r;

return(n);

intgbs(intm,intn)//求最小公倍数

intmaxy;

maxy=gys(m,n);

return(m*n/maxy);

intgys(intm,intn)//根据定义求最大公约数

inti,x;

for(i=x;

i>

=1;

i--)

if(m%i==0&

n%i==0)break;

return(i);

intgbs(intm,intn)//根据定义求最小公倍数

inti,d;

for(i=d;

=m*n;

if(i%m==0&

i%n==0)break;

intgys(intm,intn)//求最大公约数:

大数减小数直至两数相等

{

while(m!

=n)

if(m>

n)m=m-n;

elsen=n-m;

return(m);

intm,n;

%d%d"

m,&

gongyueshu:

%4d\n"

gys(m,n));

gongbeishu:

gbs(m,n));

}三、第七章常用算法总结

(1)数组运算,如找最大,最小值问题,累加和,求平均值;

见函数调用例,非函数调用略,二维数组略。

(2)排序运算,如冒泡法,选择排序;

见函数调用例

(3)字符串操作:

strcpy,strcat,strlen。

四、第八章常用算法总结

能以函数的形式完成第五章、第六章、第七章的常用算法。

一、以下程序的功能是:

从键盘输入n的值,计算1+1/2+1/3+1/4+…+1/n的值,并将和值返回主调函数,请填空。

floatsum(intn);

floati=2;

floats=1.0;

while(i<

=n)

{

s=s+1/i;

i++;

return(s);

{floatm;

floats;

scanf("

%f"

s=sum(m);

printf("

s=%f\n"

二、P38实验五2求1!

intjc(intm)

inti,w=1;

=m;

w=w*i;

returnw;

inti,n,s=0;

for(i=1;

=n;

s=s+jc(i);

s=%d\n"

三、求素数判断x是否是素数,若是素数,返回1;

若不是素数,返回0。

intprime1(intx)/*解1*/

intk,i;

k=sqrt(x);

for(i=2;

if(x%i==0)break;

if(i==k+1)return

(1);

elsereturn(0);

intprime2(intx)/*解2*/

if(x%i==0)return(0);

return

(1);

inti,m;

if(prime(m)==1)printf("

四、打印出所有的“水仙花数”。

inths(intm)

inta,b,c;

a=m/100;

b=m/10%10;

c=m%10;

if(a*a*a+b*b*b+c*c*c==m)return1;

elsereturn0;

inti,a,b,c;

for(i=100;

if(hs(i))printf("

%4d"

五、完数

intws(intm)

inti,s=0;

m;

if(m%i==0)s+=i;

if(s==m)return1;

if(ws(i)==1)

六、最大公约数和最小公倍数略

七、求一维数组最大、最小、平均值

解1:

通过全局变量返回数组的最大值和最小值,通过函数的返回值返回数组的平均值。

floatmax,min;

floataverage(floatarray[],intn)

{inti;

floataver,sum;

max=min=sum=array[0];

{if(array[i]>

max)max=array[i];

elseif(array[i]<

min)min=array[i];

sum=sum+array[i];

aver=sum/n;

return(aver);

{floatave,score[10];

inti;

for(i=0;

10;

i++)scanf("

score[i]);

ave=average(score,10);

max=%f\n"

max);

min=%f\n"

min);

average=%f\n"

ave);

解2:

通过指针做函数参数,返回数组的最大值、最小值和平均值。

//推荐使用此方法

voidaverage(floatarray[],intn,float*maxp,float*minp,float*averp)

{inti;

floatsum;

sum=array[0];

*maxp=*minp=array[0];

*maxp)*maxp=array[i];

*minp)*minp=array[i];

*averp=sum/n;

floatscore[10],max,min,aver;

i++)

average(score,10,&

max,&

min,&

aver);

aver);

八、一维数组排序(选择法、冒泡法)

例1:

将n个整数按由小到大排列

voidsort(inta[],intn)//选择法排序

inti,j,p,t;

for(i=0;

n-1;

p=i;

for(j=i+1;

j<

j++)

if(a[j]<

a[p])p=j;

if(p!

=i){t=a[i];

a[i]=a[p];

a[p]=t;

voidsort(inta[],intn)//冒泡法排序

{inti,j,t;

for(j=0;

n-1-i;

if(a[j]>

a[j+1])

{t=a[j];

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

a[j+1]=t;

{inti,a[10];

i++)scanf("

a[i]);

sort(a,10);

printf("

a[i]);

九、字符串操作(不用系统函数,完成strlen,strcpy,strcat功能)

intmystrlen(char*p)/*strlen函数功能*/

inti,n=0;

while(*p!

=0){n++;

p++;

returnn;

{charstr[10];

gets(str);

mystrlen(str));

voidmystrcpy(char*to,char*from)

/*strcpy函数功能*/

from[i]!

='

\0'

;

to[i]=from[i];

to[i]='

{charstr1[10],str2[10];

gets(str2);

mystrcpy(str1,str2);

puts(str1);

 

voidmystrcat(char*s1,char*s2)

/*strcat函数功能*/

{inti=0,j=0;

while(s1[i]!

)i++;

while(s2[j]!

s1[i++]=s2[j++];

s1[i]='

;

{charstr1[20],str2[10];

gets(str1);

mystrcat(str1,str2);

//*****P85.20*****/

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

当前位置:首页 > PPT模板 > 其它模板

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

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