国产日韩欧美久久久精品图片|国产综合有码无码中文字幕|国产一区二区综合视频|国产亚洲精品电影网站在线观看|国产精品一区在线

機械社區

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 2936|回復: 1
打印 上一主題 下一主題

C語言算法16-26

[復制鏈接]
跳轉到指定樓層
1#
發表于 2017-10-6 15:41:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
【程序16
. d) W5 ?! k9 B: J題目:輸入兩個正整數mn,求其最大公約數和最小公倍數。 # Z9 l6 J! g7 ~* h6 }
. k3 U7 E9 u$ d' ]. o

4 m$ u3 z  o/ A9 |- T0 Q2 |
3 {2 k- ]* `3 M; X/ A: _0 u: a作者: zhlei81 2005-1-22 11:30 回復此發言   b# o- a; i3 D, ]& i) ?
& m5 J1 G  C# s" T+ C1 s
-------------------------------------------------------------------------------- 0 D" r' f8 H6 U) }5 [

: {% ]1 F) f6 r6 X( }4 回復:經典C源程序100
9 T* v. o& `& f8 S; ]1.程序分析:利用輾除法。 - H$ A, C- M0 K4 {6 u: v) A

6 _) e( {8 u7 h2.程序源代碼:
& h7 ?7 |( q/ u# t  pmain() ! ~& Y. L+ W9 v+ w. @7 Y6 P  k
{
* X- [0 M: @+ ~int a,b,num1,num2,temp; + M) Y) _  A& E+ `2 u
printf("please input two numbers:\n"); 0 o0 j4 {. }8 l5 W( x4 \
scanf("%d,%d",&num1,&num2); ! p$ f7 K) h( P- I: C
if(num1 { temp=num1; * D$ l9 A1 c# J  E# Q1 D
num1=num2;
. Y* u) x+ E2 O1 B5 E. |num2=temp;
2 B* O% h, l  N  {2 Y} 1 U8 n7 Y1 b4 A. D* Y- `- A6 ^
a=num1;b=num2; & r; v3 u* O/ R0 [
while(b!=0)/*利用輾除法,直到b0為止*/ ' b3 M" C1 i' Q' P3 E9 Q. o4 B
{ % {1 |2 Y/ G( Q. Q7 x
temp=a%b; 1 K) J1 {1 L' u
a=b; ' \6 b+ G* a. P6 _) l$ c
b=temp;
" D% o0 K8 H( A6 I} - H8 K$ o7 n4 \; J: h
printf("gongyueshu:%d\n",a); ; g1 T. R( N( j0 f% ~; r
printf("gongbeishu:%d\n",num1*num2/a);
1 N# D3 V! S1 |) U}
0 k/ z7 S& d0 S. e( W6 X& |  A2 e============================================================== 7 Z. X6 K, t0 n# n  e. p! n  A
【程序17' d: q8 Q. D6 D6 u
題目:輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。 * Q2 N  c4 H( f$ X) @
1.程序分析:利用while語句,條件為輸入的字符不為'\n'.
7 s# g& E) A/ |8 T5 [0 h7 N5 x
6 O& m( J% |, ~" i& Q0 t2.程序源代碼: / d( Q' i+ R5 j* i% r
#include "stdio.h" 1 F' Z: Z+ P3 Y
main()
9 a! J# U% h3 y) K5 |9 O{char c;
1 @; L% F; ?- v0 l: Wint letters=0,space=0,digit=0,others=0;
+ s( B- I3 Z" ?4 C. _, cprintf("please input some characters\n");
. g& b$ n0 L& g2 H3 j0 ~8 ^7 U1 _while((c=getchar())!='\n') ; r7 k9 k- P9 k" ]. Q. i! E: W  X, M
{
0 M$ n) r3 |2 H% gif(c>='a'&&c<='z'||c>='A'&&c<='Z') $ x/ |' E1 B$ C% ]! `
letters++; % C8 i" X$ b) ]% w
else if(c==' ')
7 b  w9 m! ?- }7 q9 f2 Bspace++;
3 k$ r8 q/ R! Melse if(c>='0'&&c<='9') - ?; E9 n- X, P) M2 i
digit++;
( T- n, X$ V. d4 }else 7 g, U6 |& i1 k' h& p- S
others++;
" V: G& d7 q. n% X1 q' R( D}
' y% {4 n! L3 G+ W/ R8 xprintf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
8 x- V5 d  l( h3 |- u2 U, J1 K. ?space,digit,others); ) h+ ^6 @  ~) z
} ' m, b( h, L; d. m' k, N4 @
==============================================================
/ p8 w( ]4 F! r$ X【程序18
9 G/ r7 E  m8 A9 R) X4 I# z8 D( L題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時
, Z4 K1 s0 l1 {- J  b3 m共有5個數相加),幾個數相加有鍵盤控制。
/ D5 d  s# W' Q! K: ]0 k( W, s' k1.程序分析:關鍵是計算出每一項的值。 * Z0 y8 v! ]6 T6 w* y6 q. m
2.程序源代碼:
- B! V# g1 q+ Q" |% E. V% Rmain() * s: K$ I% q' B# J  @
{
0 {: T; ~+ J6 L+ [$ B/ \3 Fint a,n,count=1; 0 L6 s) S6 x: _/ F
long int sn=0,tn=0;
. L/ J+ u8 U* i- d! r* l9 m( X  aprintf("please input a and n\n");
. d8 p5 y; e* J) @  r' gscanf("%d,%d",&a,&n);
; Q( l- }/ |2 Cprintf("a=%d,n=%d\n",a,n); # f) N" G# ~3 |8 s0 s# @2 [- l
while(count<=n) 7 c  n  n5 C3 \: v. H( n
{
  O" C$ W: c! o) D# O" [( X8 Ctn=tn+a; ! y/ `( B; C3 F( p0 Z
sn=sn+tn; 9 r5 A+ ~% W/ X' @, K* {1 O
a=a*10; 2 V, ?, ~% t( Y% I; T- X
++count; / p/ E6 p( \. e1 `5 S
}
3 }1 F/ G( Z) X: a' {. W. [printf("a+aa+...=%ld\n",sn);
6 V$ m+ K' ?# g" k# m4 \% b}
% b0 C# u- D3 N. s  m- P; w  u==============================================================
" g7 r9 m0 A+ i. e7 V4 X7 _# f' x【程序19
( S8 e7 ]" p+ p/ b3 h題目:一個數如果恰好等于它的因子之和,這個數就稱為完數。例如6=123.編程 - |# y7 J9 k; N" J
找出1000以內的所有完數。 5 k  R9 @3 L) G2 `
1. 程序分析:請參照程序<--上頁程序14.
! X" f* L2 `0 Q- L/ r. o+ U% q0 ?' p2.程序源代碼:
/ M$ D5 Q  R0 A) \3 nmain() & m$ ^6 N: g" V7 T& k8 s3 u; B# G
{
) z' E: c+ l/ t  M) n5 Sstatic int k[10];
. Z) b) F0 g0 H( Cint i,j,n,s;
& Q, |. B) H1 R" M& }for(j=2;j<1000;j++) 3 _$ K) H1 B" t) D0 A$ x" k
{ % [) t! ?8 @$ j. ]
n=-1; 9 W9 Q/ q4 W! m
s=j;
' I2 B0 x8 ^  T* f0 pfor(i=1;i {
- G: [+ R0 W  I6 S  o! u7 eif((j%i)==0) / @  r( l: W. I, K6 ]' p, O
{ n++;
: Y1 F$ g3 P; Ns=s-i;
% `7 u  }% x8 d/ n0 o- U0 O- \k[n]=i;
. B, @: U/ O  B! s9 J+ E  M6 e" [}
% m% {( Z2 ?; K% W9 g} 7 f' J9 B, m  h( u
if(s==0) : z3 Q, [5 p  J- N, Q& o
{ 6 _! L; c7 G+ H9 }0 Z$ Q9 {& R
printf("%d is a wanshu",j);
5 Y' q2 L  w* x$ dfor(i=0;i printf("%d,",k); ' d! u+ Q0 x3 w/ [  U, }/ \3 q
printf("%d\n",k[n]); 3 d6 d& D7 l. Z1 Y, k9 |+ O
}
! j7 l6 z/ c. T: r) T* j}
  O  b$ @$ e8 t# q1 p} & E+ Z% p+ L+ D/ o
============================================================== 2 s! b% V9 e( n& ]- k
【程序20
5 k! m4 ^1 _% p/ K( K" m+ N8 d5 h題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 " s- U4 h, k: C. \
10次落地時,共經過多少米?第10次反彈多高? 3 D. [# E; }8 Y; x, S
1.程序分析:見下面注釋
3 Q2 t/ m6 Y$ u* d; C" }0 B2.程序源代碼:
7 n+ Y: ~  h& ]+ w6 D! Hmain()
/ J8 \9 Z) K) }4 z# K{
, @1 H  Y/ z; N* A1 Tfloat sn=100.0,hn=sn/2;
% a% n0 q2 |& Y- H* j; o1 N& Lint n;
6 h. A  I8 Z9 ^- p8 k! ^! Q2 {for(n=2;n<=10;n++) ; _; l& f4 P$ _: j- T
{ . u: W% R! h: @
sn=sn+2*hn;/*n次落地時共經過的米數*/ / f4 `* s9 R. c: r
hn=hn/2; /*n次反跳高度*/
' V  A; a1 C& r- F/ e1 z8 u- K0 x) ^} 2 A# F- T" T! i* F& y1 Q2 H' B
printf("the total of road is %f\n",sn);
* Y: d6 ~0 o9 {& f- h8 j0 Zprintf("the tenth is %f meter\n",hn); 8 j) T; s) B. c) E; }; `; W
}
【程序21
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個
0 g3 X- N# V2 @/ I   第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下, G: c; L& Y$ y  @
   的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。4 U$ n9 \3 v6 V, `  F
1.程序分析:采取逆向思維的方法,從后往前推斷。
) \: I  N% s5 M$ Z7 a; A2.程序源代碼:
6 i* K8 c: i4 A0 ]* V4 w- nmain()3 T: |6 h* E! Y9 r
{
) p+ O  L1 G) kint day,x1,x2;0 A0 O% w2 ?, f) n
day=9;
# Z+ w2 x6 u+ xx2=1;( k  v. }9 r6 f' Z* Y+ c5 ^  u
while(day>0)2 L* ^; Z1 X2 d  @: R( Z8 _
 {x1=(x2+1)*2;/*第一天的桃子數是第2天桃子數加1后的2*/# ?/ }5 y1 A4 G( s! K! x
 x2=x1;4 L7 O( Y5 C$ Y; J; F4 x
 day--;1 w6 y; a2 d" E1 l, |" L8 U
 }
3 _; Y2 i  l( d5 e- Bprintf("the total is %d\n",x1);4 ]! q" r: z2 ~' R6 U8 S8 G6 q
}' x* ^7 ^' Z' B2 ~  ~
==============================================================
# f1 t. z! a5 R【程序22
- g) q  |) i: b3 P- K" K題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定# t# {. F6 y$ S* G! y
   比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出+ Y. r0 _1 B. g1 ]
   三隊賽手的名單。
0 R: [+ n8 v  J# _( R: P1.程序分析:判斷素數的方法:用一個數分別去除2sqrt(這個數),如果能被整除,  l& _, p* ^0 Z# }4 V+ m
      則表明此數不是素數,反之是素數。       8 A- f* H% U$ I9 D1 t3 ?) f
2.程序源代碼:
3 e, J# O0 H- Y3 t3 Gmain()
! e  V: H7 h! `5 j' R{
/ C" H9 v1 _! Z2 U5 m/ pchar i,j,k;/*ia的對手,jb的對手,kc的對手*/1 n+ A2 n+ j7 h* }
for(i='x';i<='z';i++)2 e( w* P  y% g! D2 E& F2 L2 s7 F
 for(j='x';j<='z';j++)! U* ^& Z1 z/ n  D& o
 {- I5 f9 M/ p1 g& b& e/ F
 if(i!=j), M: W, Y5 U4 P" K
  for(k='x';k<='z';k++)3 x' ?! ~8 x% F  E) z8 Q, K
  { if(i!=k&&j!=k)* f* q: l8 \8 k' f* h8 h
   { if(i!='x'&&k!='x'&&k!='z')
+ l5 T9 h0 J& }* F  ^   printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
9 _, d# J. j% l  z' t5 w   }
0 E. |$ n6 n% E' |$ e5 N  }8 d2 P, K; R- B, Z8 ?5 z
 }: x8 ]* ]8 s1 `8 J* Q. r9 f
}
/ s* T1 U6 h5 ]" T8 o+ \==============================================================7 }: B4 Z3 E4 s5 n/ {$ S1 h
【程序23
& Z8 f1 k, p9 U' b8 m! N題目:打印出如下圖案(菱形)
*
5 i8 X/ j, Y! p$ l+ r& y***$ x: C( T2 ?. _
******
- h* y: p5 v* R) w3 w& o2 x% ~********
. @( d3 H; c0 z******2 M: O' D% ^0 p' b2 f  [' s$ {: l) A
***" D9 C% e  h7 G. O
** r: `. K6 m. h
1.程序分析:先把圖形分成兩部分來看待,前四行一個規律,后三行一個規律,利用雙重6 a& w; e  ]7 N
      for循環,第一層控制行,第二層控制列。
- N" O2 [# y: J( q2.程序源代碼:
. e7 M4 E  o; l+ M8 kmain()9 r; ]% W- r( c* O% m3 n, Q' k
{& ^& t* v# g+ d0 {6 ^
int i,j,k;
( A0 X3 z: Q2 U7 p% Q$ s" r7 ?: Mfor(i=0;i<=3;i++)' G+ i6 M/ f" p6 Z& Z3 k
 {4 w1 t" j' T9 f9 q) u4 n# K
 for(j=0;j<=2-i;j++)
; X4 W! p& Z# d: I  printf(" ");
$ e  `, u/ }% |& d/ A# A& c for(k=0;k<=2*i;k++)! h0 P5 V1 Q0 E: K! x# I
  printf("*");) ^6 ^8 y; F; I# O' {* Q7 d* l8 f. s
 printf("\n");0 D; z, W# U1 Q4 y- I
 }' U; I0 x. V9 C0 l
for(i=0;i<=2;i++)7 f3 Z) U5 v( |0 F- C% ^; k
 {
& Z- F# K2 f4 U/ R6 n( Q  R for(j=0;j<=i;j++)
7 `# s* X+ Q5 Q2 K8 B  printf(" ");' f5 ?+ J" L. T
 for(k=0;k<=4-2*i;k++)& `9 L# _- _  o4 [# Y
  printf("*");) c: G* R' X+ Y' N# X' y
 printf("\n");
) n7 F- r. F2 V8 q" Y" Z }6 q7 J0 ^( J. T: `4 j( V5 h
}
0 ~( p0 x* S& x3 h+ y: u==============================================================  u( g+ g, j, e  n1 t2 b
【程序24' ^) o. M" B0 U# x- J
題目:有一分數序列:2/13/25/38/513/821/13...求出這個數列的前20項之和。
* m2 H. l* i( j  u1.程序分析:請抓住分子與分母的變化規律。
! n( ^1 ]8 S1 G, [$ o2.程序源代碼:
5 _+ x3 M8 Z% Gmain()$ U+ d* ?! Q6 n& J2 A
{
8 \6 L8 x  t! X6 M( {int n,t,number=20;, }, {' i% T. M& V* \9 T3 X
float a=2,b=1,s=0;
9 [; ~! h4 P* d; k8 s. F3 z. z- |for(n=1;n<=number;n++)! I! A0 j& a4 @0 M, P9 q4 P
 {
( ]0 w& ]- |: Q* f5 O s=s+a/b;: w8 p7 w: q; ~* @" j
 t=a;a=a+b;b=t;/*這部分是程序的關鍵,請讀者猜猜t的作用*/2 A4 h/ s& e( v. v3 V) Y5 T$ [
 }
( m; H7 x- D. v- }printf("sum is %9.6f\n",s);
5 m+ Y0 d# Z: @5 d}, v+ M- h% x  z7 V
==============================================================; ~6 ^: z: {, ]: X: @2 h4 v" x
【程序25嵌入式學習企鵝要妖氣嗚嗚吧久零就要
" u7 I" d1 z  b- N6 K0 m題目:求1+2!+3!+...+20!的和
: @# W1 U" S6 K* \- h1.程序分析:此程序只是把累加變成了累乘。
9 A2 P/ g- B% n! X  C. Q2 b2.程序源代碼:8 F6 D0 I8 M" R4 `/ {. `, e- \
main()$ K! D# Y0 r2 i8 d) G+ A
{
. h! I) q; _" b" z& \float n,s=0,t=1;: K9 C7 \3 U( J2 @
for(n=1;n<=20;n++)% a' Y$ k- x, k$ z  \- L
 {
- [: y1 w7 l3 p! t# } t*=n;$ `8 {- E, U7 [# g; T! o. }
 s+=t;/ e2 \+ T. R" I
 }
- q8 w# c1 ~9 \; H$ ?printf("1+2!+3!...+20!=%e\n",s);
2 m+ i, z* S) A. |2 G}
- l2 B( L7 d: n- |/ f" m: d5 P==============================================================
# \6 [6 y2 u( W; ~1 L% j4 y0 x: S: u【程序26
8 l) z; L8 Y* x3 r% }  W9 O  W+ _題目:利用遞歸方法求5!
4 P0 g& N! q4 ~8 F5 N! C9 C$ ?1.程序分析:遞歸公式:fn=fn_1*4!4 ~8 s5 Q* n, R' d) N
2.程序源代碼:" A& A7 B: N. c. p, x0 f! T
#include "stdio.h"  u1 I6 B- [% c; Q0 c
main()
2 S4 a) h, d0 V% a# d( k{7 O: ]& q1 k, i  d3 Z# i
int i;
4 b+ P* w8 {* zint fact();! N0 p) G8 N5 m+ i. U) _4 O
for(i=0;i<5;i++)* b3 ^! J% e3 A% P* L
 printf("\40:%d!=%d\n",i,fact(i));: ?# c& N2 N1 j; ^% I7 M. n
}
; y0 Y7 t% Z# [7 q, \- u) S9 bint fact(j)
1 g5 A/ E# E2 [7 Y3 n( Uint j;
- k7 S- M; Y$ f" j{
: _: G7 w$ T/ Y9 [( Tint sum;9 @1 I; Q7 d. y/ X+ i2 O4 ?' d* k" L
if(j==0)) U$ \4 N) B, @+ ^/ Q/ d/ v
 sum=1;
  g& h" D' o7 E. J/ E* belse" v' R8 V- [. Y7 e
 sum=j*fact(j-1);9 A* q( x7 S1 o- v1 v& P: M' Z0 n% @
return sum;" {; ?# J  k1 I, {6 q$ B
}
! F! v( ~7 x* ]; h8 c) S( v8 F$ ]==============================================================
) J" s0 z5 l5 T; I3 N4 o
回復

使用道具 舉報

2#
發表于 2017-10-9 21:23:19 | 只看該作者
學習了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

小黑屋|手機版|Archiver|機械社區 ( 京ICP備10217105號-1,京ICP證050210號,浙公網安備33038202004372號 )

GMT+8, 2025-5-7 17:58 , Processed in 0.055983 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 上海少妇高潮狂叫喷水了| 亚洲福利手机免费视频一区二区| 国产毛a片久久久久无码| 无码国产伦一区二区三区视频| 精品一区网站在线观看| 久久国产精品免费一区| 99爱国产精品免费高清在线| 色综合天天综合网国产| 国产伦精品一区二区三区| 国产午夜精品一区二区三| 超碰人人模人人爽人人喊手机版| 精品久久久久久久无码人妻热| 熟女少妇av一区二区三区| 亚洲中文字幕无码av| 2019最新国产不卡a| 人妻少妇精品视频无码专区 | 色欲网天天无码av| 亚洲女人自熨在线视频| 小泽玛利亚一区二区免费| 无码人妻人妻经典| 色一区色二区色三区色四区| 成人国产一区二区三区精品不卡| 国产精品高清一区二区三区| 色呦呦国产av一区二区三区四区| 亚洲综合日韩久久成人av| 久久精品第一区| 日韩伦理一区二区在线观看| 亚洲国产av区一区二| 亚洲自偷自偷在线成人网址| 国产边打电话边被躁视频| 国产素人一区二区久久| 精品久久伊人99热超碰| 亚洲一区二区在线日韩| 少妇无码av无码去区钱 | 精品久久8x国产免费观看| 爽爽精品dvd蜜桃成熟时电影院| 综合激情区视频一区视频二区| 欧美xxxx性bbbbb喷水| 中文字幕人成无码人妻| 亚洲午夜福利在线观看| 亚洲欧美国产另类va|