久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

 找回密碼
 注冊(cè)會(huì)員

QQ登錄

只需一步,快速開始

搜索
查看: 3032|回復(fù): 1

C語言算法16-26

[復(fù)制鏈接]
1#
發(fā)表于 2017-10-6 15:41:14 | 只看該作者 |倒序?yàn)g覽 |閱讀模式
【程序16
# i! _8 t2 x0 E3 }2 r題目:輸入兩個(gè)正整數(shù)mn,求其最大公約數(shù)和最小公倍數(shù)。
0 S4 s' j  Z3 V
4 @/ l1 I1 P8 T! X2 I: z/ S
" F' o& M2 J$ X$ f3 s$ b, i2 @  ?7 M. _; Q
作者: zhlei81 2005-1-22 11:30 回復(fù)此發(fā)言
" T: C* w& a: ?, y0 d
! N/ p( b% h) x, ~; b3 \0 w  O--------------------------------------------------------------------------------
3 n# H) b& P# }. y+ \  \+ `! o: {: [' y* M
4 回復(fù):經(jīng)典C源程序100& ~+ V  B# r7 k; W* G
1.程序分析:利用輾除法。
* u7 b; A  d+ x2 c. J8 P3 {6 E1 p5 }* j$ _  H
2.程序源代碼:
0 }0 q- H: p8 G5 l4 |" p6 B' n2 gmain()   z3 {+ c( w" S8 C7 r8 Q
{ * s1 ?$ ?& p# p/ \2 W
int a,b,num1,num2,temp; ( D$ T0 G  C( _
printf("please input two numbers:\n");
6 Y3 L0 F3 ?: ~* V0 s, x2 Fscanf("%d,%d",&num1,&num2);
1 z! z' e: H; X) L, U7 nif(num1 { temp=num1; 4 u" \3 K! H, D+ t7 l
num1=num2;
* J' Q9 C( k$ N4 qnum2=temp; ' ]* V' N7 G  Q3 \7 t
}
/ C4 m5 ^  Y/ x# h0 ^a=num1;b=num2;
% y. ~/ F8 E& N. s5 I: g+ D. M# Z9 u4 Awhile(b!=0)/*利用輾除法,直到b0為止*/
* J- Z8 u- O5 U5 T{
  j+ {- @9 _+ ?& @4 itemp=a%b;
6 e7 g% O& `/ s8 Q# @7 ba=b; 9 Z; P; @/ P* @$ R6 b- b
b=temp;
2 s% g/ x, F/ I2 Z9 {/ `}
+ N0 N. ~7 m$ S) S* Eprintf("gongyueshu:%d\n",a); 8 d0 t) a% N2 b3 m$ F2 M! w
printf("gongbeishu:%d\n",num1*num2/a);
. S- ]) w7 q& E$ H: Z7 k} $ c0 |$ m4 C7 E6 |' B
==============================================================
: [% n& F! N( ?9 W% n【程序17. m4 K  B# s/ F" K1 A
題目:輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。 ( k* z) k9 r$ ~5 F
1.程序分析:利用while語句,條件為輸入的字符不為'\n'. * O7 v8 S5 W6 H0 ^

$ s9 e3 v  Y9 J2.程序源代碼: . U$ V8 @, x" H# k' j
#include "stdio.h"
7 U; S8 i# X* s; D* Hmain() " ], ~/ ?& h5 h4 d. Z0 {
{char c;
) h) f6 {& r0 j) C& ~! F& \int letters=0,space=0,digit=0,others=0; $ @" e5 m$ l6 O2 C0 A
printf("please input some characters\n");
7 a  b1 b) }% H% C/ L2 n8 _while((c=getchar())!='\n') 0 V8 b& H+ A% V* r4 Z$ F7 \
{
- A9 |% p# h& k2 yif(c>='a'&&c<='z'||c>='A'&&c<='Z') 1 W& @& P4 p; x, X' s0 g
letters++;
/ s0 _* i" X8 p) z" relse if(c==' ')   \2 |3 p2 y9 E% A0 M- I% j. k
space++;
: V5 o3 _1 V' _# |5 |/ @else if(c>='0'&&c<='9') . R* P0 E2 K" H4 l! S; Y+ f, ~# @
digit++;
6 I6 v4 W$ x$ s8 i1 m% welse ) N" c+ G) F" k# G
others++; " r; ^- A& |$ i3 A& t; \5 i/ B* X0 b
} 7 [$ W2 e% W" U  j
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters, " k, \8 s9 v2 s' F6 d8 J! d, E5 s
space,digit,others); ' f9 D& ^$ R) u" o& x# K9 z" U
} , Q2 L( s( D8 O  f/ a8 N6 S4 x+ c
==============================================================
. G2 f) u, ?3 u& l( Z【程序18# _6 t# F  j' Q# Q& O
題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個(gè)數(shù)字。例如2+22+222+2222+22222(此時(shí)
7 n$ z! l+ C. [2 B" x共有5個(gè)數(shù)相加),幾個(gè)數(shù)相加有鍵盤控制。 . r1 x( l0 M+ H. [! ]
1.程序分析:關(guān)鍵是計(jì)算出每一項(xiàng)的值。 + d$ m8 p4 _9 p  H, C. t
2.程序源代碼:
6 A' j( r7 m4 @1 F' a& L- B" S  Imain()
0 U  X5 e- t+ S{ / N! k" h- j. T$ a
int a,n,count=1;
: W0 q1 s+ s1 E4 C- ?; {long int sn=0,tn=0; $ ~0 s9 X* b- Q  {/ z& D
printf("please input a and n\n"); 2 o5 W' M7 V6 @
scanf("%d,%d",&a,&n); 0 C- g! M$ ~# u
printf("a=%d,n=%d\n",a,n);
0 w5 U/ u9 c5 ?" x7 j# c7 h' z1 Wwhile(count<=n) - U+ o# D4 G* ]
{
3 ~- f8 ~( q3 W% U) D. Htn=tn+a; , v4 ~0 O% ?7 O- c* z' C( y7 n5 Z
sn=sn+tn;
  v. U* G4 S2 v+ R/ Y2 U+ Aa=a*10;
6 J2 p. A/ h. ?+ z, U5 N! [- }; x9 t++count;
( N5 z- H0 V: p* ?4 N, p; g+ h: H1 R8 N} . Z: S0 c. ~: R3 V
printf("a+aa+...=%ld\n",sn);
0 t* v) j& `$ \. {1 d4 q, ^* N} , y' }8 Q* Q) ]3 D
==============================================================
3 H+ h2 e9 ~+ A: N【程序19
* J7 X2 e1 e7 C, ?; Y" t% t6 O題目:一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為完數(shù)。例如6=123.編程
0 H0 v3 n' M+ ^; j+ Q+ e找出1000以內(nèi)的所有完數(shù)。
# R4 L( ~& c; q8 |) c1. 程序分析:請(qǐng)參照程序<--上頁程序14.
: O) k/ N! Z1 m" w7 O2.程序源代碼:
, f% r/ s  _6 a* T" j0 gmain()   k& L$ }/ }/ v% I% N
{ ' }! M; D0 I/ p+ u
static int k[10]; ) W+ E# J& ~* W
int i,j,n,s;
  a' Z' N+ `  J6 P; J3 wfor(j=2;j<1000;j++) ( s. q( ]# N. u) e
{
. i$ ]3 O/ G' g+ h4 f8 v( V$ Vn=-1; ) A+ ]8 w  _- m
s=j;
: d1 c& ]3 w' F% \4 o8 w9 G0 Sfor(i=1;i {
6 u! w7 c) s$ k/ a# q. K, A6 ~if((j%i)==0) # N; B$ B. d* c( b
{ n++; / @. {9 b  N2 d7 N  ~. S9 {+ J* o7 d
s=s-i; 9 ~/ G+ V+ {  r9 v0 Y0 V
k[n]=i;
# a8 j! [! D  G$ o# U}
0 _# L, L% ]" y6 v} 2 K: @( O, b- K# h: s
if(s==0)
8 `1 {# b# I% ^" `* P+ n{
* W& W- x) U% M( L- vprintf("%d is a wanshu",j); ( [/ a7 [6 o- c
for(i=0;i printf("%d,",k);
% D) D9 Q1 }5 m/ |9 ]. Bprintf("%d\n",k[n]);
& A. ^& Z% z' \8 Y7 i# L* L} 5 O1 w) @2 G: y1 [3 z  R
}
- K1 w4 ?0 ^) o" j}
5 Q5 ~6 l' M$ \==============================================================
8 ~0 a  i0 Y" O  P! Q8 v【程序200 c" i( l) a- p+ p& y$ Y
題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 6 `' c& {+ R) N4 V
10次落地時(shí),共經(jīng)過多少米?第10次反彈多高?
& h: e) j6 U8 o- ^& l# {, U* F2 Y1.程序分析:見下面注釋
3 a3 V7 e8 \5 n2.程序源代碼:
8 ^1 W7 c- t' l, dmain() + f, f  p& k1 [9 ~
{
! l! c1 ]0 j7 w$ V7 yfloat sn=100.0,hn=sn/2;
! E" w6 c) U4 F0 ]7 Tint n;
" Y8 C6 n7 b* Qfor(n=2;n<=10;n++)
; A( F; ?- W2 z. Q  O" X{
: z9 o0 v+ _% fsn=sn+2*hn;/*n次落地時(shí)共經(jīng)過的米數(shù)*/
: L0 F+ J; \: W4 i4 [) Y! \1 Ohn=hn/2; /*n次反跳高度*/
1 Y1 f  G8 b# p0 ^7 U# o7 ?}
9 r. |) H; I5 ?0 B9 e! vprintf("the total of road is %f\n",sn);
9 E) V7 C  O2 z8 wprintf("the tenth is %f meter\n",hn); % q) ~; {4 T! ?; |- a
}
【程序21
題目:猴子吃桃問題:猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不癮,又多吃了一個(gè)
6 R' O2 V& |! ]   第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下0 K  _1 \6 B5 g4 S9 m5 S
   的一半零一個(gè)。到第10天早上想再吃時(shí),見只剩下一個(gè)桃子了。求第一天共摘了多少。
' Y; H4 W) ~, |# f0 S% J9 ^1.程序分析:采取逆向思維的方法,從后往前推斷。
9 s7 t, i* L6 W' G* ]$ ^- a) U4 f9 }2.程序源代碼:3 z4 @7 i$ @/ W- `% i  F) @( |' L2 s. }
main()
9 w. i! ?+ K- ~" Z{
& [6 I4 L& \. E% d. {4 y6 A  bint day,x1,x2;! A6 E6 n- s! F; e: {' Y
day=9;( X( q# X" d8 B' @1 [
x2=1;8 Q2 d, w+ m# y8 n1 h  @5 x
while(day>0)# c/ H; {1 I' o  u
 {x1=(x2+1)*2;/*第一天的桃子數(shù)是第2天桃子數(shù)加1后的2*/
0 B! v3 [( \$ ^/ g7 S2 m- K) W- I x2=x1;3 O2 H( O, B' k( [' \
 day--;) o' P. b6 l/ w4 [+ [
 }
6 N7 L0 ]8 P) J& v2 hprintf("the total is %d\n",x1);+ L# ]/ I0 b- }& s1 r
}
6 i+ i& y5 ^! g' t8 k# F+ `==============================================================6 x2 R8 r" S% @
【程序225 l. L8 `$ l* i# ]1 @& R
題目:兩個(gè)乒乓球隊(duì)進(jìn)行比賽,各出三人。甲隊(duì)為a,b,c三人,乙隊(duì)為x,y,z三人。已抽簽決定% t8 h/ |# H- \& Y9 B
   比賽名單。有人向隊(duì)員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請(qǐng)編程序找出
% J$ {2 |' M# m7 F8 _2 |8 A% V   三隊(duì)賽手的名單。
; A) a! }% r. L" E) {( n8 j8 C1.程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2sqrt(這個(gè)數(shù)),如果能被整除,6 `3 s  j$ J& @& i, d2 ^9 f' \
      則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。       
( f8 p3 M2 v/ \2 W: R/ z2.程序源代碼:
+ O. U3 u/ A/ Y( r! Nmain()2 `9 h: ]* h, p
{
+ n3 E$ x) l' Q0 i- t" M! dchar i,j,k;/*ia的對(duì)手,jb的對(duì)手,kc的對(duì)手*/! C( l  f5 R# k* l: R
for(i='x';i<='z';i++)
& y; h* q# ^+ Y  Y* I8 h for(j='x';j<='z';j++); P1 S; h2 G  t: q8 y4 @
 {4 b5 f9 F6 h) o! V
 if(i!=j); I" p6 e, C: d" J6 q) k  U
  for(k='x';k<='z';k++)
0 ]5 W* }* A3 s& H6 F4 Q  { if(i!=k&&j!=k)* \: A7 K2 j% h; b% h
   { if(i!='x'&&k!='x'&&k!='z')
4 _- E* h" c4 k! K; H9 Z( f- i, p9 J   printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);1 U3 m0 o) M2 r& M
   }
, P3 b/ I! o: A$ r7 n/ h: Q  }
+ ]1 R$ u+ n6 w% U8 H% J8 w5 b }
2 D: B" O* j- ~1 n2 i) q. ~2 r}& \4 V% t& V- s; I1 Z$ G
==============================================================
: V- ]: i, g0 q; w* z; {【程序23, D, k) F' H' M" I  B( ~# X
題目:打印出如下圖案(菱形)
*
* R: K! @8 j5 {  J. i***
; w. S/ W) U# s/ j6 F******1 P/ b# r, N% C# @. O4 R, ^. O
********' g+ h# \$ b: z# D
******
( f0 y- S3 @6 T# T. p***
. j! s2 ~9 `; ~& ?6 q' E*! a0 |; c& d4 _  e3 K
1.程序分析:先把圖形分成兩部分來看待,前四行一個(gè)規(guī)律,后三行一個(gè)規(guī)律,利用雙重
! w& n( h- V; g  Q( p# \. f      for循環(huán),第一層控制行,第二層控制列。
, B8 r& c: u0 K  e$ r& I% \% p/ E2.程序源代碼:
4 M8 l" v% b" f) N7 j) C) q# `main()) U: O$ g3 i6 A- C% g+ M' m
{
; k3 }7 d& J: ^% D& a* dint i,j,k;
+ s9 v. @$ b* s  r+ W" [4 cfor(i=0;i<=3;i++)
( E% @  W; O4 @8 U* M/ {. V {3 @- a. k& Z/ T5 |9 F+ v  Q
 for(j=0;j<=2-i;j++)
: J/ R3 Y! W- j0 z4 R& k' ~  printf(" ");
9 N4 N& J2 I* p. x1 c for(k=0;k<=2*i;k++)6 Q2 B7 y" k0 f6 W/ F2 A. n% I
  printf("*");5 U2 h# c1 m* [* l2 J8 U4 |
 printf("\n");! G0 x0 k+ r" Y+ A6 s+ B" H
 }
  B- e  y+ J6 X' F- Hfor(i=0;i<=2;i++)! V  R1 Q; Z- o5 O
 {+ ?3 R" Y  g: E! d, F
 for(j=0;j<=i;j++)
1 d0 `( d' |: D" H+ E2 I  printf(" ");4 X6 S! Q. Q2 K* e/ |' J6 Q# E4 \
 for(k=0;k<=4-2*i;k++)
# u% f& E# M$ J* J  D  printf("*");2 W) K# Y* `3 }8 W( w, b
 printf("\n");
( `  v( ?8 Z' V5 Q) {3 y }! x* C3 O, c  G5 @+ M$ X  i0 e; \
}
4 R+ B9 Z" j/ ]5 l- F' c9 Q1 M7 M==============================================================4 S5 a. o  G6 J
【程序24/ U% K' ^( ~- s% i# ?
題目:有一分?jǐn)?shù)序列:2/13/25/38/513/821/13...求出這個(gè)數(shù)列的前20項(xiàng)之和。
( M, K2 G" g( N1 P2 Y1.程序分析:請(qǐng)抓住分子與分母的變化規(guī)律。 % s! M8 y, N0 {; Y0 ]- }$ l; F) X/ n
2.程序源代碼:
8 n) h! |7 R+ B; b* Rmain()& h" u: Z6 m( `5 S
{2 U% C& ^0 J/ K& I% K& ~. f
int n,t,number=20;5 d. f/ o; y- H% ]
float a=2,b=1,s=0;
' `2 p) \$ `/ ~* qfor(n=1;n<=number;n++)
- u0 _" I; X. @1 F; ]3 N9 {* p {
' {9 q9 x7 O! h# T) x/ C s=s+a/b;
. \; @: y9 G2 x, S  P4 i7 A t=a;a=a+b;b=t;/*這部分是程序的關(guān)鍵,請(qǐng)讀者猜猜t的作用*/
! D' L* y. X8 T( T0 d9 J' c }5 g* W4 E! B0 _' }
printf("sum is %9.6f\n",s);% y. ^& f7 ^4 E8 }4 s8 p
}# s5 C# I: z2 I% r# [; {9 {
==============================================================
' ~7 }9 z/ ]' }【程序25嵌入式學(xué)習(xí)企鵝要妖氣嗚嗚吧久零就要  k! Z: V7 q0 e( P& |1 i3 e
題目:求1+2!+3!+...+20!的和9 @! Q# R+ y1 r% L8 b- |1 z
1.程序分析:此程序只是把累加變成了累乘。
. {$ A, E1 V8 z+ Z" X! Q" D) g3 ]2.程序源代碼:' Z& w0 U. j; l1 G
main()2 o6 q/ m7 P" `" @% ~8 n% N
{
2 t; [3 {2 [' D# vfloat n,s=0,t=1;
( k, |( t/ r' E5 @: Nfor(n=1;n<=20;n++)
! Z6 X! o  v- w {
8 h) B1 N9 R" x( ]' \  N t*=n;+ i4 N; h9 J; E  o9 B2 j
 s+=t;$ a; }. S& z+ y: h+ L
 }
& g: X5 }4 \8 P; J8 Yprintf("1+2!+3!...+20!=%e\n",s);
" _0 q1 l0 c, Z% x& V}$ w4 R! ?  z. Z/ h* t' C
==============================================================
7 T5 ?1 u6 i# r8 v0 @$ A【程序26
" N( u+ I" F: r9 M$ v題目:利用遞歸方法求5!, P) L9 _' o4 \6 D; ~  E. D
1.程序分析:遞歸公式:fn=fn_1*4!. a! n$ O: ^5 F1 h
2.程序源代碼:
* `2 g9 R$ l$ s#include "stdio.h"; z; E- K6 g- T* `
main()# o9 Z# Y0 Q6 w& l  I  t3 _3 [
{
) F! \4 D" a0 v- [. J# vint i;
+ T5 D7 Z: E- H6 h4 Aint fact();1 k6 ~- D, N( _# x" s, L
for(i=0;i<5;i++)
$ _& U3 K- G# O2 b printf("\40:%d!=%d\n",i,fact(i));
( M" n. r$ M, Q. A1 w% n}
4 V$ A& V$ f; J. X7 u* Fint fact(j)
; G( {6 @8 _% w" f5 g+ j$ l! r& _8 nint j;
( A' g, }+ @' u1 q+ J+ [9 F* k{
; f$ ?% X5 C, M8 ]9 c$ _) V& `! e9 Qint sum;
% Q. R1 g6 P0 \if(j==0)
, d& \' [2 \5 f7 o) ^ sum=1;
) _5 k1 B" l% }! F; D2 O; Belse
+ G' L0 o3 y! t3 N/ W% G sum=j*fact(j-1);; d: i9 }; P: t: f0 g0 g' \' h
return sum;
' H$ V" w! X- x; s7 G2 X5 i' `}3 \* M$ ]# s, C
==============================================================

6 S. q  W+ ?8 I* }, I
回復(fù)

使用道具 舉報(bào)

2#
發(fā)表于 2017-10-9 21:23:19 | 只看該作者
學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

Archiver|手機(jī)版|小黑屋|機(jī)械社區(qū) ( 京ICP備10217105號(hào)-1,京ICP證050210號(hào),浙公網(wǎng)安備33038202004372號(hào) )

GMT+8, 2025-7-23 00:14 , Processed in 0.073982 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復(fù) 返回頂部 返回列表