機(jī)械社區(qū)
標(biāo)題: C語(yǔ)言經(jīng)典算法100例 [打印本頁(yè)]
作者: tainqing 時(shí)間: 2017-9-22 09:34
標(biāo)題: C語(yǔ)言經(jīng)典算法100例
【程序1】
g* u2 f% z+ D. l0 L$ H' s題目:有1、2、3、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無(wú)重復(fù)數(shù)字的三位數(shù)?都是多少?
0 X9 `8 A& z* z( R' x8 k }1.程序分析:可填在百位、十位、個(gè)位的數(shù)字都是1、2、3、4。組成所有的排列后再去 8 }4 v- ?$ g5 ?& I: h2 W
掉不滿足條件的排列。 2 \2 ?9 Q& S4 S
2.程序源代碼:
( T/ q( L2 r2 u- {6 ]main() {
8 H6 h0 u; a& z/ oint i,j,k; * }9 K1 v8 W' }# Q7 z9 r$ X
printf("\n");
0 R8 R# |8 W* x/ Z; w6 ffor(i=1;i<5;i++) /*以下為三重循環(huán)*/ `6 J! h# W; n5 J1 X8 x- e! o: v5 Q6 H
for(j=1;j<5;j++)
" B! j/ S9 x% M8 z- Ofor (k=1;k<5;k++) { ( E/ t# g; f5 T1 M4 s7 k$ e# L
if (i!=k&&i!=j&&j!=k) /*確保i、j、k三位互不相同*/ + M& y8 N; ~6 r+ H F7 |& |
printf("%d,%d,%d\n",i,j,k); }} , S* v {$ L9 p! P* _/ V
============================================================== % `) ^: I6 o5 K! `
【程序2】 4 g- o6 ?1 e# a0 `" G
題目:企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)(I)低于或等于10萬(wàn)元時(shí),獎(jiǎng)金可提10%;利潤(rùn)高
/ _( @) V' W$ \' ^) Y6 K于10萬(wàn)元,低于20萬(wàn)元時(shí),低于10萬(wàn)元的部分按10%提成,高于10萬(wàn)元的部分,可可提
6 i! Y; W4 H4 i; _4 M ]成7.5%;20萬(wàn)到40萬(wàn)之間時(shí),高于20萬(wàn)元的部分,可提成5%;40萬(wàn)到60萬(wàn)之間時(shí)高于
+ ^/ B+ C I3 t0 ]40萬(wàn)元的部分,可提成3%;60萬(wàn)到100萬(wàn)之間時(shí),高于60萬(wàn)元的部分,可提成1.5%,高于 4 w8 J# ~$ `0 O
100萬(wàn)元時(shí),超過(guò)100萬(wàn)元的部分按1%提成,從鍵盤輸入當(dāng)月利潤(rùn)I,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)?
- @% G6 }8 V" r/ C5 d @. o% h1.程序分析:請(qǐng)利用數(shù)軸來(lái)分界,定位。注意定義時(shí)需把獎(jiǎng)金定義成長(zhǎng)整型。
% C9 m( c2 U3 P/ X- F. u( ^1 h2.程序源代碼:
K, p1 T# H" T/ z) b0 z; n- e0 h! vmain() { 8 b2 Z `0 K+ |: o4 n2 ~% q
long int i;
p6 m! @, h; s0 Y6 zint bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
) T4 {; n+ v+ v. mscanf("%ld",&i); , J+ ~) s' U7 a% u( r
bonus1=100000*0.1;bonus2=bonus1+100000*0.75; \! w; m2 O9 O* p* A% {$ f R
bonus4=bonus2+200000*0.5;
1 W# E- x: ~0 fbonus6=bonus4+200000*0.3;
. v; K9 ?$ I, G' R: j7 J/ m. Ibonus10=bonus6+400000*0.15;
6 c1 U( O$ c4 P, s& w+ W5 ~8 F* bif(i<=100000) - @+ Z8 ^: }8 f2 S
bonus=i*0.1;
, z. f! }( K! ?% z& j: Zelse if(i<=200000) 9 V" n- ]" k$ y7 @# ~
bonus=bonus1+(i-100000)*0.075;
; x: L- H5 G+ }else if(i<=400000)
7 h" m/ G0 {# M" sbonus=bonus2+(i-200000)*0.05; 9 R9 h5 z$ c0 x" O, t7 g
else if(i<=600000)
; i0 ?+ H( J1 c" Wbonus=bonus4+(i-400000)*0.03;
% x4 w9 j1 x# {" G& u" qelse if(i<=1000000)
4 B. ^( ?& i1 W! H9 ^% T* ~' z$ obonus=bonus6+(i-600000)*0.015; / @4 K3 n( M0 {( d; S
else
1 `: |0 g* l# |! u( W% ubonus=bonus10+(i-1000000)*0.01; : M! \- y Q; V" q( }
printf("bonus=%d",bonus); }
7 s K$ h1 o# ]: f4 d$ i9 I; D==============================================================
4 H* s x) s$ v( E【程序3】 * o; x; k; f* J7 C; Q& B0 [, A
題目:一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再加上168又是一個(gè)完全平方數(shù),請(qǐng)問(wèn)該數(shù)是多少? ( f) `8 o. a, e# \% O; p9 ?$ d7 a: O
1.程序分析:在10萬(wàn)以內(nèi)判斷,先將該數(shù)加上100后再開(kāi)方,再將該數(shù)加上268后再開(kāi)方,如果開(kāi)方后
v0 y" d H6 b3 F8 b的結(jié)果滿足如下條件,即是結(jié)果。請(qǐng)看具體分析:
' m# C9 \4 O: c5 Y, N" p: L2.程序源代碼:
0 x6 O8 @3 L1 L: x* L#include "math.h"
3 s' |( s" M# Y; _) imain() { * C* _4 U$ C- A8 J: b' n) B% J
long int i,x,y,z; 1 k* U+ W$ K! i- d
for (i=1;i<100000;i++)
. r: U2 B- ^% f6 _) O6 N{ x=sqrt(i+100); /*x為加上100后開(kāi)方后的結(jié)果*/ 7 L. @( B, d( _
y=sqrt(i+268); /*y為再加上168后開(kāi)方后的結(jié)果*/
. B' X9 x3 Z- N, K8 |if(x*x==i+100&&y*y==i+268)/*如果一個(gè)數(shù)的平方根的平方等于該數(shù),這說(shuō)明此數(shù)是完全平方數(shù)*/ b6 e2 P1 D- T4 t& @6 M* d! U) G! l
printf("\n%ld\n",i); } } % ?, `, u1 G* ]# x3 e
============================================================== " i0 j! I( V4 X. ]
【程序4】
/ j! `( U' `9 P# Z6 l題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
: p$ o" R! r9 o5 y6 d1.程序分析:以3月5日為例,應(yīng)該先把前兩個(gè)月的加起來(lái),然后再加上5天即本年的第幾天,特殊 0 {6 b: U+ d6 W- W7 E: b0 w7 K, q0 w: A
情況,閏年且輸入月份大于3時(shí)需考慮多加一天。
, Y* `" u2 Z9 f `2 m) O2.程序源代碼: $ l* L/ `7 G$ r. X( }
main() { 1 f- B7 f) C4 Q
int day,month,year,sum,leap; 9 m+ C, ?! @3 k. {. K, @, q$ V
printf("\nplease input year,month,day\n");
7 p; Z6 C. ?* ?9 Dscanf("%d,%d,%d",&year,&month,&day);
# P4 j+ A% T8 l5 `switch(month)/*先計(jì)算某月以前月份的總天數(shù)*/
{ case 1:sum=0;break; K- G4 t" ^: Z* n4 m
case 2:sum=31;break;
* d' \7 }9 Z) ]+ F7 Kcase 3:sum=59;break;
" N: A- |" b3 q" D) ]case 4:sum=90;break; 8 h. y- P* I9 v! _) e2 I% b3 n
case 5:sum=120;break; : ]( P' E1 W9 ?7 g
case 6:sum=151;break;
' a4 z9 \; N5 v7 A1 kcase 7:sum=181;break;
. ~7 k4 _2 h& F$ r. Kcase 8:sum=212;break; - Z9 K/ D6 F$ b0 ^
case 9:sum=243;break; : V+ e) e: ^4 o7 o- a
case 10:sum=273;break;
8 U( Y$ B+ f4 jcase 11:sum=304;break;
4 Q+ F2 t" u# _case 12:sum=334;break;
. l! Q3 l5 ]( `4 z. Y, Odefault:printf("data error");break; }
: X8 u9 R# V& {8 T8 tsum=sum+day; /*再加上某天的天數(shù)*/ 6 ?: P! H8 }+ M/ H, m" v! D
if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/ + [9 D2 y6 [0 W5 T. m
leap=1;
2 N) O# R$ a& p7 r. }( L; Kelse
0 L9 f5 f1 B6 o L5 Sleap=0; 3 } N( Y: A( ^8 d% e
if(leap==1&&month>2)/*如果是閏年且月份大于2,總天數(shù)應(yīng)該加一天*/
( j) I5 Q @! }sum++;
3 I# r) j* t' \: A$ Y& Gprintf("It is the %dth day.",sum);} 6 [3 ^2 I# ^( X6 {/ E
============================================================== - L5 C) q0 Q9 _- L$ Y3 [, I0 z( S& x8 D$ h
【程序5】 # q* q& M5 `: A' [& B& t
題目:輸入三個(gè)整數(shù)x,y,z,請(qǐng)把這三個(gè)數(shù)由小到大輸出。
7 d! q& q* ~$ U' m1.程序分析:我們想辦法把最小的數(shù)放到x上,先將x與y進(jìn)行比較,如果x>y則將x與y的值進(jìn)行交換,
& v' b1 }0 }) e" ?然后再用x與z進(jìn)行比較,如果x>z則將x與z的值進(jìn)行交換,這樣能使x最小。 ! A- a: g. l* C r; x
2.程序源代碼:
# p; Z9 r6 q2 Mmain() {
6 Y* i+ d! S' e, X: vint x,y,z,t;
, f) a& {6 e% W4 y- A# ] tscanf("%d%d%d",&x,&y,&z); ( e' F- [9 s3 o' E- w# o
if (x>y) " D$ n6 p4 m! _ F" v
{t=x;x=y;y=t;} /*交換x,y的值*/
$ t: N6 \" I1 n! A% }' u. kif(x>z) 4 K4 \" u6 U6 \
{t=z;z=x;x=t;}/*交換x,z的值*/ $ Z! ^+ C3 ~+ L/ h# p6 E7 S8 M
if(y>z) ; q; L+ A: r4 C$ I1 k
{t=y;y=z;z=t;}/*交換z,y的值*/ 7 Y2 s$ ~# p6 H5 [6 D; I# [
printf("small to big: %d %d %d\n",x,y,z); } 7 E1 A0 a9 ?0 I8 Y4 l+ s
==============================================================
3 {: s. B; ~' J1 C$ U5 f【程序6】 0 _2 ~( [! c6 C/ E
題目:用*號(hào)輸出字母C的圖案。
0 @: s& E, q w* `+ P1.程序分析:可先用'*'號(hào)在紙上寫出字母C,再分行輸出。 0 n; K/ s3 g- h1 }3 p% w/ r% R4 \# K2 o
2.程序源代碼: 4 _ N- x$ P @* [; A3 q
#include "stdio.h"
! h- h+ Y6 u; h+ emain() {
2 ]3 r' E7 o8 `& i5 lprintf("Hello C-world!\n"); : ]% C7 A: w+ @: C9 v" J
printf(" ****\n");
" C; R& L) H4 F; c2 M' Iprintf(" *\n"); % e7 m. p1 C; @
printf(" * \n");
- t0 N7 K8 v6 e3 {5 sprintf(" ****\n"); }
$ R& c' y8 B* V4 T7 Q; F6 J, _, | J3 c============================================================== - ^% k6 j6 J S/ o
【程序7】 $ U& U+ Z2 [/ u6 Q- P
題目:輸出特殊圖案,請(qǐng)?jiān)?/font>c環(huán)境中運(yùn)行,看一看,Very Beautiful! 1 y) T3 V6 M9 j5 G/ H; l! v
1.程序分析:字符共有256個(gè)。不同字符,圖形不一樣。
9 z9 c/ S5 ?2 \5 g' L0 j2.程序源代碼: + q' h9 G: h/ C( K
#include "stdio.h" . b) L& f5 y6 k( F" I
main() 0 O- k( ~$ C3 O S
{ 6 x! w, d- b. {! Q( c% {
char a=176,b=219;
, _6 h2 e1 z/ w& L+ rprintf("%c%c%c%c%c\n",b,a,a,a,b); . S6 ?6 w$ B) e+ Q0 G$ y
printf("%c%c%c%c%c\n",a,b,a,b,a); ( I8 u* _& P' A. _1 f/ @" Z
printf("%c%c%c%c%c\n",a,a,b,a,a);
( _1 U) u+ P q7 F: n" [* `printf("%c%c%c%c%c\n",a,b,a,b,a);
% e9 R, E( Y6 e4 oprintf("%c%c%c%c%c\n",b,a,a,a,b);}
9 P& E$ O! k% w- A==============================================================
; G- j5 R" k+ F. A【程序8】 2 F6 s4 l6 ~7 X' d8 p* j8 `- f
題目:輸出9*9口訣。
! ^, V( ]/ g4 T4 M5 V5 Y( ^1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。 3 g5 m" F6 b. h! y7 g' D( p
2.程序源代碼: 1 i* b9 }0 `, @5 G1 x7 f
#include "stdio.h"
J* {! E! y( L0 @1 N. Imain() " ^% ]: L5 c a* v# J) }
{ ) N* t/ J! T- g/ g* G
int i,j,result; 6 r9 h$ r5 J* g" O$ q) P P$ G
printf("\n");
( X4 C/ M' h6 o/ S+ i( H# \/ u6 Tfor (i=1;i<10;i++) 9 D8 r1 v; f8 K
{ for(j=1;j<10;j++)
" D' i3 z5 `2 g5 V) {{ " \0 H" z+ t, b2 j
result=i*j; & x' T3 Q; I3 m! h' }% ]
printf("%d*%d=%-3d",i,j,result);/*-3d表示左對(duì)齊,占3位*/ / _' V0 t8 K4 S& t5 W
} : V. c) R) T6 G4 ?! }2 x
printf("\n");/*每一行后換行*/
$ ?) \4 K8 i; ?' k2 o1 Q: t S} - P/ P% M, a1 q' b
} 5 r6 e9 B! s2 O/ |5 P% v1 _
===============================================
) j( @# H3 ^: N* ^2 E L- m8 G% X
作者: jiangsuwanhua 時(shí)間: 2017-9-22 10:21
感謝樓主的分享!!!
作者: qq642446015 時(shí)間: 2017-9-22 10:22
我竟然發(fā)現(xiàn)我有點(diǎn)看得懂
作者: qaz111772015 時(shí)間: 2017-9-22 10:42
c語(yǔ)言。。。。看不懂
作者: 藍(lán)色格 時(shí)間: 2017-9-22 10:59
說(shuō)好的一百例怎么只有幾個(gè)?
作者: gg157551 時(shí)間: 2017-9-22 11:32
附件呢???
作者: 星-星 時(shí)間: 2017-9-22 12:26
基本都忘了' g' v8 [! h% p1 `( i! L: ?# V
軟件類的,學(xué)了就要用
作者: 我最帥 時(shí)間: 2017-9-22 12:54
樓主,求分享剩下的
作者: 林泉之樂(lè) 時(shí)間: 2017-9-22 15:44
玩玩的東西
作者: 韓寒11 時(shí)間: 2017-9-22 23:42
這是和電腦有關(guān)的知識(shí),做機(jī)械的用不上吧
作者: moldzsdj 時(shí)間: 2017-10-10 15:58
看不懂,努力看。。。。。用的上,PLC,單片機(jī),靠這些驅(qū)動(dòng)機(jī)構(gòu)做工,達(dá)自動(dòng)化
作者: wei381690115 時(shí)間: 2017-11-23 17:22
好東西
歡迎光臨 機(jī)械社區(qū) (http://www.ytsybjq.com/) |
Powered by Discuz! X3.5 |