机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

C语言经典算法100例

[复制链接]
跳转到指定楼层
1#
发表于 2017-9-23 10:57:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【程序8: C* A+ A1 V; Q0 |8 @; g; H/ i
题目:输出9*9口诀。 . F. m5 o" L+ _2 R' `+ X* E
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
. W# I8 o# }( X: o" C! O* B! l; y2.程序源代码:
: t1 C0 F/ B, M#include "stdio.h"
2 S; i% o% {, |+ jmain() 1 C1 I8 E5 s; G& O  Y$ |( Q6 R. \1 w
{ 5 {! ^! o+ c$ |- M4 R
int i,j,result; ; q! _: t; K; k7 D
printf("\n"); + S9 G" Q' e+ |" I" R: r
for (i=1;i<10;i++)
% n: @$ C) h6 F' C! \0 p* \9 E{ for(j=1;j<10;j++) . d, U5 A+ D& t' a
{
& T# I+ q6 n! Q  d3 i5 rresult=i*j;
+ B- \! G( H+ Q7 s; G  \printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
! ^2 E- d2 k0 w1 C. W! n% ^7 K} 2 D9 [. @) o- D6 {/ f. H, }
printf("\n");/*每一行后换行*/ " R" J" E& Q. F) n6 T8 u, U2 k; U
} 2 M: @( P: u( B
}
5 N5 y9 u6 S6 }& |( r' `==============================================================
4 p2 g, {# E, k5 l% b2 m7 x【程序9% D% |1 j6 ~) I3 H5 v2 ?
题目:要求输出国际象棋棋盘。 - r+ p- Z! |2 O' ~" C
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 * c/ Q2 H! i7 ?; m1 G. }  {
2.程序源代码:
2 _5 ^3 ~6 J% o/ C  N1 G; ~#include "stdio.h" 0 }; x" a0 W. [  e- q! `  b8 \: x
main() ' ?7 @1 l" F' w4 P! T+ b
{
% a9 t+ G  i$ }7 S! q; o1 D7 l/ @) [5 Bint i,j; ( F; U" k( i% p  V$ d) w+ W  i
for(i=0;i<8;i++)
+ Z+ t! J$ `9 @7 O$ v3 T3 ~3 t& q{ ! m2 u& q9 {& b# s% T6 l; Q$ h
for(j=0;j<8;j++)
" M3 h9 l- ?2 m, b+ C& k. }if((i+j)%2==0) 1 f- D. A" y8 e* M$ B
printf("%c%c",219,219);
6 D3 q; ?; [6 ~' p8 jelse
; t% P, H( w) ^* O7 {9 Yprintf(" "); 3 T9 @9 G  D% ^. y2 N. t
printf("\n");
' K+ _7 v4 ~/ ]  p5 I} ; N3 H" P- u! i8 Y- V4 Q
}
2 y+ I/ L6 k0 u1 f' F==============================================================
. |3 Z' X" Z' l- B【程序10
( \/ I* f  e4 x5 L$ Z# }, b- M题目:打印楼梯,同时在楼梯上方打印两个笑脸。 : _7 p" @: X( l: \3 H& L5 Y  m3 I; D) h
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 $ C7 [/ I, f6 c3 G# o" N
2.程序源代码:   N) y+ O" |! H2 L* H9 b0 R
#include "stdio.h" . C; r, k$ W' G5 R
main() 7 ~; x2 }& ^* r, b5 B0 I
{
% g# @% t$ E# M5 Iint i,j; ) D% P$ o. ]7 N! W) X
printf("\1\1\n");/*输出两个笑脸*/ + ~6 P* ~! \3 I! T1 ?
for(i=1;i<11;i++) * x/ C1 _2 V+ B  `
{
3 k! u( O% j- ]( m6 gfor(j=1;j<=i;j++) & u9 H) O; H8 I8 P, o8 [( ]# F! x
printf("%c%c",219,219);
& D" N2 W  m. b  v* F6 wprintf("\n");
! o- s; j) r% T% E$ m}
  f' G6 s2 B5 |} 3 G2 \! r3 ~) K3 L* }1 l

' t$ p: u. U/ Z
1 \" {( J7 C, F% a9 e6 m: r) ^  x1 D1 T3 m  [
作者: zhlei81 2005-1-22 11:29 回复此发言 8 @  s2 P) ]4 L: ~& a' O# Q1 Q3 D" k

7 [. B1 k9 R" N- I2 F, b-------------------------------------------------------------------------------- ; I' y! T7 h: ~8 t! N. c& U6 q
3 D3 O) k1 F% {& s" ]
3 回复:经典C源程序1002 ]5 K* y8 `5 ?6 G  J
【程序11) P$ Y9 J- U6 v2 Z% }4 L1 Z
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 1 l. f* b. d' X
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 0 G  g7 U' l& z
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... & b* ~0 D( S5 W1 h
2.程序源代码:
) {+ a9 x! m* W7 j% bmain()
5 g) P! f* v. M) q1 f3 g! o+ X{ 3 w( N: A: y' M: @+ R/ ^9 o
long f1,f2;
; q$ _5 t/ i9 T7 U4 u. Eint i; ' x  d1 u) |$ e  _) ?
f1=f2=1;
7 \& ?  A" z8 g6 X8 o0 yfor(i=1;i<=20;i++)
3 n; d( L+ u" q" \$ u8 M- h{ printf("%12ld %12ld",f1,f2);   u# T+ K$ Q+ o7 Y' j. `7 M
if(i%2==0) printf("\n");/*控制输出,每行四个*/ 8 _( |6 E+ g0 K0 b
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
4 O: r4 ]0 w3 Q$ W; R* jf2=f1+f2; /*前两个月加起来赋值给第三个月*/ - E$ C6 _/ H6 z: Y! @
}
$ J" l+ a3 M5 E+ h5 I$ ?} 5 h; P7 X# O1 u- e/ F- ]+ @
============================================================== 9 k# o+ Z& f% `$ O9 `* B
【程序12
3 v# O# L; S3 o7 {4 I7 k题目:判断101-200之间有多少个素数,并输出所有素数。 / z: o, [, q& Q2 Y
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, 2 ~1 Z+ l$ X0 A8 o& X2 m
则表明此数不是素数,反之是素数。
* t2 @$ K+ K% r  r' n$ M3 z2.程序源代码: " u( j; y/ @- _) [$ b- L0 C
#include "math.h"
5 \  q6 c& G/ i0 o% Amain() + J4 C! C5 O4 y
{ 3 C/ ?, H0 W- U5 q; J. c: P. I
int m,i,k,h=0,leap=1; 0 w( x+ X/ o0 O" K6 W' O
printf("\n"); & ?1 y9 {/ P9 _8 m
for(m=101;m<=200;m++) 0 y4 ^" Q; `1 i, Q
{ k=sqrt(m+1); . c7 k0 l! I4 D7 w8 W
for(i=2;i<=k;i++)
1 u/ m$ ~8 J  L) L( o. r0 v/ U1 uif(m%i==0)
; J0 A  @# ~: V3 G9 @! _{leap=0;break;}
9 N' c9 V8 v) G+ Uif(leap) {printf("%-4d",m);h++; $ u' Q6 @% ^  F2 v8 ^5 h7 y/ ?
if(h%10==0) # F  s7 E1 K/ h$ J; I
printf("\n"); ( j5 V- P2 ^* e
} , `1 ]' T7 x( t1 L" C
leap=1;
2 R" h: Y( _9 h' S3 _0 Q} + |, F7 m4 v3 |  o3 q, ~) Z9 G
printf("\nThe total is %d",h); 3 Y. K* g! f4 l8 Q7 L, n
}
1 a( L. I! o" ?/ E) D============================================================== 1 ~7 R+ l0 }& k" t. i; [% h
【程序13- O  v* d2 m% k! X' ?2 b; r+ k: G
题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
- s/ J% L3 o# T4 y5 J本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 / Q7 B% @' |  I0 r
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
" v0 y6 M: r0 x( V% k2.程序源代码: 5 N3 z. _! t; k) B/ t; [, L' `6 f
main() . P1 W3 G8 w. U
{
; D' \* L2 @9 x6 x5 Zint i,j,k,n; . i5 F. M4 g5 s* t0 Y1 ~
printf("'water flower'number is:"); ; v" v# @  `) X
for(n=100;n<1000;n++)
- e8 L4 D" S( Q! B/ Z, b- L7 t$ M{
; V0 \' {7 N" A! `0 O1 D( zi=n/100;/*分解出百位*/ 3 q4 o6 k5 r: @, |. B
j=n/10%10;/*分解出十位*/
8 \! Z. A) E+ a3 g6 R  o% b7 yk=n%10;/*分解出个位*/ $ `/ L3 N! k/ D9 }5 A& _
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) 6 T0 H- L3 h: @0 x, C0 q
{ 9 d$ ^& s+ n3 P
printf("%-5d",n); ' ~7 ]0 H3 `7 _' h9 G1 O
}
8 M0 Y0 l! w1 l} & m3 P2 N( P& T, c& `" j. s
printf("\n"); * @( O% ~  e+ i6 o
}
1 c! R: c- O3 x============================================================== . B4 x& P. Y( V4 u. M6 ^( c/ Q) k
【程序14
) i" J: d' i2 B8 s1 W题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
/ M$ A" f! t5 p! `/ _: ^
( U- K, w: L* _6 ~7 K! ~4 ~  g程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 1 P  d& b9 f/ j1 b7 E. {
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
. G5 P$ O2 q7 J0 q. E) M2 V0 W(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
& J! Y5 l& x& @+ h重复执行第一步。
# O' ~5 E6 e1 r4 x+ D0 h1 B(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
: b3 o$ N. t7 ~8 T1 n: n( ^% x( `) ?% r: b/ H4 }1 P- L: T
2.程序源代码: , n7 V1 M: u, I1 Z6 y
/* zheng int is divided yinshu*/ 6 H: B; G2 Z+ d  g- ]4 X
main() 6 R8 x: c9 t6 l, K
{
8 V; ^, I% x; c4 X; i9 iint n,i; ' u' U! a) T" ?$ U& a! Q
printf("\nplease input a number:\n");
9 ~3 ~& C- w6 f2 K% G' d# gscanf("%d",&n); 4 l" p* G  Z7 j$ {
printf("%d=",n); # B( f8 _% _$ S% W3 w8 D4 q/ i2 o
for(i=2;i<=n;i++)
3 ~: f* L9 j' g* Y. U{
9 E9 Y& O4 ?+ \! A- Qwhile(n!=i)
" P, Q' K& F- |. _1 d{ - n& t# }$ a1 y9 T# `- T
if(n%i==0) 2 k6 j. j0 a' [
{ printf("%d*",i); ' E7 K5 }* c* E6 r" E4 B
n=n/i; ) a; ?9 Q1 e0 I$ U$ c
}
3 O7 x! e4 R( ?  f  b: S- `8 ^else
. X) }1 ~1 P* h$ }1 Rbreak;
) s5 ?. H4 u/ V: S% d}
" R7 C* d8 j3 |) O4 @1 `) l, A}
+ H" r. y! N# C- U: j$ a# N6 N1 Yprintf("%d",n);}
( t3 P9 M( @. k* Q. C' G3 b

. d% p' R1 y1 i* F+ y2 C) F. }% L
回复

使用道具 举报

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 | 只看该作者
好东西7 H& x* m$ y( k$ ]4 V, _$ C! `% M
回复

使用道具 举报

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, 2024-11-27 22:57 , Processed in 0.054886 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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