以文本方式查看主題 - 曙海教育集團論壇 (http://www.hufushizhe.com/bbs/index.asp) -- C語言開發 (http://www.hufushizhe.com/bbs/list.asp?boardid=62) ---- C語言程序開發經典實例 (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=62&id=2388) |
-- 作者:wangxinxin -- 發布時間:2010-12-10 9:53:08 -- C語言程序開發經典實例 題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?4 r% |! S3 B1 O! O( k% G 1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去掉不滿足條件的排列。 2.程序源代碼: main() { int i,j,k; printf("\\n"); for(i=1;i 【程序2】2 M6 n# H! I- X- m0 u 題目:企業發放的獎金根據利潤提成。利潤(I)低于或等于10萬元時,獎金可提10%;利潤高于10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可可提成7.5%;20萬到40萬之間時,高于20萬元的部分,可提成5%;40萬到60萬之間時高于40萬元的部分,可提成3%;60萬到100萬之間時,高于60萬元的部分,可提成1.5%,高于100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?0 r& ?& F. E* T, T6 K3 @ 5 s+ {$ S. u) N6 I 1.程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型! \' K1 V/ W9 V6 \\4 q 2.程序源代碼:7 w* m4 Q) G0 E n7 q! U+ Z\' ^/ F3 ? main() s) i1 j9 A5 O( T5 N, h; S { long int i;- u: b" C* _* L h int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3;, k+ I6 F# q0 a/ C, X1 r+ o bonus10=bonus6+400000*0.15; if(i6 M2 z8 p4 @; A2 P+ p 【程序3】, l: ~% ]* e" c\' }" t8 K9 b* Y 題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?" H2 l. H( p\' p4 v6 I 1.程序分析:在10萬以內判斷,先將該數加上100后再開方,再將該數加上268后再開方,如果開方后的結果滿足如下條件,即是結果。請看具體分析: 2.程序源代碼: #include "math.h"2 }) X* s8 ^0 Y! }\' v1 w O- W! G main() V$ u8 F7 h\' F8 h* `) w- h { long int i,x,y,z;0 Q% \\0 V5 h; H) l9 X1 Y for (i=1;i 【程序4】( O/ \\3 c- \\ O1 t% ]5 K ]; g3 T 題目:輸入某年某月某日,判斷這一天是這一年的第幾天? 1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。) M) D- q- ]2 h6 l 5 v* {3 x( ^/ S( a; h9 Q% L# ~ 2.程序源代碼: 6 S# V4 B; F- E$ { main()9 F2 j" x% M+ C/ _0 S { int day,month,year,sum,leap;. @" W; Q( Q\' U printf("\\nplease input year,month,day\\n");0 B\' ^. b- u& a& y; | scanf("%d,%d,%d",&year,&month,&day); switch(month)/*先計算某月以前月份的總天數*/2 n0 Q1 s7 v5 i2 g" y { case 1:sum=0;break;; u- n( S+ G( N3 |/ [ case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break;\' ]6 `& g* g* j, R0 l case 6:sum=151;break;5 f: r$ }- i" E7 u\' l0 \\8 v case 7:sum=181;break;& M) ^+ e: k! G case 8:sum=212;break; case 9:sum=243;break;+ _; e. {7 `( L T! M7 g; Y case 10:sum=273;break; case 11:sum=304;break; P% |6 Z" G: h% L* n6 D% [+ X7 _ case 12:sum=334;break; default:printf("data error");break; } sum=sum+day; /*再加上某天的天數*/2 Z: g8 V6 o) \\! A% q t if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/ leap=1; else leap=0;& g1 g* y1 Q8 d" e% ?, o if(leap==1&&month>2)/*如果是閏年且月份大于2,總天數應該加一天*/ sum++; printf("It is the %dth day.",sum);} 【程序5】2 M5 @$ @6 b n6 K4 K7 o }. s 題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。( B) G* z7 a0 {$ m 1.程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,然后再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。 0 ^- B# s o9 ~5 d 2.程序源代碼: main()% y& u" O9 S; a2 n2 x- h { int x,y,z,t; scanf("%d%d%d",&x,&y,&z); if (x>y)% z4 h5 K& \\: ^# K {t=x;x=y;y=t;} /*交換x,y的值*/% I; w, _( ^# f; m1 E% a G if(x>z) {t=z;z=x;x=t;}/*交換x,z的值*/" K) Y( F* w& w8 v9 Y6 R if(y>z)% y1 m0 v/ S. A8 ~8 L {t=y;y=z;z=t;}/*交換z,y的值*/ printf("small to big: %d %d %d\\n",x,y,z);* j6 w1 e" }# E7 _0 }: Y1 v } 【程序6】 & t! O: J# b/ c7 p" P& k 題目:用*號輸出字母C的圖案。+ A8 h2 ~4 D( l; u+ n7 o 1.程序分析:可先用\'*\'號在紙上寫出字母C,再分行輸出。 % {8 c, z: [ j/ S- }( f 2.程序源代碼: 7 ^* Z* n4 f& w, b/ K$ y" K- | #include "stdio.h" main()5 i" b! t1 t; ^5 N/ u7 J* L { printf("Hello C-world!\\n");( ?$ Q7 m( r, Q- G0 O6 O" X7 j printf(" ****\\n");, p" m" d- {0 ^$ ]! [% r printf(" *\\n");5 }! Q\' d0 w) H printf(" * \\n"); printf(" ****\\n"); }4 U\' e3 u6 F# C/ S9 y, M" a w# L 【程序7】) J7 k/ h5 C4 U9 w* ?% P, o- m 7 |! O" r5 H5 m1 t/ a* g; X7 R 題目:輸出特殊圖案,請在c環境中運行,看一看,Very Beautiful!7 B: [& k3 W/ W3 T, S9 r 1.程序分析:字符共有256個。不同字符,圖形不一樣! & V6 ^7 L* f9 K6 L 8 m5 ]$ K" K3 N# s3 M) @# M 2.程序源代碼:( {: |7 i5 G* a, t& A! f #include "stdio.h" main()\' C- Z# k7 i* d0 X! W: E9 _( f {1 U+ x$ U& H3 ]7 J. X char a=176,b=219; printf("%c%c%c%c%c\\n",b,a,a,a,b); printf("%c%c%c%c%c\\n",a,b,a,b,a); printf("%c%c%c%c%c\\n",a,a,b,a,a);" ^3 U1 h/ Q- l$ F printf("%c%c%c%c%c\\n",a,b,a,b,a);7 b6 O1 }# o3 K printf("%c%c%c%c%c\\n",b,a,a,a,b);}, y) y# o- {) S9 p) ] 【程序8】" ~+ O2 R9 x0 ~% P6 o! O 題目:輸出9*9口訣。" ]5 e: Z& q0 j 3 }* }3 k8 W% I1 U4 u. { 1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。# E+ j8 Q( `$ _3 R: N0 ^ 2.程序源代碼:3 Z, }) j\' v0 k9 a3 g 7 {* B# F9 j3 X* s\' o- f\' q4 Y9 d+ u #include "stdio.h"5 `( H; m, `/ G\' ^" _; ~ main() {. g% s: z8 S/ J int i,j,result; printf("\\n");* d/ V0 B! t& B" O0 k* k5 g. k6 @ for (i=1;i: U# u! O9 L, j 【程序9】 題目:要求輸出國際象棋棋盤。 % j) ~3 c2 o# G9 ?; {( w! E3 k\' |3 W 1.程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。6 H* d2 R8 _# j: ^* a# R! |6 S4 \\ W J% t% y6 r% w& H* i$ Y3 H4 j 2.程序源代碼:& K% n) y. J4 S, [# Z #include "stdio.h"" W" F E; p% x main()* I" B! G9 S( F5 I |