机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5604|回复: 16

C语言经典算法100例

[复制链接]
发表于 2017-9-23 10:57:34 | 显示全部楼层 |阅读模式
【程序8
1 J6 ?5 p# U7 V: D8 ^题目:输出9*9口诀。 ( F8 Y. I2 j2 H( z9 D
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。 5 _* J( w5 x. P8 a
2.程序源代码: 6 L- D' N# I4 R. J" H; u6 U# e
#include "stdio.h"
% T( F& p8 H$ e/ Y9 gmain() / m) M0 U$ U3 R3 ~  u) s
{
! [# h. D; p, Fint i,j,result;
' l; n/ a, j& z5 x, v* c7 dprintf("\n"); - I% w- q. f( L9 X& b  L
for (i=1;i<10;i++) 5 }* j8 U% B+ j$ G0 `! Z
{ for(j=1;j<10;j++) # c5 @/ U1 O  E5 _( n- v
{
3 @2 N" Z1 P0 _result=i*j; ( S( [6 f4 g+ [" d3 o* r4 x
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/ 9 u) J% ?& U  C$ q- u/ s) {
}
& X6 H  k' Z, I# ~1 O! V- D0 tprintf("\n");/*每一行后换行*/ 9 y2 r7 m& ?/ B, J$ T7 Y6 s( v# m
}
5 `: G6 O# R7 T* G0 m& d' A} . {& x) V6 D! c0 _
============================================================== 2 K. M1 f& ^% m9 m" o) [: v
【程序9! C$ @8 d9 A& u* i
题目:要求输出国际象棋棋盘。
4 r( F$ x& ^+ k. ^0 m' T% M1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
0 I) F! u+ Y0 T, X% S2.程序源代码:
! S2 ?# |, Y4 ?! ^- L+ ?#include "stdio.h" $ }- i+ a; O& T
main() : I1 G, d  Z  J  e
{ % _3 d  Q& _/ C
int i,j;
$ w- r# M/ u* zfor(i=0;i<8;i++) 9 K' s# M) {: t1 r
{
' V+ k3 ?: L6 d$ ^for(j=0;j<8;j++)
0 I2 D: y* B4 L/ C& `/ y# Mif((i+j)%2==0)
. |: Q+ \& r4 h) L- l8 Pprintf("%c%c",219,219);
0 G, \7 R, n: _! Felse
2 b! t: o. Q( n( ~# pprintf(" ");
. ]7 h0 R- I* h: F+ m) ]printf("\n");
2 Q" Q% n+ U! c8 X; Q3 ?}
1 f3 w, C4 S2 b  x}
, g; b, U# }( _! f) z8 y============================================================== 0 L, p0 B9 l2 [, _. ]
【程序10
2 ]$ W* \* G+ d5 m- L  E" _0 j题目:打印楼梯,同时在楼梯上方打印两个笑脸。
* m9 S2 D6 I( F, d1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 6 |" F" S) F) F* K, e
2.程序源代码:
  r4 w9 Y% m9 }% z#include "stdio.h" ) B- w- J3 T" Q+ Q- S7 a
main()
2 q- p' k& |) I& G" c{ ) X' G$ C6 v5 C6 q
int i,j;
1 f& }+ v- X, O7 D" u  l( vprintf("\1\1\n");/*输出两个笑脸*/ . H( c( ]- K8 p9 y0 ]
for(i=1;i<11;i++) ; Z5 }% T0 ?' k3 K/ @& i
{ , b% P: z! A4 s1 j+ f( Y4 Z) Q
for(j=1;j<=i;j++) ! G  g! Y  j  x; D
printf("%c%c",219,219); 8 w( \( h3 `3 J
printf("\n"); $ N5 o( V3 v0 ~; H6 K
}
, L$ `9 w' b- p4 h2 d( a} 5 }" o0 Y. [3 U4 s* w9 x

% U6 a  Q, I. A, t- }
( U8 D+ S- M7 d& j; U" \
; ?' V' ^" }: j" Y作者: zhlei81 2005-1-22 11:29 回复此发言
; ?0 e0 r* c2 n1 k. a; J  G+ [1 V% u3 L% w
--------------------------------------------------------------------------------
. o) G6 A% }% V1 ]% c/ l
+ k% k  g; {4 l7 e4 Z: f5 F8 M" ~3 回复:经典C源程序100  \1 }: q: @% r5 C
【程序11
& R) d' c' H/ Q$ o" \; U题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
( q7 p+ B  O% b  |1 ^9 i后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? ' M$ K; H* ~3 f; m( Y* G
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 5 ~4 n8 a5 l( f: N4 Z
2.程序源代码: & j* P2 e- u0 J) [
main() + z* D  C; l* a2 Z
{
' N  O9 l7 c, a4 ~% Blong f1,f2;
* j& h, |( y8 u5 I# A0 A5 @4 `int i; 6 c) T0 b$ V; U! u& f
f1=f2=1; / n- `1 T; p' J0 E5 |
for(i=1;i<=20;i++)
, K# z( S3 D/ A0 P5 {{ printf("%12ld %12ld",f1,f2);
+ A+ q$ k7 \; V" {if(i%2==0) printf("\n");/*控制输出,每行四个*/
# L* Z  Q6 u& X* Ef1=f1+f2; /*前两个月加起来赋值给第三个月*/ , I: R9 v* D8 G7 i& [) o; C0 q
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
% j' D3 w8 e1 V6 p& Q0 p# [}
4 e& r$ v* s0 z% c) Q8 Q1 {0 n: O}
$ E. R1 c/ b. `( H3 U; ~/ J5 C==============================================================
, g% ~3 o- o8 u8 i【程序129 B/ _$ l- U9 v( h% |0 K
题目:判断101-200之间有多少个素数,并输出所有素数。 # g& V# q$ [' Y7 h% u) r, ]& G
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,
. T0 b7 M! V# ?- C. |3 w( I( P7 S则表明此数不是素数,反之是素数。
' g# F* E2 j7 J" \7 m2.程序源代码: 4 e% {& l) u% v- F* u# {
#include "math.h"
0 e# {3 e5 I+ }3 H7 P& i2 a0 d% ^main()
+ N+ N( A: l4 D$ j) M{ ( m! q- f+ q" q* X; F
int m,i,k,h=0,leap=1; + z. j  U3 h+ a7 j9 y$ u4 w
printf("\n");
% d, Q" h) V. J. ~2 ?for(m=101;m<=200;m++)
% p/ O2 }6 L- Q, ^{ k=sqrt(m+1);
  A% z" q0 y* s* e, |5 vfor(i=2;i<=k;i++)
5 ^6 H% ]0 X0 n( pif(m%i==0) 1 ~& \' G2 R1 Z! U& i- B2 @- K- {1 s
{leap=0;break;} + K+ L. f6 f% p$ M* }# [. r! v4 W
if(leap) {printf("%-4d",m);h++;
9 k+ g# l% o0 ^7 C" }9 Z0 p8 k# }if(h%10==0) , X: x  V' W! s8 @4 ]' Y
printf("\n"); 1 _5 m# \- s. b3 `9 X
} 9 s1 O' S/ {7 p# p; }" n1 @' W. N1 C
leap=1; * k+ I/ p! F' Z, [9 T
}
! E/ q) \' f# k0 U" Vprintf("\nThe total is %d",h);
! M; v4 o# p3 l3 s' s, P# r2 ^}   h! h3 T, v" j0 ]9 d
============================================================== ' u3 j8 ^7 e6 T" X8 x2 j* E
【程序13
  U5 Y/ s& [4 d2 L题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数 , o+ @9 s+ D* r/ e- f( r
本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 # \3 l) Y; N% }3 U' F$ t* |' n
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
8 P0 F  k0 r4 ]- ~( Q1 \% _8 |' W4 N2.程序源代码: 4 j& w$ v: F8 U( N
main() : g! ]: }2 G: U( L! m
{ 3 Q! A% {7 o) t/ r( u: s+ ~: m+ C8 Y4 _
int i,j,k,n; 4 l5 x1 E+ N0 s" L
printf("'water flower'number is:"); ! e0 T: J5 W+ d' O3 c
for(n=100;n<1000;n++) . E* o5 h8 _8 g& t& N$ n; N: y
{
, y, {1 F2 _, q7 ~! Qi=n/100;/*分解出百位*/
/ Q/ ^$ U) n) cj=n/10%10;/*分解出十位*/
4 X( `5 s1 Q  i5 r% N1 g: j  Tk=n%10;/*分解出个位*/
+ a0 |: Q' o  f* ^# `4 bif(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
8 p6 b6 `* W5 N& W{ # Z, U( _/ d+ H. q
printf("%-5d",n);
; S. u3 r6 ]4 O$ R} % T) y+ J0 u# i# W0 _3 D/ q
}
7 d1 k' J  G$ a& k" r, Zprintf("\n");
: e. G- U9 E5 c' @1 [} ! S1 L4 n1 [! x% U2 M) d
============================================================== $ Y4 y: r4 L0 ~0 P$ Q( g0 M
【程序148 u" N# n  _! s# o7 x/ R6 h
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5# k# P- g# `4 }
  X  }. t7 b5 \: V* T2 H5 e; m
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 4 w+ t( x( `9 j
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 9 `  t: t* l: J0 T1 I+ O
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
5 A9 t; j6 b/ j2 M* d" P) f重复执行第一步。 % i# F& B, l# G5 Z; @7 r/ J
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
) c- k4 j0 B, b" o2 N, K9 H: J4 e; V. k( {
2.程序源代码: 5 t1 n- h8 o4 f& a: H2 F
/* zheng int is divided yinshu*/ 7 Y- {; J0 a5 V1 N0 {
main()
4 O+ j5 i4 w2 u# n  X% ~{ 6 j" M& @( O4 L$ v7 y* ^3 W( P
int n,i;
) U% H3 I, w+ _printf("\nplease input a number:\n");
' L( X2 {# f  \. {6 G8 F8 V/ Nscanf("%d",&n);
% ]- l" X" ~: Y% Yprintf("%d=",n);
$ e! ^) {, C' u1 L: b9 ~for(i=2;i<=n;i++)
( E; G: }  M8 `{ 7 ], N$ U4 n4 A# S6 E
while(n!=i)
- O$ _. B9 p/ w. K1 w+ c) U. F$ z% g{ & |$ b$ U2 S  r: w8 p; B
if(n%i==0)
) ~" D4 i  i$ h3 Z) p! G( i1 B. [{ printf("%d*",i);
+ N( }: K" p- G- i: X8 H( bn=n/i;
8 \3 Z+ }  r2 o' J8 y! Y! k2 J" @} ) P9 K' ^: l& ]
else % I) N1 b" j+ @  [
break;
3 a1 X' v9 `4 k, B7 v}
' v$ d  F: M' F1 j0 |}
2 Y& X+ [! x0 S, e! sprintf("%d",n);}
/ a0 G, g& V" k" I+ _$ \- A0 S
* M$ f- B8 B# n" g5 y
回复

使用道具 举报

发表于 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 | 显示全部楼层
好东西
1 e! m* ]2 E1 t; f9 p2 j
回复

使用道具 举报

发表于 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, 2024-11-24 12:31 , Processed in 0.057835 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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