C语言经典算法100例Word文档下载推荐.docx

上传人:b****6 文档编号:19169393 上传时间:2023-01-04 格式:DOCX 页数:26 大小:34.61KB
下载 相关 举报
C语言经典算法100例Word文档下载推荐.docx_第1页
第1页 / 共26页
C语言经典算法100例Word文档下载推荐.docx_第2页
第2页 / 共26页
C语言经典算法100例Word文档下载推荐.docx_第3页
第3页 / 共26页
C语言经典算法100例Word文档下载推荐.docx_第4页
第4页 / 共26页
C语言经典算法100例Word文档下载推荐.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C语言经典算法100例Word文档下载推荐.docx

《C语言经典算法100例Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言经典算法100例Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。

C语言经典算法100例Word文档下载推荐.docx

z0F+t3])i1O

#include"

math.h"

main()-z%~7e%y#^)x+T!

j1c:

a

{2H#f*~-z'

\.c&

}9v8|1z*s

intm,i,k,h=0,leap=1;

%h-`2[-j6w7Q5V/q

printf("

for(m=101;

m<

=200;

m++)

{k=sqrt(m+1);

(a(i8F+Q7r/D!

u.](o6}#V7Q

for(i=2;

=k;

i++)'

Q7{:

Z'

N!

T:

E3D#a#U

if(m%i==0)

{leap=0;

break;

if(leap){printf("

%-4d"

m);

h++;

if(h%10==0)5h-E\g0H#x.A*~7m

8K;

]3w%v6O0q;

[1Q"

Z

leap=1;

\nThetotalis%d"

h);

};

u$V:

b:

c1T%F,b

Z!

N'

J"

o(\-E#i;

g

打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位

数字立方和等于该数本身。

例如:

153是一个“水仙花数”,因为153=1的三次方

+5的三次方+3的三次方。

$_/s9e1a8R(\n

__________________________________________________________________

利用for循环控制100-999个数,每个数分解出个位,十位,百位。

___________________________________________________________________9e(w*y1~Q9Q:

i(i0k

'

W%Yv,^1h9{

inti,j,k,n;

.?

!

Q;

I:

{;

Y!

{

waterflower'

numberis:

"

7u'

q2L%L%B'

N)d

for(n=100;

n<

1000;

n++):

]#m)\8[-Q5^8P

i=n/100;

/*分解出百位*/

j=n/10%10;

/*分解出十位*/

k=n%10;

/*分解出个位*/1R6|7w-g3s7\+@.f#b

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k);

Y.ls0H)r^-`

{3e,k4q-d.V+k#Y:

e

%-5d"

n);

}0X:

k2J$g(a3A+v2D9`

&

?

3`%B*z(Q%i

}'

C%K-J0e'

f6~

将一个正整数分解质因数。

输入90,打印出90=2*3*3*5。

+J/{5x0V9L+M,w(_

$E/S"

U&

e$R5z8z

对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完(k#{%Q1xl-O

成:

({*G&

[7M$b0E+x%{$d9L

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<

>

k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正0D3l&

k&

|"

r+W+Q#n

整数你n,重复执行第一步。

0s&

M'

L"

C1b5v#t7v)|,V

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

2J(h1?

7R'

j7l

;

g.u'

O&

W*K'

\

/*zhengintisdividedyinshu*/

intn,i;

\npleaseinputanumber:

scanf("

%d"

&

n);

%d="

$a-Z;

b*J.h7D8l0w#X)U

=n;

i++)

while(n!

=i);

J.k/{:

p*d#m3S7|3}0B3c

{"

d*v5N(\(h*i9P

if(n%i==0)

%d*"

i);

*B&

l(v"

[2^7Q4E

n=n/i;

2?

a2|x7X:

@[;

{,n#J

}1D:

W:

h-d/t#o*W&

E:

r

else3y5];

V'

JT8b2a

4^%I-@-w7t1b,t

}"

g$B2e1A:

F6q8v,s"

h.o

e;

t6C"

S#~1d$H

利用条件运算符的嵌套来完成此题:

学习成绩>

=90分的同学用A表示,60

-89分之间的用B表示,60分以下的用C表示。

1}(Q#`#\*\.t/S

__________________________________________________________________;

K'

p3i*z:

s$P'

k"

j7j

(a>

b)?

a:

b这是条件运算符的基本例子。

v5g(k4J9Y

$[%_'

T6V4A.m5{

___________________________________________________________________-b(SP3E2k#P3f5p!

g,d*H*s)Y

main()([:

M%n'

{,f$\/g7W,\

{!

Y#A4w-q2U.k2s7x

intscore;

chargrade;

pleaseinputascore\n"

score);

3H6q.D&

U/a%T(z;

N"

K)O1\

grade=score>

=90?

A'

score>

=60?

B'

:

C'

%dbelongsto%c"

score,grade);

1U!

j*j/[1g9j"

[)T

t-Q0@.y!

c

输入两个正整数m和n,求其最大公约数和最小公倍数。

.u4S:

O9J5O+s&

K%q*q

利用辗除法。

Y9D"

u1k%b+X$d0Q6}$R8X

1T#Q&

|-nv!

PX4z.{

___________________________________________________________________'

q6g4l'

y-[8G7}5`*N$^

*n%i#m.b/d

inta,b,num1,num2,temp;

pleaseinputtwonumbers:

d1t2W*D%r4eI

%d,%d"

num1,&

num2);

if(num1 {temp=num1;

num1=num2;

 

num2=temp;

};

b1e*m)e9k1p%s#F*[#U-{%B

a=num1;

b=num2;

while(b!

=0)/*利用辗除法,直到b为0为止*/0~"

d\;

k6rA3v%d

temp=a%b;

+o%w8A;

Wy.g

a=b;

$g,G:

VM#X5P-]6k9T

b=temp;

gongyueshu:

%d\n"

a);

f,S/q1O)N9S0k!

`3U-i

gongbeishu:

num1*num2/a);

+K/v9e&

j3w

u7m4a*["

N9`(Y%F*p

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数8O'

oG4F:

Y'

{'

j

7r;

j:

@$V(e-}

__________________________________________________________________0x6i5n-n;

b)E;

X,u

利用while语句,条件为输入的字符不为'

\n'

.2u/M6j2L4g!

r9}:

A

W+M!

P2C(w4v;

V,a+d

stdio.h"

E0Z/}#w*G;

z-X2I!

U

main()'

S4g5l1f1L7~(I

{charc;

intletters=0,space=0,digit=0,others=0;

pleaseinputsomecharacters\n"

while((c=getchar())!

='

w'

o0Y7R6w2V"

W-h,q

if(c>

a'

c<

z'

||c>

Z'

)"

W.f'

\6V.A

letters++;

elseif(c=='

'

space++;

9i1~8D%l*H5P%J

elseif(c>

0'

9'

)'

]&

h/Q7`?

7l6_%M

digit++;

+d/V9l9Q6s.M$A

else

others++;

*~)@g*u,r1~*p3Z(]:

Z-];

~1M

allinall:

char=%dspace=%ddigit=%dothers=%6D,h,@9@;

a&

D5c

d\n"

letters,space,digit,others);

a7m;

T#|*G2v-Z0n0f-o(X(c

}.X'

y)t+G:

i5M8?

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如%Y0o5W.F7f%]

2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

__________________________________________________________________#[;

N%L$z*\0x&

关键是计算出每一项的值。

(Q$M5`$y5`9k3?

*i

___________________________________________________________________9J2C0i9s8J1w/u1J)`7^

6[6b0F#{2nL$k$d9f$l

a+k0l&

l,q3W!

n

main(),L&

~"

C!

J9k9|

{1v#z1k(b;

D7E$m1A:

g!

p

inta,n,count=1;

longintsn=0,tn=0;

pleaseinputaandn\n"

5n#c,n2D'

`0X4o

a,&

*l9^#i;

d:

_8s(b$V-b.E#p

a=%d,n=%d\n"

a,n);

while(count<

=n)

{2{.D/vt0`

tn=tn+a;

sn=sn+tn;

9Q&

J.D1O2~({!

X.|)}:

K!

a=a*10;

5o/Z4H;

\2J3k&

rd9f

++count;

a+aa+...=%ld\n"

sn);

一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如6=1+2;

N1g*y"

R.w%U)T1H

+3.编程找出1000以内的所有完数。

___________________________________________________________________(_4H5h&

{&

}8k'

b3K:

u

{4i1Y*a$t0?

0C4s'

|

staticintk[10];

inti,j,n,s;

9M!

W1o#t(~,{

for(j=2;

j<

j++)9E;

~9`.f!

E5E.z

n=-1;

s=j;

(t3j:

N0S5o2u"

@!

A

i  {3x3C'

['

L#@:

Z1f

if((j%i)==0)9D0S;

~*t2H;

P%Z

{ n++;

s=s-i;

1\/y!

K*`;

L*T,Y*X&

[/y3u-Q

k[n]=i;

}([2L9q"

V$A9~1X/K0J

if(s==0)

{%{;

i#@4p:

b-q)E"

j-S&

o

%disawanshu"

j);

F+M3FW0H9C/};

X*J

for(i=0;

i printf("

%d,"

k);

8J1])y!

B)p*^%U

k[n]);

}7j/~1v5a1u%p*]

一球从100米高度自由落下,每次落地后反跳回原高度的一半;

再落下,

求它在第10次落地时,共经过多少米?

第10次反弹多高?

6A"

G'

h"

\/k(ok#B8a

6o5^8a%Z%u,S(m

main()&

[.].j:

wl-P

floatsn=100.0,hn=sn/2;

intn;

for(n=2;

=10;

n++),N5a2G-`/[0p)a

sn=sn+2*hn;

/*第n次落地时共经过的米数*/3T:

h'

]/t,C;

H({9K

hn=hn/2;

/*第n次反跳高度*/!

p)q1j6V'

q5j(T

}0J5e4k#]6Z'

r9[+D'

c"

thetotalofroadis%f\n"

-eT5g%e8r0W-]-x

thetenthis%fmeter\n"

hn);

8K+Q:

M&

t:

N&

M0B9D+{8`

}:

w;

p[1I/f1p~6i

%\,J@%{!

_5E8W

一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的

一半又多吃了一个,到第十天的时候发现还有一个.

7[(y0Y2~9m4q'

N

___________________________________________________________________"

u7A0e!

r)Y;

H4B

/*猴子吃桃问题*/

main()!

k!

C3r3o"

G7I&

L7Y

{8E'

A"

O6g+\,t

inti,s,n=1;

/W"

t/j$f7H%B

10;

s=(n+1)*2

n=s;

第一天共摘了%d个桃\n"

s);

-j;

_7`6h'

|$w.D

}0f-k:

Q3j,f)v$P&

B

9})D.M;

R8?

2A

迭代法求方程根$J3z(B6S-Y"

N9f;

Y

7\u/Y0n4k:

/*迭代法求一个数的平方根*/

#defineEpsilon1.0E-6/*控制解的精度*/'

`$T/s/v9L"

Y4f.nC'

`1R7U

#include<

math.h>

8L:

M#^'

Y5v#B7]

{;

G/x/y+v$U%p&

W2o

floata,x0,x1;

请输入要求的数:

%f"

a);

8k#o6^'

}7R0[:

s6o9]5C

x0=a/2;

x1=(x0+a/x0)/2;

}4E+b!

U-M2M)f#_

while(fabs(x1-x0)>

=Epsilon)4V&

^-t4^9Y3U#g

{9@%n6R7i7C'

t"

x0=x1;

6N%C5e*j9?

B-m2U7x

}$I9S*|!

T%N"

o)g"

R)G.g

%f的平方根:

%f.5\n"

x1);

+h)b7z2|6o-Y%t

M.g:

i.q-z,N$?

1r2p

/*上题的另一种算法*//D&

J)q5s.@

#defineEpsilon1.0E-6/*控制解的精度*/;

\'

o,u!

Q*q/K&

Q"

}

#include<

stdio.h>

(]!

s#W:

o8E6W"

#Q2s)g'

pA$M&

`3_(O5t.|

main().Tt,K(G+?

2h)?

cA]-B

{/x#Z8B;

a!

T&

Q'

E.K

floatnum,pre,this;

do

num);

/*输入要求平方根的数*/

}while(num<

0);

5z)},z1^+T-s5Y:

f%n2`

if(num==0)'

i7Y#w9Z/J6B#U/{3M5a;

therootis0"

~7{/v&

D-~5y&

I

{)U6y0oF1b7y6K0H.W+p)T

this=1;

do/T9J%s#I9|*V

{8}.l#N&

y4Y

pre=this;

this=(pre+num/pre)/2;

}while(fabs(pre-this)>

Epsilon);

/*用解的精度,控制循环次数*/0x:

`/X%Z'

W7P#C!

J)\

}0T*g3P8O;

F:

R6N0L

therootis%f"

this);

}7L!

e%@+y;

X9h

用牛顿迭代法求方程2*x*x*x-4*x*x+3*x-6的根!

l$P7g(h)\*C2I(\

/*牛顿

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

当前位置:首页 > 职业教育 > 职高对口

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

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