机械社区

 找回密码
 注册会员

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 279|回复: 5

C语言经典算法100例

[复制链接]
发表于 2017-9-23 10:57:34 | 显示全部楼层 |阅读模式
【程序8, \* P3 W; b9 b7 ~. S' Z7 r: D
题目:输出9*9口诀。
, u  }- _* e- `, h" {1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
5 {5 Y' O$ M" T$ v( v2.程序源代码: 0 [+ n3 D# _4 j  \) s6 F' D1 `
#include "stdio.h"
' ]9 ]7 R$ h* |/ |, zmain()
# E, V! [' b6 h& Y) C7 V. m$ S0 D{
! b4 s4 y. X3 x  hint i,j,result; ' O+ S" [2 d9 J1 k* ~' m6 c  V
printf("\n"); 9 B$ \6 J/ b) _4 y8 f/ P
for (i=1;i<10;i++) 4 T7 o: P- a" V
{ for(j=1;j<10;j++)
/ J( G3 ~1 L9 G" Q; ]" ~: I3 a6 p{
. V) |! t* w0 I4 X; X0 R/ H5 `result=i*j;
2 S3 Q  |( x7 Q7 B7 Bprintf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
+ i" Z& u' r: p. C7 A* `}
9 a9 {  C* ^" d" i# V: [3 Fprintf("\n");/*每一行后换行*/ 4 r' A* ?9 t7 X: c
}
0 t% t- r, \9 ~$ I4 f} / U, I+ D8 p: R3 W. _5 c# D
============================================================== * _" T* C" Y0 ?: b% t" h
【程序9
, I4 f, G" p1 K! `( a; f题目:要求输出国际象棋棋盘。 ( [" j9 i$ r2 C% U/ Y5 b
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
7 Y' V. z( l% D; O7 h8 {2.程序源代码:
( y0 T- z( a, v) B" Y#include "stdio.h" 6 m2 j$ f/ i; x; U4 c& h% j8 D2 G
main() ) s/ G; I$ I3 _  o
{ * X8 }; t# l- |/ X$ V# X1 N
int i,j;
4 J. R2 q1 P  S/ lfor(i=0;i<8;i++)
1 E8 r$ M4 ]8 E& S6 t0 i{
* A$ n/ F2 i/ x  X1 Ffor(j=0;j<8;j++)
( A$ m, k# r+ b8 s/ n( _# rif((i+j)%2==0)
% S! c& R- K0 {2 t" n. E: Vprintf("%c%c",219,219);
+ E) e8 n$ l# x) g) n1 H  uelse
# g, m  o4 I3 V& h  X' r- p1 yprintf(" ");
) p5 k  n8 Z% ~* Hprintf("\n"); ' G9 |/ f* R2 ]+ V
} ) b2 z1 \5 v/ ^' ~+ q
}
7 L: t- ?3 M2 f% Y! B9 ?==============================================================
% e" I+ a7 c% Y【程序10
5 _8 q* T8 L, r3 _' i2 q题目:打印楼梯,同时在楼梯上方打印两个笑脸。
7 ^, k  B6 }  Y# b5 ?; d! @1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
  [! s3 f; y  G% C2.程序源代码: 7 z6 W. D" b3 l6 ]1 i
#include "stdio.h"
7 T1 Z" b" Z* Q6 j; _" Xmain()
/ @: f8 j" M. L& k8 P{
# `6 p9 H5 T$ [4 ~9 qint i,j; ' z) {' ^( W/ J5 A8 f4 l5 F
printf("\1\1\n");/*输出两个笑脸*/ % B: F/ g, _% Y, r$ _! r5 u
for(i=1;i<11;i++)
; O9 q% I( E8 N8 j, K9 U, T{ : `2 B1 k# s1 \1 k/ [4 F
for(j=1;j<=i;j++) , h7 E4 c" f& Z* o0 I8 b
printf("%c%c",219,219); " z5 e0 g( y3 |" f
printf("\n"); ' c8 \1 v' n. B' {) M6 v, q% \% g
} - L$ x' q+ x- O
} , j4 |3 M. F- r

/ H( F5 C- M% c( _0 D2 I# a  p" y7 m
& B  o$ Y8 a% T( M7 v
作者: zhlei81 2005-1-22 11:29 回复此发言
6 G! s: w8 {0 }( V2 e) k2 ]! A& @
: j. e0 k" F; o3 v% G5 y0 R: m$ p--------------------------------------------------------------------------------
& U7 W( ^3 u4 _, z" E# ~7 Z: e/ V# m! d8 K2 _' \
3 回复:经典C源程序1000 c8 n( M$ e6 r3 V4 ^1 k
【程序116 k) q& N6 A% H
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 % r" N& E! q, O: G- r0 ?; w  l+ j
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? , p- p. c6 ^( Q7 u( D
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
0 `3 _* x2 _$ k9 O: f& J9 r$ e- ~2.程序源代码:
( ^% }+ M* b4 V% n& o4 P: P4 Kmain() - m+ Z# ?  v5 C- C  d
{
1 z( h9 B& i) C2 N! ?long f1,f2;
+ ?' \+ i4 u$ w! E5 hint i; " V) b1 R5 m; p: D2 i/ v6 p
f1=f2=1;
% c5 a0 T) G$ l7 c/ O) }for(i=1;i<=20;i++) " y* v4 \* Y% ^0 B  }' q" \
{ printf("%12ld %12ld",f1,f2);
* L6 _6 V+ Z& O( Fif(i%2==0) printf("\n");/*控制输出,每行四个*/
# c! g: n/ g7 @/ x: A* \4 |f1=f1+f2; /*前两个月加起来赋值给第三个月*/ 6 |5 Q. V. Z( G( x6 w
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
3 f# g% _. e9 H} " s/ S, w2 P6 E" w
}
! N. n3 i$ l7 a/ |============================================================== 9 f) T- p% @+ y- v. `) ?% D
【程序128 @' Y' Z; {! E# A9 ~) g4 C# n3 E
题目:判断101-200之间有多少个素数,并输出所有素数。
, `. K5 \& h" h$ X8 K7 M8 }1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,
! Y2 q" o1 g3 C: t则表明此数不是素数,反之是素数。 ! N( J1 F  ~  j2 S' X( L
2.程序源代码:
7 \; z) r0 b5 s+ q9 z#include "math.h"
  b6 D4 G' z9 _8 y/ V3 T' a/ _main()
" R6 {; G2 d2 b9 \" u! H# V& h{
9 p, O  j4 L' s) ]" p2 c. Uint m,i,k,h=0,leap=1;
( y' e9 h; q( F6 u5 k  z$ {& Bprintf("\n");
# n+ Z/ ^4 ~  B3 P& s( Wfor(m=101;m<=200;m++)
/ y9 Z3 f' Q: i{ k=sqrt(m+1); 7 u% X1 l0 V; D) l
for(i=2;i<=k;i++)
2 \0 X# `; z  rif(m%i==0) 3 m! @( o3 v6 {  k" O( \
{leap=0;break;} 2 |; w8 a% w/ y4 s% A" }
if(leap) {printf("%-4d",m);h++; 0 x$ F3 N( v  i, g8 s* T2 E. B
if(h%10==0) $ ~# O6 R5 v* C1 a( i' K
printf("\n"); 2 u9 {' [7 ?5 L* \: p# o  M/ `
} ' u& o5 y. X4 g, u8 w, B
leap=1;
5 o% Z) q; y( {7 ?7 ^' O; u} ; ~8 U0 @6 J" Y/ J. S
printf("\nThe total is %d",h); / _" N- a& h' t- {9 P, F& ^
}
* v+ B& r0 P8 I* o$ U& i* i* E============================================================== 3 O2 m, w& L0 t. Q; I  k
【程序13
. o7 F" Z1 t$ c( _$ Z1 h题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
3 U4 w/ i3 o4 A" h本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。
4 n; L- r  R/ |. z1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 ) m) C$ C* ?6 [  K
2.程序源代码: 9 h7 c9 u2 Q2 E
main() & e4 g2 x& M" Y, B; F9 V. n9 \& R) D
{
8 i) T, A/ `0 M: A' bint i,j,k,n;
. d' f$ m' B' Rprintf("'water flower'number is:"); % W/ L6 W& i9 {
for(n=100;n<1000;n++)   S! j) h) f, b/ Q3 Y, r  z( g
{ 4 _# A1 g* Z0 y
i=n/100;/*分解出百位*/
0 v7 Y  R) F) _; A6 Uj=n/10%10;/*分解出十位*/ # |/ L( w9 l* k  {. w% p. I
k=n%10;/*分解出个位*/
6 P8 `: `+ e: sif(i*100+j*10+k==i*i*i+j*j*j+k*k*k) 3 f  [6 w9 Q9 o; r# ]
{
6 D- f& s/ d. G$ _; m# v; [$ |printf("%-5d",n);
# H* b4 f% {) \# o}
2 g- d- Y+ s6 j0 i- v. f} ' a1 ?8 [5 y! G. q* A5 G  y( D/ |
printf("\n"); ; l: ~6 I8 t  b
} & k* p6 k$ H% C5 i" V& G
==============================================================
4 Z5 r8 m. E) G2 P【程序14
+ Y3 }! a9 g, C题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*58 P* J  j; Q# h. B8 }  `
: [. N4 l: L: e& @0 a  |& [0 N
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
; l; U4 k0 V/ X! m# a3 x8 G% I(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 2 ?* P+ K: E5 O4 o  V9 ]! p' }
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
' B& C7 s8 W4 x7 [重复执行第一步。
: k# n, b( J- c. q(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 - A$ \# p( M7 U% o2 L8 F
6 V8 k/ F- y- u# u" R, S9 n
2.程序源代码: & E  \' B* X# \6 r
/* zheng int is divided yinshu*/   N2 n, A1 m2 E8 B: X, j
main()
" y  N0 o  ^# u  O! n: J{ . }8 A7 h" i0 o" |. S+ U
int n,i; ( P, d9 w. a: G% z
printf("\nplease input a number:\n");
- |8 ?( Y# `! y) @  s/ P+ _  v9 iscanf("%d",&n);
0 p9 b- d1 u8 I& N7 d2 Lprintf("%d=",n);
* w7 |1 }5 i2 ?4 p" ]3 G- Xfor(i=2;i<=n;i++)
, \$ o* R, N$ }# I  N( v$ l1 d) R{ . P- \( X2 o: J1 f; a) w
while(n!=i)
- t+ V( H! T- J* |{ ; W! `" D- H9 \* a! G
if(n%i==0) ; i) u- U' u: o( L1 c( q
{ printf("%d*",i); ( t  O- }( d1 i: f7 C) a) g
n=n/i;
, e6 x0 ~. |- }( G9 [3 _} * z1 `4 y, y4 h. F; c" j
else
/ W! Y' ^* Y2 e6 Hbreak;
, L5 y* ~. g* [/ A}
1 d1 w. v, n; S* t9 Y: s}
7 Y- P9 e" t* c2 M) E) Cprintf("%d",n);}
4 O# ]# j% h) Y/ p6 _
& O. J9 s  Z4 u. n3 w) I7 T/ q0 O
回复

使用道具 举报

发表于 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语言的基本应用挺好的
回复 支持 反对

使用道具 举报

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

本版积分规则

 
 



工作时间:
9:00-17:00
 

小黑屋|手机版|Archiver|中国机械社区 ( 京ICP备10217105号,京ICP证050210号,京公网安备11010802010176 )  

GMT+8, 2017-10-23 06:59 , Processed in 0.085140 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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