找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 6384|回复: 16

C语言经典算法100例

[复制链接]
发表于 2017-9-23 10:57:34 | 显示全部楼层 |阅读模式
【程序8
( z, T' D4 H5 E8 r题目:输出9*9口诀。 7 j  J  B  g: d. W1 t9 j
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。 7 [; r+ j8 |7 t: M: Z
2.程序源代码:
* y8 B" G9 P& i6 T#include "stdio.h"
$ f3 b/ D% ^/ c0 Jmain() ! L5 n5 A2 ?6 X
{
8 j- K( J) K" |) iint i,j,result; - s9 p5 i# t. v2 I( {
printf("\n");
. C# f  m7 p( q( U( a, qfor (i=1;i<10;i++) 9 c9 _+ R6 ~) B- i: J3 j0 _8 s
{ for(j=1;j<10;j++) - u! C$ F& ?; R$ U" i& ?: @
{ + ^5 ~& ~) z2 V
result=i*j; 5 v3 G/ a' Y: }3 k' i
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
& a# r! N8 i) q3 P4 Y} 5 e' ~  ?0 n- V* i1 [! `
printf("\n");/*每一行后换行*/ 8 a4 J' ~8 T, P1 _5 {
} ( f6 ^& w6 k# f& \2 r  H
}
/ D' T/ V9 m9 x: }+ Y; ?% f==============================================================
" e$ e0 ^; y; b- _6 h6 K, B【程序9
9 {' R/ {, O" x7 D) m9 Y题目:要求输出国际象棋棋盘。
0 j* E8 G6 v( p2 m7 z$ ]1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
$ X; X9 ?( |7 Z2.程序源代码: / o4 l5 j, H0 r$ B) I
#include "stdio.h"
6 B" f* \0 }/ n; N9 A" y8 K! t9 umain() / }0 h0 I0 ^# {8 A
{ + d7 P3 ?, X% V  e3 v  {
int i,j; $ ?5 \5 P! ?" j1 b; R" n+ G# D, ]
for(i=0;i<8;i++)
; I3 F$ T. y$ ]4 }; ?6 x3 s2 Y{
* Y( l3 S+ X' R4 `for(j=0;j<8;j++)
. _  J9 j  H% o( c  }4 eif((i+j)%2==0)
/ t8 V: V  p: [; @printf("%c%c",219,219);
. e: f, ?3 p6 H5 o" Uelse
$ g  ?1 M& `' Iprintf(" "); 5 G2 e3 o$ V3 ?: L* b
printf("\n");
( b# c! l, w" \8 r} 0 [* Z" i% k& b1 f0 c
}
9 Z" f, P  T: t$ L! S==============================================================
$ T8 p. H/ S' r$ t- W【程序10
8 F3 G6 X$ Q; @: g题目:打印楼梯,同时在楼梯上方打印两个笑脸。 9 o* [: c: K& {& ]
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
7 Z4 `  q& B; V1 _% R! ?- }2.程序源代码:
1 `7 B& x! X7 ~9 }6 b0 s#include "stdio.h"
! i* z9 K, `) G7 ^/ X" bmain() 0 g4 s) Q3 X2 G" K9 {
{
: l5 i! M8 A9 e: z6 }int i,j;
: i7 w+ q( O( ^% S" L; P* F9 A9 Vprintf("\1\1\n");/*输出两个笑脸*/ : h" Q/ [' }7 ~' n8 E
for(i=1;i<11;i++) ' T' y/ r: U/ m! A& c, w
{
3 r4 h. M  S$ N$ w( G/ L5 V2 m0 Bfor(j=1;j<=i;j++)
: |* q' p! y$ n) v! N/ ?printf("%c%c",219,219);
/ T" W6 B* S6 u: zprintf("\n"); % D& F5 s3 Y& f$ e- K/ ^2 v
} 1 \2 J- a7 g, f
}
- X- c9 I* P- i* Q) s- R1 a
, O2 r/ S( ?8 m/ S" \0 ^; w. D! @9 J- B5 l# y( o

" l6 P' @$ E5 A) ^* W+ U3 B# Y作者: zhlei81 2005-1-22 11:29 回复此发言 * a  X: _& x8 q/ P7 I/ E, p
: [& q2 {% b9 N0 k
-------------------------------------------------------------------------------- 1 Z" [. f5 A/ E! y: O

# I, A  J0 z" o3 {) t! J0 ~3 回复:经典C源程序100$ w. J, r5 K5 f: s$ X
【程序115 `+ Q, m1 n$ f! P
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
7 Q" \9 _3 m/ x) i后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
5 q+ p, c! Q- x1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
1 _0 I% `5 A6 u' k& J+ w2.程序源代码:
- C. l- R& L8 Tmain()   Q+ P* p2 W2 H6 o' p
{ , b% {5 N4 Z- V0 ~& U' a
long f1,f2;   Y- z. `" M! a: i; `
int i; % b' P  V& t/ u) B7 ?
f1=f2=1;
& X- ]) r" J- O$ r# O+ N, [for(i=1;i<=20;i++)
: ]. s0 t( v$ u% I{ printf("%12ld %12ld",f1,f2);
$ v( B1 d2 _- xif(i%2==0) printf("\n");/*控制输出,每行四个*/ ; F7 Y# _# \9 C' n
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
. }8 ^) _2 K/ O: c% F, ~5 lf2=f1+f2; /*前两个月加起来赋值给第三个月*/ % @1 s1 y! O! T! c
} 0 W' a% X& W9 f4 \3 I
}
1 f  f+ v5 ]& p$ }1 G6 y2 }: g============================================================== # J  D  L5 H4 |! n
【程序12# C4 V3 _" @  o9 x0 U; J5 z
题目:判断101-200之间有多少个素数,并输出所有素数。
" T+ i: t& Y- B0 N3 k1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, ; I5 S3 k% G+ L% t$ c; j
则表明此数不是素数,反之是素数。 + W6 H; ^2 v) e6 ~
2.程序源代码:   m, F! w; G8 ?! _
#include "math.h" : d& {! }0 Q* o, s
main() 5 s% X1 C, u! y  p
{ , C- p4 \5 I9 F, q5 e
int m,i,k,h=0,leap=1;
- R) ?$ s2 _1 a% ^printf("\n"); 3 |  |$ \  G. i6 Z. C) ~
for(m=101;m<=200;m++) - \+ x3 J1 g$ c0 w4 K9 w! ~
{ k=sqrt(m+1); 7 f/ h* S5 o) o! b4 d( Z
for(i=2;i<=k;i++)
6 R. J* Z* ^7 Q% cif(m%i==0) 6 r0 }1 s4 ]9 B' ?% q! P$ K3 l
{leap=0;break;}
4 |" ^, y2 l% G; {if(leap) {printf("%-4d",m);h++; / P8 n, ]; M$ }% y2 I, I- C. u0 u
if(h%10==0)
; I- N0 C9 k7 H' l: Pprintf("\n"); 9 b% r, u, [9 R+ K$ a
}
: x% d: W7 P2 i) `5 F4 i0 x+ Aleap=1;
& e' _: [- F8 E6 t* m6 _+ {}
- S$ `$ H# i$ xprintf("\nThe total is %d",h); 0 z( q6 v& }( |  X* J) ^
} ' `+ h: t& A6 \/ W* s5 B
==============================================================
: e( m, P8 ]! x" Q& D8 H4 h【程序13) n6 }9 [9 l" {
题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数 0 @+ B* K# m+ ^/ c8 n
本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 2 E; x' |0 o9 [
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
9 t9 q5 R. x% V2.程序源代码:
* v( C1 Y2 \; E" O* k, }6 T9 J5 cmain()
, I7 Y% q$ j/ f( A& L' P{
# y  R# z/ _7 L4 K# G# D( ~int i,j,k,n; 0 e/ p1 \6 T% s5 G
printf("'water flower'number is:");
2 s1 l" R  @  _8 w# Cfor(n=100;n<1000;n++)
% @6 y8 j9 }: u{
5 G  V3 _; i9 Ji=n/100;/*分解出百位*/
; o# ?/ m9 N/ z9 s" Qj=n/10%10;/*分解出十位*/
& O; L7 M/ u0 J# M; H4 fk=n%10;/*分解出个位*/
. ]# ^0 f% x6 }& ?& P. S" _if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
/ c) {, W/ W5 C. V{
) H% }7 k$ ^# J- j; Dprintf("%-5d",n);
/ V* J: |5 }1 p3 n}
+ U) C0 [6 t) C* o} , w7 u4 ^, H2 N# @" p; }
printf("\n");
+ _3 F) a* D2 T- K3 h4 S5 Z7 U}
0 a) N4 I% Z; _============================================================== + s" W2 c# ~! @) \
【程序14
4 Q$ h$ N' ^4 A. Q题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
6 E  @7 X6 X+ D1 o; j( o4 q, Q; _' _2 K8 f* F
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: ) Y# l' C5 E; h# q5 S5 Q
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 ' I% |5 ]* V4 @5 q
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, 0 M- G8 d# X4 M4 A' _8 r
重复执行第一步。
& k) i; P3 W' ], o  x7 j9 ]7 ~(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
8 c) b: ^) ?/ c& X9 H
. C( L; `" o  L+ c- k( [) J4 a" y2.程序源代码:
! }( H4 g; c, c0 `/* zheng int is divided yinshu*/ 1 e7 B0 W6 [* D: t) m. C+ r4 h
main() ! H; g8 B8 y/ o
{ ) P- O, u% H& m
int n,i; 2 G6 [6 G" l- s0 @2 |  p6 v9 @2 e- W
printf("\nplease input a number:\n");   n1 |5 {, F9 @1 @) _' L, D
scanf("%d",&n);
# E0 O' `) G5 ]  m9 L- W& `" [4 p1 hprintf("%d=",n); % M5 x- u( b9 Q# v3 y: G) a4 r
for(i=2;i<=n;i++)
, }5 g6 e; H9 |+ M{ 9 G: [1 [- R! s& H' v* x
while(n!=i)
4 o" D& g# T- A! ~2 k3 I{
! j& w+ Z# q$ `. E5 Oif(n%i==0)
3 P; i5 q4 b- Y/ Z$ f& [0 `" H{ printf("%d*",i);
6 N7 C/ c3 \; k. G, bn=n/i;   x, ~1 T4 x- F- x4 Y
}
: r' Q6 b- Q3 Selse $ r0 [9 W; _8 X8 Q$ L3 I; I
break;
+ q9 w5 l9 O, N' O( ~} 3 r6 S. ~/ j! Y: w/ t- Q9 @  [2 G
}
2 V; S" ]* _! K- Hprintf("%d",n);}
% I& [! ~6 q3 K0 {- @( _4 [. ~" C
2 A9 z5 A9 m. t3 A; k% L
回复

使用道具 举报

发表于 2017-9-23 11:47:18 | 显示全部楼层
看来也并不是那么难。不过饭还是大家分着吃。
发表于 2017-9-23 12:52:40 | 显示全部楼层
赶脚很牛掰的样子啊,机械人完全看不懂
发表于 2017-9-23 16:14:55 | 显示全部楼层
收藏了,楼主不会是在学程序开发吧。
发表于 2017-9-25 17:47:49 | 显示全部楼层
不是100例吗?
发表于 2017-10-9 21:20:33 | 显示全部楼层
c语言的基本应用挺好的
发表于 2017-11-23 15:37:41 | 显示全部楼层
好东西
: i: V4 q3 m# j  L
回复

使用道具 举报

发表于 2018-2-28 13:51:49 | 显示全部楼层
在学校学习过这种
发表于 2018-2-28 16:57:19 | 显示全部楼层
看见程序就头大
发表于 2018-3-4 22:16:13 | 显示全部楼层
你骗人,我数了,不到100例,把剩下的吐出来,不过还是收藏了,虽然简单,但是基础和根本。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-7-13 16:44 , Processed in 0.083421 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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