【典型示例】 【例1】计算两个数的最大公约数; 分析:首先,随机输入两个数m,n(默认m>n);其次,算法:使k为m除以n的余数,如果m能被n整除,则k值为0,n为这两个数的最大公约数,否则,使k代替n,n代替m,重复以上过程,直到k值为0。
( z% x+ ?" L( P% @* H+ T #include"stdio.h"9 Z x% n- N6 ~: [( p5 y
main()
' b8 S v3 L& a* H/ N {8 G5 [) P6 k/ _! ~
int m,n,k,result;" p* |, B0 Z" y ~( Z
printf("Enter two numbers:");% J6 I9 m7 K% {
scanf("%d,%d",&m,&n);2 l; X3 t! z. X9 i8 X
if(m>0&&n>0) /*限定两个正整数*/
' a, Q" u+ W9 l3 }6 _1 y {$ m0 D7 e4 _) o- p
do
/ J. \1 e, q' K% t {
$ i# U0 r# c% h* B# V( _ k=n%m;
" f6 T! P1 T7 p1 N+ p if(k= =0)+ ?8 f; F1 B) I- T
result=m;
9 F; q* J ?- @- x( E- S, R else2 c& }( l0 \7 x" ^' C% T! B5 s
{
* Z V0 d2 Y. B" z% L n=m;8 p T& M$ \1 U( u; s; p. {6 [% \
m=k;
8 }5 C/ O7 g6 y0 b4 M6 L }, |/ m a+ t; r( X6 t
}while(k>0); /*循环取余求出最大公因子*/
9 V- z' [4 D4 U6 W/ ] printf("The greatest common divistor is:%d\n",result);) Y# x# O/ a- H1 ^+ H
}
8 F) Y6 } y- ~; `7 w4 N else printf("Nonpositive values not allowed\n");' b# E, i: V# q; C7 b2 U$ \
}
4 N' ~- R9 t8 ?$ o2 N4 C- o, T 【例2】用牛顿迭代求方程2x3-4x2+3x-6=0在1.0附近的根。
7 E P* l/ T+ P9 [. R8 { #include “math.h”; P# `+ N7 |6 e. r9 D# k X/ }
main()- ?) L8 z) J3 D4 F
{) @$ z' r9 A* y+ U
float x,x0,f,f1;% q- p: U x2 X. b6 h" L5 M
x=1.0;1 O+ G3 W! D1 |, O8 E) z; Y+ w
do0 o3 W: ?& e5 {4 a
{ x0=x;3 d% f; X0 g4 I" \* `9 \! Y* c4 K% d
f=((2*x0-4)*x0+3)*x0-6;$ l6 U8 N! I' K2 p
f1=(6*x0-8)*x0+3;
3 }4 Q6 z! c5 N' U$ v9 u7 k x=x0-f/f1;
w& w4 O! f: {: G/ G }0 Y* D9 s* |% @% E, ^6 D+ v [- ^
while(fabs(x-x0)>=1e-5);
+ B+ I) _) W. _* m) | printf(“%6.2f”,x);3 V% I# r9 r* D3 Z9 N3 ? W4 Y
}5 z0 n1 D/ {% Y5 v+ A! }5 D9 l& s
【例3】打印下列图案
( k, h/ `; _+ Z8 S2 v *
6 b \9 M$ C$ ~% x+ ^/ j ***
/ F0 w5 F; l( E, [" z7 K *****
% c- p$ K0 M! q9 C- B, F *******
5 F3 L5 s/ V' W0 T/ \2 O main()
7 E+ ]7 ?# |4 g& {, x- x { int i,j;# b- |: o, C! y) {, O
+ g! ?5 R4 g4 n" q4 V6 Y5 z4 ] for(i=1; i |