机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

C语言经典算法100例

[复制链接]
跳转到指定楼层
1#
发表于 2017-9-23 10:57:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【程序82 w# Z) ~6 k& p+ L( x
题目:输出9*9口诀。
7 F- [8 F8 w# M. M7 x* w4 F1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
& V# C: G; P  `3 \1 P1 B2.程序源代码: ) l" I! q/ V2 O: J7 i5 S/ }$ |
#include "stdio.h" # _6 E9 t) J: t$ Z! ~5 j
main() " w' U/ p0 p% m6 R: c; O! ]
{
& d+ T$ F! o" |3 Q1 x% s! H. Jint i,j,result;
1 p6 f. K) {& x/ ]) q) {, w/ r' Eprintf("\n"); + u7 R8 k8 c6 q+ ~
for (i=1;i<10;i++) 4 R7 N( U; y) l# j: \
{ for(j=1;j<10;j++)
! }; ]& Z6 u& ]- [3 }* Y{ ( q& S6 |$ A- m. \
result=i*j; 9 }" E3 J/ Q+ H5 F) T
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
( Z( V- W# I9 S& \" f3 l. z9 }}
: H; _: J, ?1 T! w0 m% Uprintf("\n");/*每一行后换行*/ 2 a0 P* F7 p* ]
} 4 t' L+ k% i* n6 y- {& e
} ( M3 G0 q' R# k
==============================================================
: W/ |! i; G5 \) ?/ Q( T【程序9% p+ N9 d! w5 L' j" ^
题目:要求输出国际象棋棋盘。
$ J# K/ c! C- V6 P4 a8 A1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
  }) _; D0 W% q6 g' H0 Z- {+ V& b0 b2.程序源代码: ' r) Z# Y5 C) f( |$ V8 Y
#include "stdio.h" # ^/ o4 L: V& v: N* c
main() - `7 J4 U! T3 b9 x* U0 h
{ 7 b) [5 K1 t, q7 _) g; D) |2 I- _
int i,j;
) U7 ^# Z5 ~" k4 dfor(i=0;i<8;i++) 1 Y9 D" U5 e8 G: b( U3 V  y3 G
{ / ?" l# m0 `( b# a
for(j=0;j<8;j++) 1 f, o$ h/ r, o3 q) ^( q! ]3 A& ]
if((i+j)%2==0) ) Q2 Y, S5 G* x1 r
printf("%c%c",219,219); " I  M) Q) H+ a1 ^; M0 p* h
else . S# {4 `4 ]  N2 ]) k
printf(" ");
) E& G8 u1 \3 u" T% x! K9 rprintf("\n"); , X, ]) k8 d) [# O
} % t/ ?. J9 _4 U$ v! g* Z; J
}
$ |4 I; z4 y" G- }- W  e==============================================================
, a! S: s! O+ I6 Q3 Q【程序103 {  d+ W- ]% F; u- t6 r
题目:打印楼梯,同时在楼梯上方打印两个笑脸。 0 s, u. A' D; D- ~# \6 U' l
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
2 G/ w0 `9 p5 d8 ^3 ~2.程序源代码:
) C8 M! H: E: u: \) I#include "stdio.h" 7 b+ V) v" f. a: K, n
main()
7 L! G) x  T; R9 n' A{ # J7 C/ V1 s6 I# f5 m: M
int i,j;
1 q0 T1 X$ r0 s& K) p* lprintf("\1\1\n");/*输出两个笑脸*/
, ?- W4 o4 p9 P: Y- xfor(i=1;i<11;i++)
: I/ u6 _+ Q7 E5 @6 n{ 5 X5 T9 b& M8 P
for(j=1;j<=i;j++)
" S$ ?: |' s% `7 \% nprintf("%c%c",219,219);
$ U9 V0 Q: p  s" ?printf("\n");
4 L$ Q+ O' \) R4 [- o}
0 G7 o, T7 @/ c$ Z} % |0 `' Y( C4 s9 V; o2 D
' n, ]7 v/ u1 C0 w: }
3 T' V8 }( N$ h& D( `
! }8 E6 A( y) [# x, O/ k' q
作者: zhlei81 2005-1-22 11:29 回复此发言
$ ?  s( L# o, I/ |% \
" F& V2 x1 |- M$ E$ {/ g--------------------------------------------------------------------------------
* `- D- h. @2 @5 j; ^) q: b1 b/ I' Y2 i
3 回复:经典C源程序100
# i+ p5 e- x4 @% {7 Q3 _& v【程序11/ s  @& l/ J) K. T! v
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 ' j, N2 l* o% N9 V# q) P' u
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? ( `- l: L1 b$ Z- I- H4 V: K
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
% H" p. t$ R. N  S$ z: W2.程序源代码:
4 i9 T. [- L, y% B( L; S+ cmain()
& r5 Q# O3 X% [) s{
  d3 f, W; V7 X3 E- T$ s: b* Clong f1,f2; 0 E+ e8 v" D7 u3 _1 O3 y0 l4 v/ V
int i;
: K# }9 {9 c& Q3 U" f3 Z$ af1=f2=1;
) l5 v1 i) J4 D- rfor(i=1;i<=20;i++) " S- y' |4 t6 Z% _
{ printf("%12ld %12ld",f1,f2); ! O  T- s. c/ g: t# B5 ~8 \+ l
if(i%2==0) printf("\n");/*控制输出,每行四个*/ 8 x, @8 Y! `5 p! x2 `+ \
f1=f1+f2; /*前两个月加起来赋值给第三个月*/ ' D* p' p- L* l" U% T8 C1 R
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
6 v' U0 h5 L* p$ Z} 3 [2 N6 x( e6 k( z0 \' D# I  d
} 2 G( u! m4 Z5 q3 I! k! ^# k/ q0 O: n$ S
============================================================== + s9 U( r! c. u5 A& x" C, `) E- p( d
【程序12. O4 w# [5 v) \2 `! s
题目:判断101-200之间有多少个素数,并输出所有素数。 ) c) b3 x- i+ J+ N5 Z3 s
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,
( p9 i! h3 N! s# X9 f则表明此数不是素数,反之是素数。 " T( S5 A6 d2 K3 C% _
2.程序源代码: ( p3 I9 d$ V- A
#include "math.h"
; S; y! z- D1 R- y- [$ [main() 2 A& h4 h: r* N- I' g8 x
{ : G& d( v; l+ Y8 O  O0 _" D0 Q& q
int m,i,k,h=0,leap=1; / i* z0 E- a" @. ?4 r0 E7 J3 f# J
printf("\n");
, w6 u9 p" g( ]for(m=101;m<=200;m++)
3 L: [: U8 u0 X7 [# s. e+ V) y3 t# ]{ k=sqrt(m+1);
) }9 N, w0 G6 t( s( Ufor(i=2;i<=k;i++) ; Y# `. N( n7 O5 u$ `; J. j* ^
if(m%i==0) 6 `& e" i0 b0 c2 R
{leap=0;break;} : g" f/ _. R4 F1 _' \$ A
if(leap) {printf("%-4d",m);h++; ; e  P( x/ `, G2 A* @
if(h%10==0)
6 |3 O7 @! H4 k$ Pprintf("\n");
0 i6 ?/ h+ W; R3 J} # N9 O0 k$ K% v' _! g
leap=1; 7 f! d9 P. V* P" @* y6 z$ s
} 2 w& f* t4 k! \; \- Z% o4 Z
printf("\nThe total is %d",h);
6 e) H6 ]- B1 p9 L7 ?} , d8 v, R/ a  E" }
==============================================================
+ i4 i( ^  O2 p【程序13
9 Y, i" G! K9 Q; o' r. q7 p& m) z) O# b% I题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
6 i9 h; M5 c+ d6 w$ c4 K本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 5 Y6 {% C" U6 t; p& Z& j
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
- f7 f: @7 Z/ E* _3 ~: `; P& L  J9 L2.程序源代码: ' ?  J5 o' T' F% O
main() $ k  \: K6 C% W. ]. T
{
: e9 {- P8 u8 Aint i,j,k,n;
2 w' v  l$ g" A! ^' [( ]- sprintf("'water flower'number is:"); / N3 ]0 F% h7 m
for(n=100;n<1000;n++) 6 n8 Y; r1 T1 ?  l$ }' E
{
& @. j7 L+ d5 }: @+ X2 m0 |i=n/100;/*分解出百位*/
! u( R8 @4 R# Z4 O$ H6 ^j=n/10%10;/*分解出十位*/ % W' O5 @, E0 P% z1 b$ [( b
k=n%10;/*分解出个位*/
- q  |! P+ U* H& D. d9 E" q" Oif(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
% l6 c. e) w7 c* G8 F{ - `- p, D- a3 Q
printf("%-5d",n); ( @0 y1 Y/ ^. D7 k
} 0 d4 D1 G) p& y5 L5 k) E
}
6 A& O2 n( U( xprintf("\n");   r" Q* L4 t3 N- c! T; X( U
} . |' ~0 ?) c2 ]' R4 \
============================================================== ! c  [2 f4 S& W: C$ d4 w" {
【程序145 W& U& @8 g) D; q, q9 |
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5# B7 z5 G! f' {1 u

6 `+ K; l% F9 d程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: " z7 J! X: Q; {" b6 p* B. i
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。   [3 \/ u6 A3 A7 p6 J
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, % t2 }5 Q/ L; J+ ?" v: u& T3 U
重复执行第一步。 2 A/ m/ B! q2 g5 m; c
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
! H8 `' x' E/ G# R) {, d) J: C" u, W; Z1 q
2.程序源代码: 0 ]1 G: v! e9 s
/* zheng int is divided yinshu*/
1 U+ S: Z( _) J; K) {: L% hmain()
& G; J% q) [! X" N; x. e3 t{ % _. k. u: S- n- l
int n,i; ' J: ?0 B5 J3 V. G
printf("\nplease input a number:\n"); 4 B# H$ T: O! [. Z; d' ?
scanf("%d",&n); ; o* W9 h. g1 S' Q& f
printf("%d=",n); + G# g1 Z' K, E$ W8 z! t
for(i=2;i<=n;i++)
4 o5 x% ~$ U* t0 ~& j( q{ ! Y9 l- x5 ?# {. L
while(n!=i) , |; p. Q3 p/ p* k! Z# O: M8 w
{ & R9 Q  V: n2 e% V
if(n%i==0)
. A0 R( H: B/ j7 b) ]{ printf("%d*",i);
% w, o2 ]  G3 {& r5 V: Cn=n/i;
# ]  S0 I: h/ n4 o} , K, y/ E7 }* y
else ! k" A0 ~$ o$ }. b9 _+ j, n
break; ! V+ P* A1 H  V+ ~# k$ ^9 Q4 U) z
} $ r2 K" A/ [9 @
} & G3 f: W# ]2 F0 y7 Y7 O+ K
printf("%d",n);} ' U* i; D; h+ K9 N7 W( k

( x/ B3 K7 L8 P
回复

使用道具 举报

2#
发表于 2017-9-23 11:47:18 | 只看该作者
看来也并不是那么难。不过饭还是大家分着吃。
回复 支持 反对

使用道具 举报

3#
发表于 2017-9-23 12:52:40 | 只看该作者
赶脚很牛掰的样子啊,机械人完全看不懂
回复 支持 反对

使用道具 举报

4#
发表于 2017-9-23 16:14:55 | 只看该作者
收藏了,楼主不会是在学程序开发吧。
回复 支持 反对

使用道具 举报

5#
发表于 2017-9-25 17:47:49 | 只看该作者
不是100例吗?
回复 支持 反对

使用道具 举报

6#
发表于 2017-10-9 21:20:33 | 只看该作者
c语言的基本应用挺好的
回复 支持 反对

使用道具 举报

7#
发表于 2017-11-23 15:37:41 | 只看该作者
好东西
- C) ^9 M8 |5 S1 y! P# C( y
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 06:56 , Processed in 0.051614 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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