机械必威体育网址
标题: C语言经典算法100例 [打印本页]
作者: tainqing 时间: 2017-9-23 10:57
标题: C语言经典算法100例
【程序8】 - C" x! ~* k7 ]) Y
题目:输出9*9口诀。
$ o, z9 k2 B9 g& |! m1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 . n8 I! }, C7 M7 g2 P# H
2.程序源代码: ; I- C+ s" h" V, V! o
#include "stdio.h"
3 |, ^; i2 h2 {main() % C. x8 _) ~9 x( s
{ ! l) O, \' o9 x/ S7 Y
int i,j,result; 1 ^6 c( m6 ?! q' D N
printf("\n");
# W( n+ O; K. l9 C5 bfor (i=1;i<10;i++) ) n) x, x6 }7 P
{ for(j=1;j<10;j++)
: o2 b* j, s/ p, ` t" b{
7 H4 W0 ^ ?6 S! F- v$ f) Z% C% }result=i*j; . j; F, o3 B: g% t. g. ?) ^
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/
; |9 ]1 E' b0 M1 t}
# i1 F" J( ]: l0 c O- Z2 a# [printf("\n");/*每一行后换行*/ : l- K3 ?: _! B! F. Y c) K9 @
} : d& W/ ~" j/ ~! p+ y7 p. Z
}
/ k8 x, j3 n& Y; c: }% @==============================================================
& @0 \) o8 ^ D b% U# ]7 Z【程序9】 4 `6 J) F' L% U
题目:要求输出国际象棋棋盘。 8 h$ @( F+ }% A5 n( |
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
! B) \+ m8 ?. U7 Y. ?, B2.程序源代码: 5 o( t: l6 s; W" A# Y
#include "stdio.h" + l) d) W, Z" {/ J/ g; e( Q
main()
& n5 j% h: |" e; Z6 d{
w/ m8 d! y$ r2 U/ |% n" a$ Xint i,j; : T! x' k7 n6 [4 }, H6 a* X
for(i=0;i<8;i++)
) J( X8 r6 E ^ h{
. e* b" F5 C' l9 Afor(j=0;j<8;j++) ( \% L" J+ Z1 e! |, J
if((i+j)%2==0) 5 n0 O1 z! R9 G0 f* d. H- L
printf("%c%c",219,219); 9 V; }5 p8 I0 l
else
# w. R2 N' A/ H4 z) Nprintf(" ");
% C9 `0 `/ B4 l$ r2 j1 b9 ~printf("\n");
- N5 D) y" r3 o' M( V} / M0 {9 p% p0 p: j3 Y* Z
} ' x9 `7 g3 j' @# N0 P
==============================================================
, `/ Z8 m1 J5 F【程序10】 9 L% X- ?5 x$ Q- n6 h
题目:打印楼梯,同时在楼梯上方打印两个笑脸。 0 J8 m, R0 `, ]% O
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 2 \$ d/ S% g0 p( T# ?. V
2.程序源代码:
: l, k j) R2 a5 E1 c#include "stdio.h"
2 n3 S& V* g5 I. \; P: \2 xmain() - ^2 q. @0 {* T; W& _& ]
{ 4 e, e' P4 \6 \3 G
int i,j; - [ i+ Y, n6 m. R( \. Z
printf("\1\1\n");/*输出两个笑脸*/
; I" B+ F$ \1 d7 N+ i: Nfor(i=1;i<11;i++)
% P" e* z8 A8 `9 M# w; e{
5 g# b, `& u$ q& j: _" @6 m" Jfor(j=1;j<=i;j++)
6 ^8 k' o; L- y$ R' k# Qprintf("%c%c",219,219); 5 v- @# z$ A/ h1 j
printf("\n");
+ |) p( F+ W& h3 D% `, i, a5 |8 ~. h c} ( b4 U6 ]5 E. y1 @3 L0 B
}
# @" b0 j8 D5 C
& e: T9 ^( a9 r7 T: M6 L
1 S' W6 N% t! w/ m( s0 x
7 J ~6 W7 z; D2 y4 m, p作者: zhlei81 2005-1-22 11:29 回复此发言
! v3 [! n1 x* }9 P: u
" j$ B& U' p" G' w--------------------------------------------------------------------------------
S3 D7 P% D `! O2 D% r. I
( N, p, G; ~8 w1 F8 A, d3 回复:经典C源程序100例
$ ?3 l3 P4 F8 w' D) ? |( v, C3 h, ~【程序11】 ' R# u1 C0 B/ s3 }& ^( z
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
; y8 `9 I4 C9 q1 W$ v( M, r/ s后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
) k3 [8 \# \8 M! {1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
T% z, X" h. F0 ?2.程序源代码:
6 k7 s+ q8 k% Nmain() ' C: e% \, x# B; {$ ]! e
{
! R D9 G9 ~% X% _: ilong f1,f2; 6 x9 }1 n( k' X
int i; " X/ o% z# S; g, b2 M
f1=f2=1;
p) _5 @: J# K* s! k( m+ }5 ofor(i=1;i<=20;i++) & ^' u( ?1 d4 H( E7 L+ P
{ printf("%12ld %12ld",f1,f2); ' D4 h* d: ]/ Z9 |; E+ B
if(i%2==0) printf("\n");/*控制输出,每行四个*/
- ^7 C( j. E4 Jf1=f1+f2; /*前两个月加起来赋值给第三个月*/
. U' G' S, z. Uf2=f1+f2; /*前两个月加起来赋值给第三个月*/ " U g' `* ^( j) }
}
/ Q& |/ g. m; @- w# I} 8 j0 d2 I( c( }5 X# z) D1 p
============================================================== " B5 u- z( a4 G' T2 i o. W" E: x
【程序12】
7 U5 ?1 @/ T. L6 N7 T1 I题目:判断101-200之间有多少个素数,并输出所有素数。 M" Q' w* m9 m# i+ R* L
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, / w W, d/ W2 W6 L: v
则表明此数不是素数,反之是素数。 & ~% i/ E4 n {: z' z
2.程序源代码: ; c2 m9 \# ] Z3 J; y! [, C
#include "math.h" 3 n- d$ C/ g# s2 S
main() 1 |$ a4 x1 ?& T$ q2 L; s: c5 ~# h: H
{ & ~$ U3 I8 P" M6 O
int m,i,k,h=0,leap=1; 0 u% j+ a7 W5 n% a: X
printf("\n");
' ], W( z& s1 C: h% o; `for(m=101;m<=200;m++)
6 `( C* |5 u2 R0 z* j{ k=sqrt(m+1);
. ]" W6 L" ^" j! Yfor(i=2;i<=k;i++)
9 I2 t! z5 Y ?- `; `# A/ } C2 Fif(m%i==0)
8 ~, v L: ]$ N$ }7 Z# r{leap=0;break;}
4 o g. p2 ?+ m' xif(leap) {printf("%-4d",m);h++; ( u6 F# N2 ~, H+ n `# {/ Y, i
if(h%10==0) 1 t2 k8 \: o# v- O/ ~8 u; b
printf("\n"); & \3 E/ G# Q8 S. H* U1 s
}
8 W( p* y; b; k: k; q4 s w; _leap=1; 6 f5 N, o8 w4 z' [/ h! ]# L
}
* r; p( w( l' ^' I+ m$ X5 v8 i( Aprintf("\nThe total is %d",h); + Z# z8 n2 ]* n6 R
} , v! B# m, N9 J
==============================================================
h) d8 K4 D9 b; D$ n: A【程序13】
( K) k; f# [- n- {! d" _题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
$ ^* C8 E& w6 } D; G. S8 G本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
, \, J4 m0 `7 ~. d7 s+ P1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 $ G6 Z1 `* \% }; R7 @
2.程序源代码:
9 K; z! Z/ q, k" q) a- Q; mmain()
. A: i. P5 P- n+ p4 j{ 9 C& o: I; V7 F7 d5 D% a
int i,j,k,n;
; w- Z U- ^8 Eprintf("'water flower'number is:"); 9 }- j5 `% g, T# z: G
for(n=100;n<1000;n++) 1 p+ i3 Q: S: a* G3 X6 ^
{
3 {, {% q- y* A6 J; i4 Ei=n/100;/*分解出百位*/
7 v- W5 x$ Z! A: @+ }j=n/10%10;/*分解出十位*/
! V# ~6 v& j7 i2 s3 j8 ]0 vk=n%10;/*分解出个位*/ 5 V. V% f( C: K% A* L% X+ T
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) & I, I# e; } o6 `( a- u/ Z
{ 7 y$ M' h) n! z# _! `
printf("%-5d",n);
( Z2 j" |& X5 ~ r) L" w( b2 s2 L, a} # f6 @6 Q7 v; @; w% o, q2 q
} ( x) a! N( ?+ p$ W1 ]6 h8 v
printf("\n"); . N, ?+ I5 j6 c/ U7 |& M& u
}
+ w! ^' d$ F d% o2 w/ ?, u============================================================== 4 K% u l V. e4 u/ j; }
【程序14】
G! }: j+ t% L. O; h% U题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
0 `8 l3 G* d. Q) {' M
9 e- b8 }6 X3 H1 m5 S( q程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: $ t: {6 [2 w- M8 ^3 R+ ^7 p
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 4 T3 u# G( y) N' ]6 R
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, * h: s, S R5 x3 j& w! `3 E! l) \; b
重复执行第一步。
0 G; N8 G9 f% A1 @# [(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
; I" r$ ^4 F- @) O( @0 D
7 y: A" |! e! l) X. h t" M2.程序源代码:
( S8 y& E* B; L+ ^$ w/* zheng int is divided yinshu*/
0 K+ j# B4 W2 F+ j1 h5 Vmain()
; ~. K, c7 U) ], c& a0 r1 i{ 4 y6 D$ i- i" u$ w5 W% w
int n,i; : o ^: m7 N* q7 Z# m& y8 C% a! I
printf("\nplease input a number:\n");
; x8 s' i/ ^6 }: ]* Fscanf("%d",&n); & E6 G) x% T0 l
printf("%d=",n); 6 X8 f: H& k9 b8 x6 J- s" e
for(i=2;i<=n;i++) 4 N. A0 C3 v) i) i0 y, H
{
& X' B! Y( v& h9 owhile(n!=i) - {3 _% o7 p1 k$ f( j9 j
{ + @9 S. W1 _% C4 T' X
if(n%i==0)
# E5 o- l1 }* _6 K{ printf("%d*",i);
`/ l: q. Z9 j# t1 p2 yn=n/i;
9 j8 c# q) h& E- M6 s}
! u9 P4 ?8 R {3 c* W" A1 belse 2 v \4 Q% N7 ^& s2 I
break;
4 _+ W+ W7 \$ n4 ~# m& |}
% B7 w* h2 E" r: t/ [" M} * G: `9 `: G$ C
printf("%d",n);}
* K& h# j2 Q9 d* b
* s+ x$ N0 h9 x3 p: E1 |+ I
作者: 面壁深功 时间: 2017-9-23 11:47
看来也并不是那么难。不过饭还是大家分着吃。
作者: xiaobing86203 时间: 2017-9-23 12:52
赶脚很牛掰的样子啊,机械人完全看不懂
作者: 未来第一站 时间: 2017-9-23 16:14
收藏了,楼主不会是在学程序开发吧。
作者: 华2017 时间: 2017-9-25 17:47
不是100例吗?
作者: danxiaogui2017 时间: 2017-10-9 21:20
c语言的基本应用挺好的
作者: 675452577 时间: 2017-11-23 15:37
好东西
6 h7 e8 n0 s* o0 T+ u+ i+ L
作者: 坚如磐石 时间: 2018-2-28 13:51
在学校学习过这种
作者: 坦克世界之王 时间: 2018-2-28 16:57
看见程序就头大
作者: 411835728 时间: 2018-3-4 22:16
你骗人,我数了,不到100例,把剩下的吐出来,不过还是收藏了,虽然简单,但是基础和根本。
作者: UNCLESAM1998 时间: 2018-7-26 10:47
hen shi yong xiexie
作者: 912212596 时间: 2018-8-22 15:36
基础编程,,楼主发这个帖子想干嘛
作者: Lynn_S0yDy 时间: 2018-8-23 15:51
不够100个啊
作者: Lynn_S0yDy 时间: 2018-8-23 15:54
不错,支持
作者: mengfeit 时间: 2019-12-22 11:54
感觉好难呀,做机械的想学编程
作者: 井店 时间: 2019-12-27 18:18
基础哇!
作者: 田爽123 时间: 2020-1-2 16:22
就这么一丢丢么
欢迎光临 机械必威体育网址 (//www.szfco.com/) |
Powered by Discuz! X3.4 |