找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 6683|回复: 16

C语言经典算法100例

  [复制链接]
发表于 2017-9-23 10:57:34 | 显示全部楼层 |阅读模式
【程序8( x! \- U; e! ~* M* D$ u1 c+ s
题目:输出9*9口诀。 6 O. v: z5 B  W" q/ y% {
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
. n, p# J; \$ v) d! ~9 x  }" D: P2.程序源代码: # {& D/ N( ?! M/ G0 N6 L
#include "stdio.h"
0 [! Q4 G- M, p2 ]5 Hmain()   E6 K1 n9 Y1 ]7 N6 W
{ & r( c( |& f" N
int i,j,result; 3 `( o+ s7 n) p& h) O8 B
printf("\n");
/ U1 |7 @: ~9 y( `- n1 Sfor (i=1;i<10;i++) $ Q9 o  j$ F9 m8 Y. G1 S
{ for(j=1;j<10;j++) 1 @8 b3 d1 U$ `; I! \) ]
{ 1 @6 c6 E0 p& _" w4 c6 a' g
result=i*j;
# x/ d, i, {' h+ g0 K, @$ |printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/ # m% n9 x! ?/ S" q+ u
}
  F6 d( u% m! Z! @printf("\n");/*每一行后换行*/
" K0 \2 q& [7 x* n/ }" K2 H} ' I' Z4 E5 {4 y
}
; z$ z* e! d: n' g6 l5 r# h==============================================================
; _# T9 I+ w2 |# d. ~【程序91 }- U0 s- m+ D2 E
题目:要求输出国际象棋棋盘。
  H5 H% |, z1 |  }' \8 u8 O1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
. u6 c2 x3 V- A2 }; E; L/ d" h2.程序源代码:
7 O5 R; `8 `* H; {1 S" M: j#include "stdio.h"
) c$ t5 z9 W/ }3 m+ P% Lmain()
, ?* E" N" g/ ?+ M8 k$ z{ ; {! N9 P' [4 P  K( w$ d
int i,j;
/ C) t2 U; U4 ^- pfor(i=0;i<8;i++) ! Y3 v/ O2 p9 W3 j% e: u0 ]
{
, p% |: y7 D* O& Qfor(j=0;j<8;j++)
+ C* S2 L7 S( m: C8 O: Z+ @9 Vif((i+j)%2==0) : }; [, ]) a  V* ]2 h5 @
printf("%c%c",219,219);
' [/ P, X% ?, [5 V; ~/ Uelse
/ d) k0 n3 p7 }! ?" ^( Tprintf(" ");
( H% Y% j% X! N$ z' b* p% @. bprintf("\n"); 1 H, L& X/ l# d$ x( t
}
4 {& \7 P7 J& [. B: W, ^4 C6 ]2 y} ! m5 @- L) c4 P5 Z  |6 U
==============================================================
: V1 I- C+ ~: ]3 B, U8 j/ e1 D【程序10) `- l8 |! _1 S5 |4 ~8 e
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
1 j9 r- h5 y+ A. |0 \2 l3 |  _1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
/ {1 m+ z6 m! V) ^- q2.程序源代码:
, s0 j  w: n- P! z#include "stdio.h" 8 p2 r) r9 O6 y) [. x+ I
main() * \' N9 T" v. n, M! o+ V. W7 s
{ , C! N# h% }0 ^9 p6 D
int i,j; 9 r/ Q* n+ H2 p9 d3 p4 U" t5 _
printf("\1\1\n");/*输出两个笑脸*/ " M) E( i# [2 N& e9 J
for(i=1;i<11;i++) 8 v$ Q5 m3 t: m! s1 S* m; \
{ ) g2 G  f% F; [+ r) e+ o8 C
for(j=1;j<=i;j++)
) J) @/ s$ n, d+ h) y  yprintf("%c%c",219,219);
9 f4 x( w1 s! ]. k+ Qprintf("\n"); 4 y) c. ?  J0 J. O4 t/ G' ~
}
+ N, x/ ]$ L5 ^- {} ! \, G' ^$ E& J5 ]* y  `

$ K( ~7 C3 A! g
1 ^) v6 T3 k) W6 Q4 H; H3 g( L' N  E6 L  D  T# r* \7 B1 _9 W6 I! S
作者: zhlei81 2005-1-22 11:29 回复此发言 ( \0 V  `3 o! W6 j

7 q( C$ f! V+ H0 Y# W* e% S-------------------------------------------------------------------------------- , S1 }8 g- K7 h6 i8 h
% b3 H. {$ [4 P, F( C6 |' ~/ e# W% ?
3 回复:经典C源程序100
# M( B6 d, v6 R# J# u( v  U【程序11
0 r0 j+ t8 ^: i. y" R题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 3 o, |9 F/ _+ u+ r, c' @
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1 g# N. g. i7 ]+ g( e! E1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... * C4 @$ V% I; R3 F7 i# \+ a  R
2.程序源代码: . e5 y& j4 a9 l' M$ u
main()
7 ~' |: t! m. A9 ?{ 0 K. V# ^( @, f' X& d: E5 t8 g# s# D
long f1,f2; - p! Q3 i- M! o2 J3 S
int i;
. s: m4 z  K6 i2 K: pf1=f2=1; / y2 J! j; i. C/ ^& I% `
for(i=1;i<=20;i++)
# k) q9 J# m1 L' @- n% z{ printf("%12ld %12ld",f1,f2); 2 O! J3 P8 S5 h* ]1 Y* j( f' G! B( `
if(i%2==0) printf("\n");/*控制输出,每行四个*/
7 l& k5 n2 c5 W1 uf1=f1+f2; /*前两个月加起来赋值给第三个月*/
( v+ x# T! M6 }3 m5 g1 H0 A5 k- Rf2=f1+f2; /*前两个月加起来赋值给第三个月*/ 4 ?7 ?! v/ W+ `8 s# v; G
}
2 Q0 D5 z: ^- v4 I$ C8 h, Y& W# Y} + ?5 n' D- v0 q+ X& k# t% _* C# B6 N
==============================================================
0 ^0 F8 Y: L1 r' r# x# o【程序12
  C- g/ e- d! Y题目:判断101-200之间有多少个素数,并输出所有素数。 $ r3 x' A- g+ `1 q# {  L
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, 9 v0 Z5 v$ u0 [4 I  a7 ~# W
则表明此数不是素数,反之是素数。 ' _; O8 F3 d5 O; M  P9 d" B
2.程序源代码:
  {& H5 ~* _& c5 a( y4 l" B#include "math.h"
$ l7 R! k$ Y7 P2 [0 G+ lmain() , W: V1 D% i7 s+ b4 z
{ 5 {3 |1 f' Z* h4 V
int m,i,k,h=0,leap=1;
1 U+ f( G4 W) Q" [* `" kprintf("\n");
# W; A9 ~0 X2 |# ifor(m=101;m<=200;m++) 5 a0 }) D( b# ~% T2 b
{ k=sqrt(m+1);
9 M5 E6 j; a0 r0 Nfor(i=2;i<=k;i++)
+ t+ T5 [- N8 m: G# C/ S9 Zif(m%i==0)
+ P+ O" T' d+ G$ ^5 K9 y{leap=0;break;}
, T6 ]6 _" Y- {% qif(leap) {printf("%-4d",m);h++; . c) n5 J$ T* L$ |
if(h%10==0) ' v' Z+ O/ g: D: P; P
printf("\n");
* D8 T; B0 b7 U0 E4 k0 O}
0 V0 n  g; l* ?2 @: p& i8 e+ Wleap=1;
' N2 [$ _( y) E& j4 I}
1 T, C  Z4 X5 c- C9 x9 P6 q; J3 \printf("\nThe total is %d",h); - h( v/ y: |) o
}
: [6 `) r* d0 }==============================================================
4 I* [$ D9 [% j3 D- T! g【程序13! n. C* S9 |2 h# a- V0 s
题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
) b( |! I0 q3 @9 I1 w4 r+ P本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 / M9 k# V' D$ }: c  z) l
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
7 z( J7 i% f2 u2.程序源代码: # H/ ~! F+ M( \3 ^* u  _- w- L1 s
main()
% w2 x( Q% @3 h* S" q8 |7 }{   u5 l7 O4 }9 W. h
int i,j,k,n;
+ e# \- K: N' a, jprintf("'water flower'number is:");
) m  c5 ~8 W6 H" {. h; Mfor(n=100;n<1000;n++)
2 H$ k/ p! i' L, s5 U- W{
  L4 l& y5 |2 x! Vi=n/100;/*分解出百位*/ - t& {7 v; a  q- C( G$ t
j=n/10%10;/*分解出十位*/
* {7 _: U# m( F$ fk=n%10;/*分解出个位*/ % U2 O8 {* B- P/ ^
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
( ~% H7 ?' w% d{
7 S$ Z* V- z1 |% v3 cprintf("%-5d",n);
) p/ a/ l2 d$ C: y} 6 v8 Y- K1 q1 g7 n# O6 K1 p
} " P3 P0 {6 @2 F2 @9 t2 J
printf("\n"); 4 s4 e5 X1 ]# `+ z- i7 O+ {% m
} ; Q5 U  c' y; h) L- p, Q8 B
============================================================== 0 K& i: d  ~8 E
【程序14
7 D0 X) I& ]% M" `题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
! S% I$ t7 L1 t& u
  O; t' P. z! d1 B程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
& d; {# B% o- o: q- v(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
, V  a1 d/ a% v8 D8 ^0 I(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
  [( X9 ^' [8 R重复执行第一步。
! C' `" H  {7 q- z(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 * }8 E% S4 O' s% X# g% o
7 j0 e6 A  F' Q5 m1 i( @
2.程序源代码:
- y- v$ t! r! L7 ]0 Z+ d/* zheng int is divided yinshu*/ , B& Z) N( \# u0 _
main()
3 T, M# a3 _& y; S: S{
6 I, x% @( ^% L. _int n,i; & N2 N6 a6 ^5 D; [) C
printf("\nplease input a number:\n");
) C& l' t7 x" ~/ A$ G' Jscanf("%d",&n);
& s! K) `! u9 w# f" n! O. Dprintf("%d=",n);
* E2 N* p3 z  [$ `' Q6 E# F) q! ^for(i=2;i<=n;i++)
/ l2 G: x9 c! w) d" V- c  K7 t{
/ X: i/ L5 h" I& Qwhile(n!=i)
( {* o- ~* y5 w( t$ a{
4 `7 U4 r2 e  M! ~/ x4 m( bif(n%i==0)
3 q# Q+ P) z5 K- ^/ d' ~{ printf("%d*",i);
7 `5 J2 c# Z* R# |) Ln=n/i;
. ]5 V, o3 L6 [) L& [}
" `/ L4 W/ N4 qelse
$ O0 a9 _& E4 n- V, `break;
( V5 }& u8 R: _! w+ O; |7 q  _" J* t3 T}
& ?3 F( ~% j' G& V; i, ?: |}
4 k4 t7 @( }9 H  cprintf("%d",n);} / e0 ^# r" f7 `

. f/ ^2 m5 Y+ I* L& f' r; F# \
回复

使用道具 举报

发表于 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 | 显示全部楼层
好东西
& K6 Q$ \& B9 w; |2 S
回复

使用道具 举报

发表于 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-10-17 07:26 , Processed in 0.086563 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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