国产精品乱码一区-性开放网站-少妇又紧又爽视频-西西大胆午夜人体视频-国产极品一区-欧美成人tv-四虎av在线-国产无遮挡无码视频免费软件-中文字幕亚洲乱码熟女一区二区-日产精品一区二区三区在线观看-亚洲国产亚综合在线区-五月婷婷综合色-亚洲日本视频在线观看-97精品人人妻人人-久久久久久一区二区三区四区别墅-www.免费av-波多野结衣绝顶大高潮-日本在线a一区视频高清视频-强美女免费网站在线视频-亚洲永久免费

機械社區

標題: C語言算法16-26 [打印本頁]

作者: tainqing    時間: 2017-10-6 15:41
標題: C語言算法16-26
【程序16
8 n6 u- p: X7 I! {  @題目:輸入兩個正整數mn,求其最大公約數和最小公倍數。 8 ], b4 g  h0 E& E9 K% O! B- f! A

1 O: T# o. |7 w9 [- Z) `, Y: N! p& U# f) W$ n0 N6 w9 I2 ^
$ z" z/ Q! }0 q
作者: zhlei81 2005-1-22 11:30 回復此發言
+ V# o% |& l1 }. I' W/ e1 K/ @' r
5 u( {8 {0 p8 B, ?2 {/ M--------------------------------------------------------------------------------
9 Y2 I9 m8 |% t% X5 I
9 s% u2 y; B; y4 回復:經典C源程序100! B' h. E; a+ y; z5 N7 ]+ P5 A4 `
1.程序分析:利用輾除法。
9 c+ }! E( |# l9 j6 d
2 o0 I% d: n6 H! h2 ?* s  X1 V6 C2.程序源代碼:
1 ?0 N8 Q+ L+ w$ R/ K! Y" i: vmain()
. T. E0 Q% P) Q0 d- X{   X& L- J" J' K. T  f8 U. r
int a,b,num1,num2,temp; 0 j$ O9 X5 T" D# p# j9 f
printf("please input two numbers:\n");
+ H+ e9 b8 N- @5 x0 e) tscanf("%d,%d",&num1,&num2);
  ?, c& t  A' ]) A$ T$ A* vif(num1 { temp=num1; . e/ D$ \( U0 }! }  L/ |% H/ o  d2 g
num1=num2;
; n; r! y4 t% b( b0 Qnum2=temp;
, O% U% A3 D# p# o. K1 A7 O}
$ Q2 k+ j5 S8 W8 [1 X# Fa=num1;b=num2; 8 z0 I( f! ~" P) p: O
while(b!=0)/*利用輾除法,直到b0為止*/ ; @- I! x" h! V, l# n
{
" G0 x! K0 q$ i. y: F: ~temp=a%b; $ d2 [) R+ ]! Y/ S9 ]6 {
a=b;
- \; ]* K) u$ [1 S# G5 n2 gb=temp;
: p. @  a9 U! p2 |7 I}
) M& D+ K/ r0 H: I  ]1 g! u" jprintf("gongyueshu:%d\n",a); + V" s1 h3 j* R8 v& ?6 X5 r
printf("gongbeishu:%d\n",num1*num2/a);
: w; c2 M1 w- K& D1 b} ) D( S2 `  l) q! S. R
==============================================================
) J% c( B( o* U- Q& J【程序174 _( ]: C  ~/ L3 C& e
題目:輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。   s& H2 Z+ f/ M7 T( W4 |% B
1.程序分析:利用while語句,條件為輸入的字符不為'\n'.
* ?, A0 ~9 u2 ~8 z, n9 i" v) E. t) W$ m* p3 ~
2.程序源代碼: / w; [, ~4 ]! Z( D8 B4 b  k' g
#include "stdio.h"
9 R6 u* w: {  c- r1 t- S4 s$ qmain()
  Q! C; v. E4 @0 ^{char c; 3 P* l+ l0 M9 j; ]2 Z7 x
int letters=0,space=0,digit=0,others=0; ; m% n: Z6 ^) J" g
printf("please input some characters\n"); % q+ t/ Q2 @3 O8 g
while((c=getchar())!='\n')
# m  P2 H! g  V9 Q& ^& y; ]/ R' E{ 7 v) n8 A2 n6 b/ H  C
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
- V9 j9 a; ^. H$ W" Dletters++; 8 q# O6 X8 L; F- y3 \0 x' q
else if(c==' ')
( z5 P! R# m' }space++;
4 ]6 D  E+ R8 L0 }; N3 _else if(c>='0'&&c<='9') 8 Q7 x( ?4 g, P' z  x' A
digit++; ' @- F4 F5 V" h
else * ]$ R( M; |( m8 T" y
others++; 5 l; b# g  Q0 t/ B5 v
}
# G( p9 `2 o/ W) @printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
+ F/ |1 D& D" Rspace,digit,others);
) [- Q' Y# C5 A  I6 R} 0 h$ l! H+ x$ z0 F
==============================================================
* F$ |! J% x; t( w' V+ D【程序18
! E" H5 H" c' s; R( C5 D% p. J# q4 n題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時 & Y& E  w0 v) `  Y, C
共有5個數相加),幾個數相加有鍵盤控制。 $ x/ ?' v9 C" ]0 V& J  l% J
1.程序分析:關鍵是計算出每一項的值。 8 ~3 {3 P2 O7 K5 K( _* y' W/ i
2.程序源代碼:
! |& H* z: N. n& o. Emain()
, q& Z4 Y3 M0 w; C6 \{
  T  o2 A, L3 Q9 Oint a,n,count=1;
7 T. l$ T, B' N6 o2 D: P8 n0 ?long int sn=0,tn=0;
& M: V) Q  B; Q6 s& pprintf("please input a and n\n"); * J( _5 v7 ]9 x7 Q* \+ b! P
scanf("%d,%d",&a,&n);
: L0 ~2 s. A6 M2 E5 ]5 f/ Rprintf("a=%d,n=%d\n",a,n);
- E+ q) G4 {7 Awhile(count<=n) 7 M: z8 ]2 B6 ^% h, y
{
% h" H8 M: l" z8 U0 Atn=tn+a; + }" o: v1 r( G/ ]& N2 ?& \) a) R9 i
sn=sn+tn; 0 v. G" h/ X3 A# ?) A
a=a*10;
; z$ S/ t  T9 y& w- t( J( J++count;   X" t8 l/ p( O; J8 t! @
} 3 \# U+ y) u; L  n# f1 I
printf("a+aa+...=%ld\n",sn); , R- J  t$ A9 j' @- b2 `% @
}
# x4 \  J" R) b9 |+ c3 z$ D+ J============================================================== : G5 U& E8 P2 {
【程序19
% _% q8 w% {" v1 \9 z題目:一個數如果恰好等于它的因子之和,這個數就稱為完數。例如6=123.編程 ' M' H* g! P& x- l" T" W1 d
找出1000以內的所有完數。 % `, g: u; r$ g6 B: p0 g
1. 程序分析:請參照程序<--上頁程序14. ( X0 p  y8 ]9 z. S- S
2.程序源代碼: . e0 I- s; p. |+ g9 }
main()
* i0 c3 N! s- Q/ D; n  q3 c{
$ I: N. _( S$ L) |1 ~' E9 X3 C) p' ]static int k[10]; 6 A2 z7 G/ {8 `* [
int i,j,n,s; / O# O5 H$ N$ {; {( O) k
for(j=2;j<1000;j++) - `6 \: J, i5 c9 f9 U+ ]2 x
{ % i/ O+ g7 q. ]+ r; ~
n=-1; ! a/ K5 h' L4 h7 O1 ?3 v: R
s=j; 6 c% R6 r# G" g
for(i=1;i { 0 o# Q% Q  m9 A# c) l% n
if((j%i)==0) % U+ D7 d7 J# W! m2 M) k4 a
{ n++; ; e& o' X0 k6 l6 W* J5 P4 Q8 D
s=s-i;
" ]* D( ?- O4 u7 F/ l6 Ok[n]=i; . z4 t7 Y: t" [# j/ C
} : q$ U4 p; [& I& E6 J6 D/ t5 ?
}
5 P' r/ P4 O/ a0 O  aif(s==0) 5 Y/ P; C4 a' H+ G
{ ; D7 |. i; L- u. e8 j
printf("%d is a wanshu",j);
, Q5 e: J  o& z. i5 d- I, Xfor(i=0;i printf("%d,",k); / K. b4 `4 I. {$ o: s
printf("%d\n",k[n]);
# J8 h0 e+ a+ q2 A7 L} / d, Q) f9 m& D! K8 h5 E
}
9 @* M& A$ [) y2 {: Z2 V% b1 ~2 [}
- z; _- `: p7 n+ L1 `==============================================================
, O8 F9 V! Y. `& A& {【程序20
; `# {7 Z! }0 @. H! P# D/ P3 Q3 _題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 " i0 X7 P3 }$ W
10次落地時,共經過多少米?第10次反彈多高? 3 m8 i+ H" j$ F7 k
1.程序分析:見下面注釋 * G- f3 D) x7 {: _! E
2.程序源代碼: : M& n' G9 }0 ?' D3 n! j
main() 0 X9 ?" _7 s3 r2 {
{ * X+ V, E! k+ i+ l2 L1 J) D: c& X
float sn=100.0,hn=sn/2; # c# A' A1 n. z8 G! i
int n;
! G. P( f* w( F7 I( H3 K4 ~; dfor(n=2;n<=10;n++)
$ f- {) k* F) x$ q+ m( x{
) ?9 [( Q$ r% tsn=sn+2*hn;/*n次落地時共經過的米數*/
% [: X5 t2 t, |hn=hn/2; /*n次反跳高度*/
: c. w4 v, o$ i3 w& U} + I( N! Q. W4 _" K
printf("the total of road is %f\n",sn);
5 y3 x+ g9 m2 \; h8 N% t; ]printf("the tenth is %f meter\n",hn);
- E' a( J' R: P}
【程序21
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個
+ Z# o1 m8 v& N% ^   第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下
; ?" D. i( Z! n- g4 f: k% p; s" [   的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
- O. ]& }& D% z3 M1 ]1.程序分析:采取逆向思維的方法,從后往前推斷。
2 |$ s9 X+ }' f! s" A; u* P9 j" h2.程序源代碼:" H* O: V- `8 ?2 p& E& z
main()
+ b2 ^* m" w# n0 S{
; H) G+ d# Z! W2 zint day,x1,x2;
0 K5 @6 Q& K; e3 I' W6 ]% wday=9;
" @5 ^8 |9 T, M/ fx2=1;6 C7 V* w' f" \4 S1 A; B8 z6 B
while(day>0)
: |. J& [: N9 y( ]) B {x1=(x2+1)*2;/*第一天的桃子數是第2天桃子數加1后的2*/4 u) V& m+ M8 K1 V8 Q: b( G3 \
 x2=x1;
! Z- ?: o, Z) }3 d9 S. M% T day--;
" r! T. J/ P' U  A+ y }
  }/ V9 g' {4 C" X  [" q+ p) _printf("the total is %d\n",x1);
! F2 I; N% R. @) h' U# T$ H}
) x2 d/ Q' o" N==============================================================
; b1 m6 }  k; |, z" `4 m【程序22
+ r% k+ s& m2 A5 i2 P0 c: N" g題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定
; O0 [1 s# F, Y0 G6 b! [8 Z' c   比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出
/ X9 F1 ]( ^8 ~) p  S" O0 c   三隊賽手的名單。
3 `! b$ _; ~& m/ R1.程序分析:判斷素數的方法:用一個數分別去除2sqrt(這個數),如果能被整除,' K3 s8 Z8 l. x5 d) G( {/ J( T
      則表明此數不是素數,反之是素數。         o- y; K0 Q4 F/ y9 E" ?2 L6 y
2.程序源代碼:- K* S: u, |4 `8 D0 e6 U8 p, u
main()
# R* ^% G# I7 r5 u1 Y6 }{2 d* M* {- V: f, x3 h
char i,j,k;/*ia的對手,jb的對手,kc的對手*/* s# f/ v6 A# ]% }6 I2 p7 L) e& P7 Y) F
for(i='x';i<='z';i++)5 z* Y) l4 ^% g
 for(j='x';j<='z';j++)2 l1 E) t. f7 K; i
 {
8 D8 C# i) c! _. V if(i!=j)
: Y* s' @! H8 C& @% S: u  for(k='x';k<='z';k++)
) `- E1 {9 F, N1 {  { if(i!=k&&j!=k)5 k8 f6 l6 S- H6 _# V" w( g
   { if(i!='x'&&k!='x'&&k!='z')
  w% G1 q! @6 [   printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
7 E( |2 a+ p& V0 w   }" o+ M' Z  \0 \) M4 l1 Q
  }+ e4 l% S3 e) c4 Q- t6 U
 }
- T# I  }  X9 Q; r6 k) X1 P6 ]}! Y7 w0 x2 Q+ O( i. P& a+ {" W
==============================================================- G/ [# s& C& C7 }0 [' \; d; h
【程序23! h8 X- g3 {4 D; {% o9 }0 L
題目:打印出如下圖案(菱形)
*9 f" s) o4 |  E# J; f
***3 U8 A5 M- c0 P
******, Y7 P5 _0 m" ~6 |0 n- L  D
********
2 J" h8 G  k+ M7 F9 @, p******
. A* E: D) u; J& v7 [***( P; a" j/ B! n% l6 i
*
7 D- F  I/ A+ M, A1.程序分析:先把圖形分成兩部分來看待,前四行一個規律,后三行一個規律,利用雙重- `; v  n* ?# ]  Z# l, `  Z  d/ ?# v! M
      for循環,第一層控制行,第二層控制列。 # w0 Y$ [2 c. _# u
2.程序源代碼:8 }9 r* N7 f; L5 [
main()
" ]8 I& y& L# V5 L{
0 ^/ V1 S. ~2 G/ t5 _# wint i,j,k;
+ R4 n8 a) y% `* v* c; ^for(i=0;i<=3;i++). Y& q/ `  @; Z, C, j0 ~# N2 u
 {
, h  |5 S$ u9 Y% j& v3 _0 O for(j=0;j<=2-i;j++)
; S  f: J& E" \- Z$ H+ ^1 I  printf(" ");
3 Q& g* `8 t  u for(k=0;k<=2*i;k++)3 T5 P$ g* _# r5 @2 X5 u9 P+ j
  printf("*");
* ?/ d  U1 ~8 Z7 j8 V# Q printf("\n");
# }+ a1 m! [, o }  L* p: }/ A% P- |: i# g3 E
for(i=0;i<=2;i++)( V+ Z: k8 i+ B1 G1 z
 {
/ X' J7 @0 m8 ~( d0 C/ |1 I for(j=0;j<=i;j++)4 j! x  t% @* c+ d
  printf(" ");, J* N; o" S( F, e* v
 for(k=0;k<=4-2*i;k++)
6 d6 A! o3 l# v' ~/ N9 w5 j" [  printf("*");4 y  k4 p0 R6 z6 ?  O
 printf("\n");
8 \5 a) q  c1 t; x( R }; W& }2 o  f& j( D" J0 \# G9 G. N0 b
}
0 Z5 ]  q4 u' G. q, k4 k==============================================================8 `+ C7 u5 K: w' K" F0 f
【程序24& c/ \  A, O- f( n
題目:有一分數序列:2/13/2,5/3,8/5,13/821/13...求出這個數列的前20項之和。
% T) ]- {- J9 Y% Q4 E1.程序分析:請抓住分子與分母的變化規律。
0 D6 M7 e; M( G0 `% m2.程序源代碼:( c; `! K# `$ E+ X  Y# s
main()3 J/ X! K/ G" M1 z! d7 ]2 s
{5 ]: P' X; u8 Y7 H* i6 r, f! T
int n,t,number=20;; ^/ m( Y5 j+ v
float a=2,b=1,s=0;( Z4 x& P' B* `0 f
for(n=1;n<=number;n++)' j  X/ x- k! k* z2 J) U  Y
 {
7 ^" p, t7 `; S* C8 G s=s+a/b;
; k+ f6 u* o; [8 l  e. E! E t=a;a=a+b;b=t;/*這部分是程序的關鍵,請讀者猜猜t的作用*/
6 ?/ ?$ S( s- d2 q3 u! ` }
! `8 q  r9 s7 T4 h: ]( @( Zprintf("sum is %9.6f\n",s);/ g- E/ |' b4 G. J- [* o
}
# F% g7 J. F( b9 `5 K+ s* [# t' c) ]1 Y==============================================================
7 @! S8 ^8 k" `$ n! x* Z% E【程序25嵌入式學習企鵝要妖氣嗚嗚吧久零就要
3 x' S8 z8 k+ L題目:求1+2!+3!+...+20!的和" _* g! A  f. ]' S# m. y1 V
1.程序分析:此程序只是把累加變成了累乘。 3 j2 y3 \: e0 u$ f5 E3 N
2.程序源代碼:3 H( H' f- o8 ]5 F
main()
# s3 W" W+ g0 f0 [$ B# \8 `{
3 F  Z  h" V6 q$ w7 Lfloat n,s=0,t=1;+ @4 x7 u6 \) U8 i4 d
for(n=1;n<=20;n++)+ d6 D6 c, E" Q; i( ?
 {# u2 a+ s6 M7 P3 ]
 t*=n;
' x& G# K5 I6 D5 E; X2 I$ \7 z s+=t;
* y% S, K1 F' N0 r6 w: T }; u% {. n  o  Z: z5 ]/ d7 p
printf("1+2!+3!...+20!=%e\n",s);% e5 Z# l0 z- c8 T; x6 Q
}( D. r" @. m. j. T/ A* E5 e
==============================================================; u% }* K# n9 b+ }  a
【程序26
. w. V) t& @' p1 z' C: C' B8 A題目:利用遞歸方法求5!。% r( H, u6 r1 S: S
1.程序分析:遞歸公式:fn=fn_1*4!
7 b/ I, \; F4 o& [; ]  H2.程序源代碼:- f" M* Z5 ^3 J
#include "stdio.h"
1 y+ K- v( |' @7 {3 hmain()
: t6 D. ]  W! k; y7 v6 B{
0 [4 D* `* Z; A! Z- K! ], J' q/ D+ cint i;# u' L" l- `9 R8 i
int fact();! W4 z- M2 \3 @" [; X* F+ M
for(i=0;i<5;i++); V- z6 @0 i# f  U2 P: P
 printf("\40:%d!=%d\n",i,fact(i));
# t/ o% c/ i# ], A. N/ {. A8 S}
9 ]9 Y% T0 `# O/ t2 }int fact(j)
" e* c% B4 D$ @" a& x5 Sint j;- E" e* x( s. s2 I, t0 I, b+ w
{4 x* p* @' @, `; U6 O& I- N6 L
int sum;: w3 o& u- H7 h% c- C, O
if(j==0)% O7 \  T% v3 }0 n* M4 f
 sum=1;
  I/ u7 t) E5 r( O) Nelse
# J1 C, m2 y9 I) e sum=j*fact(j-1);  x6 o7 h% h/ V5 K$ _! C! P- r
return sum;) d8 o6 p0 f! k
}
+ ?! b! j  [, K4 G: y. g0 l* |==============================================================
7 U  C' {5 ~% k

作者: danxiaogui2017    時間: 2017-10-9 21:23
學習了




歡迎光臨 機械社區 (http://m.whclglass.com.cn/) Powered by Discuz! X3.5