机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5792|回复: 16
打印 上一主题 下一主题

C语言经典算法100例

[复制链接]
跳转到指定楼层
#
发表于 2017-9-23 10:57:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
【程序8
7 P) d& ]4 `. K* {题目:输出9*9口诀。 9 g2 I% D& P. X1 Z; G/ _# S# y
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
6 M- D# h& F) \7 k* q2.程序源代码: 3 C) k* ^  E4 X" `! b7 L
#include "stdio.h" + [; s4 D* K0 ~0 G
main()
7 I- _" l1 q* G! k2 ^  n2 J{
; \' o) g4 ]& \6 ~int i,j,result;
9 l! \) P$ I4 @6 x9 ?+ kprintf("\n");
; f& N* A7 y" Y- _+ Efor (i=1;i<10;i++) $ p% B9 r. B! m
{ for(j=1;j<10;j++) ( k2 ~! B1 u9 `
{
  M  L9 L& h4 [1 r, e/ \; X. X/ Bresult=i*j; : D2 e% Y+ C$ e- S5 S
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
7 V, M2 x5 H! Y} 3 E  I0 ^: [" f& j% B
printf("\n");/*每一行后换行*/ ( a- X7 A, |) M; o9 O
}
- {  }. y) L' w2 q  t}
1 `! \* I' E$ Q( ~" F3 U+ [4 d============================================================== : {% g+ Q  s* E/ Z* C4 }
【程序9
) y( |8 x) W4 u% H& q& S. M7 R题目:要求输出国际象棋棋盘。 5 Z- \7 ^2 B7 s% ^
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
4 I6 \. }6 R8 d4 F! H" v2.程序源代码:
  z4 r: [. e+ s4 @$ R2 x#include "stdio.h" / ?9 R& z) U  t( u
main()
4 x" J  Q9 \; d# E7 r  q{ , Y4 ~" v. r3 g1 n& F( W2 P
int i,j; , ^- [7 g" s& A" d, B% E
for(i=0;i<8;i++)
1 |! }, T4 n, P# B1 B8 j{
8 s# _. R  @/ g; s# Y9 k0 }for(j=0;j<8;j++) , B" [7 ]+ V. L1 C' u* U
if((i+j)%2==0) 0 @9 a! N3 Y, \0 e/ b
printf("%c%c",219,219); ) o8 E) z6 \, d; }
else   E* v8 S+ ?% N7 C- Q( ~
printf(" ");
/ k8 C0 W$ C$ x4 }; o* K3 r. Nprintf("\n"); ( Q) P( A8 G4 q( P( e4 y
}
% n3 F7 i0 R8 N} # A' e$ {) P2 l8 @
==============================================================
( ^- ^: S; F" g( z【程序10
  a( P6 t* j6 x( e: i7 ?) N题目:打印楼梯,同时在楼梯上方打印两个笑脸。
- k% N7 Q+ P8 I6 [  R- i% |1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 8 U4 z0 G/ S! X" P
2.程序源代码: ) l* T( s9 G. r; j/ Z; d3 Q
#include "stdio.h"
! s8 L/ \: D0 P( Q& k* P4 C4 u1 gmain() . n* ]9 l" I0 G3 g+ L: [
{ 3 {- v" m+ n4 `* i) X' _
int i,j;
1 t  E3 f; K8 W! k" bprintf("\1\1\n");/*输出两个笑脸*/ / V4 H9 Q" i, s) j# E
for(i=1;i<11;i++)
. i# h9 }) C' m" r' O3 ~{
( E1 n! X  e3 a0 Z& D8 g! vfor(j=1;j<=i;j++) & n+ {' t: ?; ?1 b" X5 @# }5 a
printf("%c%c",219,219); : E. w4 l& e, _9 b( a! W& ~
printf("\n");
- p+ |- B7 R. g* H8 Q) f3 n} 7 O7 L+ T% w! C
} . [9 ?. a3 k1 a

( X" k6 y1 h2 U. H4 k
0 H( O5 I4 i/ |6 W
5 V) j* I$ D$ V" R作者: zhlei81 2005-1-22 11:29 回复此发言
5 o+ r6 Z+ F4 ~4 o0 p# Y1 D3 G# R6 o7 K+ X
--------------------------------------------------------------------------------
/ o2 ^( _3 _7 ~5 {! [
6 e( C  W+ [6 {6 s. G6 C1 I3 回复:经典C源程序100* p+ x* v! s; c4 e; w, d3 T% b! n
【程序11
2 R( D5 j5 \% S7 b3 l. }3 B, N- c6 K* i题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
( V1 Q- z1 B6 F$ P7 u* e后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 e) S. |$ |& M7 g# z3 |
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... " w* x- I7 K; T8 L/ {+ h" L; z
2.程序源代码: 2 J* U8 z& J- G# b
main()
6 q/ m9 |- o4 W{
% J" N: }6 q( f/ D& Flong f1,f2;
% l/ x9 k# a, L  N3 f; r  L: oint i; " Q/ P; l  I) m4 Q
f1=f2=1;
! j+ d) w' m' ^' ufor(i=1;i<=20;i++) ! q, ?/ g( M: _, w: d
{ printf("%12ld %12ld",f1,f2); : l% s: q6 |1 k) y! `( O
if(i%2==0) printf("\n");/*控制输出,每行四个*/
9 A& A8 u/ z" Z# u" cf1=f1+f2; /*前两个月加起来赋值给第三个月*/ 0 C! |$ S7 W" u5 ?  r
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
/ y$ [9 I8 G# Y7 u9 v} 5 T8 O" K  J5 g! A
}
' u: ?+ S  e& B% U============================================================== : F& M' Q% S8 ~# Y4 Y
【程序12: T6 M! c& Q+ U3 |
题目:判断101-200之间有多少个素数,并输出所有素数。
9 W) k7 D4 ]+ m1 N/ J) z* A1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, ! l( ~0 _) s! y& J
则表明此数不是素数,反之是素数。
& b% d' M# V4 ~* \9 x" p2.程序源代码: * P$ r  ^8 p3 o* B6 B
#include "math.h"
* J6 j6 Y9 b9 e% {1 p/ O; O7 `main()
; @6 N! [! m! q% W1 q7 U{ 6 x4 G1 ?' ?1 ~' U. s- s: C4 X. F
int m,i,k,h=0,leap=1;
0 G1 B, c6 l. x+ ^+ i4 S* nprintf("\n");
, I' m5 J8 ]$ E3 A; T0 Ifor(m=101;m<=200;m++)
# T  g- M# m# d! F{ k=sqrt(m+1); 0 L  }( a, y$ S6 T; G/ U: n( ~) W
for(i=2;i<=k;i++) 5 y! T& P' G  f- n0 L4 L
if(m%i==0) 0 C( y+ P0 N" c# v6 e5 Y7 o, R
{leap=0;break;}
! B  x/ a3 z2 Y0 h* lif(leap) {printf("%-4d",m);h++;
! t, ~7 B" B" ]! m0 N, g7 h9 nif(h%10==0)
* o* l  g' e+ Z& Yprintf("\n"); ) F4 ~. p+ a# s; U: A8 |2 j% I, X; ]2 D
}
3 ?- m' g$ J4 F0 Wleap=1;
& m2 w5 N6 L8 k}
, r: r8 q  o! `+ L1 z, n8 Cprintf("\nThe total is %d",h);
9 J8 o2 s+ |, j( u  S+ U}
* [1 w5 b3 e4 m) M  ^7 I- Y============================================================== , P* C: @/ c! r
【程序13  N8 B& x2 {4 c/ Z
题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数 1 x$ L+ Y; x, L! x- @
本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 : N& e$ L0 @8 I1 q5 v
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 & s1 G1 @8 r( {' B9 K5 |
2.程序源代码:
) R- e* J- @3 c7 ^- rmain() ! m" z& y' S( @# l/ T5 M  Q
{
; j7 u0 L: O; R% ]( kint i,j,k,n; 2 t) u5 @6 U  d% `) c% z
printf("'water flower'number is:"); ! L3 }' U0 d. g4 R) L8 y, }
for(n=100;n<1000;n++)
. j5 u. L- F' O$ [. F9 y/ v& ?{
& c0 D" o. Y1 ci=n/100;/*分解出百位*/
( \( }  N# K5 S" l( _: G' J( d& Kj=n/10%10;/*分解出十位*/   c- L; F+ i' j; r) ?! w+ w
k=n%10;/*分解出个位*/
& O8 T6 D- T( G1 Qif(i*100+j*10+k==i*i*i+j*j*j+k*k*k) : @+ \! G) p; o" a  @
{
! _+ |+ c9 w# w' s+ hprintf("%-5d",n); % V$ b( ^+ c8 U! N
} * x- K: e1 U# |. U
}
) l* H1 e8 y! F* W: vprintf("\n");   y, i5 h6 Y5 Z, Y9 W! a( ]' u5 A
}
; D( b0 ^5 \$ c# s: r==============================================================
9 K6 u9 P% D9 X: _3 @【程序14
  a4 x2 @" q2 p4 X7 n7 }8 A( V" ]题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
. d8 \# C* }2 p1 b$ X9 d6 z" b" W2 b$ B3 n7 y
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: / u8 l$ v1 d0 ^8 u: M  d1 w
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
! m  p9 U& l: k  }- f  Y* a4 x(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
/ O' f* c( p9 U重复执行第一步。 & |, ^  b' A- ?
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
. H  D; m2 V* @7 D0 I( W, o$ i& E% A1 t$ g
2.程序源代码: 7 `& ~0 d& N7 E9 q7 M/ g+ Q4 }) [
/* zheng int is divided yinshu*/ / v- d, o: D& ^9 r
main() 2 H4 i0 c$ w- K3 g; |
{ 5 C. t8 Q- V% s6 m$ i) W
int n,i; , K7 i6 s; i- q( z" ?! }
printf("\nplease input a number:\n"); 1 n2 y- F3 B! Z3 O
scanf("%d",&n); 0 U. z$ t& r4 u
printf("%d=",n); - p6 ~9 X# o$ a5 h/ s# |. J; X
for(i=2;i<=n;i++) 7 K2 n( O) w3 {  d# I9 E2 q/ c$ ^
{ 7 a8 k" E; g- E
while(n!=i)
; L9 t: W5 n' F$ B% z4 a( k; i{
8 n' @( H0 f9 @! N. y# w! a8 h' {/ t3 u9 kif(n%i==0)
: G6 o# x- ~: Q7 m, h4 m  M{ printf("%d*",i); % n1 ~* Y- \1 M0 W1 Y1 b* a
n=n/i; ( f; F6 Y+ Q! a6 k  a# P# X5 Y
} / B5 Q" s# m# M# |
else 6 `  H+ d$ P1 Q$ ]
break;
( w( y& g: @  Q/ A# c}
  z3 |1 k: V+ t' D: U! Y}
  i8 u! m& c  t5 U1 _printf("%d",n);} 0 W4 L3 |/ Q) G" ~$ f+ K0 p9 j8 S

- J, I; w; P0 h' ^2 ]
回复

使用道具 举报

16#
发表于 2020-1-2 16:22:03 | 只看该作者
就这么一丢丢么
回复 支持 反对

使用道具 举报

15#
发表于 2019-12-27 18:18:38 | 只看该作者
基础哇!
回复

使用道具 举报

14#
发表于 2019-12-22 11:54:31 | 只看该作者
感觉好难呀,做机械的想学编程
回复 支持 反对

使用道具 举报

13#
发表于 2018-8-23 15:54:55 | 只看该作者
不错,支持
回复

使用道具 举报

12#
发表于 2018-8-23 15:51:22 | 只看该作者
不够100个啊
回复 支持 反对

使用道具 举报

11#
发表于 2018-8-22 15:36:27 | 只看该作者
基础编程,,楼主发这个帖子想干嘛
回复 支持 反对

使用道具 举报

10#
发表于 2018-7-26 10:47:41 | 只看该作者
hen shi yong xiexie
回复 支持 反对

使用道具 举报

9#
发表于 2018-3-4 22:16:13 | 只看该作者
你骗人,我数了,不到100例,把剩下的吐出来,不过还是收藏了,虽然简单,但是基础和根本。
回复 支持 反对

使用道具 举报

8#
发表于 2018-2-28 16:57:19 | 只看该作者
看见程序就头大
回复 支持 反对

使用道具 举报

7#
发表于 2018-2-28 13:51:49 | 只看该作者
在学校学习过这种
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-1-11 09:58 , Processed in 0.060811 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表