【程序1】 , z) A9 F7 T2 N; D- n8 p2 X# s
題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數,?都是多少? 3 \9 n# |) K: p9 _( j
1.程序分析:可填在百位,、十位,、個位的數字都是1、2,、3,、4。組成所有的排列后再去
3 ~% V3 t' x! z. N; b% ^掉不滿足條件的排列,。
' k9 R: I: h% @3 _, W% D) Z2.程序源代碼: P" o3 Y* J; a% E/ s
main() {
% o* H7 U# V) F, f Z) `/ v. m' r! Hint i,j,k; % h" [; c5 p1 H5 A; E+ C; y- }
printf("\n");
8 L1 B9 [+ l, X0 K, R# ~# ffor(i=1;i<5;i++) /*以下為三重循環(huán)*/ 4 ?1 ~$ z) U) V9 H
for(j=1;j<5;j++)
% ^/ h) o! [* Z; |/ W& Rfor (k=1;k<5;k++) {
, |6 q( s* B- P1 k1 E6 x5 cif (i!=k&&i!=j&&j!=k) /*確保i,、j、k三位互不相同*/ , Z9 z8 u8 R) E) r& n" N m- }
printf("%d,%d,%d\n",i,j,k); }} + h" P& T$ T8 u* H" p1 L! @
============================================================== ' Q; Y! V3 ?3 H% c4 B( |
【程序2】
0 ~$ }# R; j1 ]0 D* |8 s* p0 i題目:企業(yè)發(fā)放的獎金根據利潤提成,。利潤(I)低于或等于10萬元時,,獎金可提10%;利潤高
8 V1 G% C3 V3 P于10萬元,,低于20萬元時,,低于10萬元的部分按10%提成,高于10萬元的部分,,可可提
* c) E) n& A R) {成7.5%,;20萬到40萬之間時,高于20萬元的部分,,可提成5%,;40萬到60萬之間時高于 6 C2 e1 f+ l% \. c) T! R
40萬元的部分,可提成3%,;60萬到100萬之間時,,高于60萬元的部分,可提成1.5%,,高于 % y8 o# I# i3 w6 M" s
100萬元時,,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,,求應發(fā)放獎金總數,? , J) Y6 D+ }" `
1.程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型,。
9 t" v: \ m4 ~4 t2.程序源代碼:
2 |7 w0 ^; J3 D; \! Kmain() {
6 u6 q/ a, }) r! z" O) D" j2 tlong int i; 4 h6 Q. {$ p# `3 u! W
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; 3 e* q0 a+ D' O" P
scanf("%ld",&i);
+ {1 O4 K) k( l! zbonus1=100000*0.1;bonus2=bonus1+100000*0.75; 0 \( E& G% K' I( L# y) v
bonus4=bonus2+200000*0.5;
, O: O8 {( d' V0 L# [) ibonus6=bonus4+200000*0.3;
" u- `/ b4 i9 n7 x$ f* f! \bonus10=bonus6+400000*0.15;
, H1 L; q. u( |* Z/ ^$ l* Mif(i<=100000)
* `8 ~* c2 n u2 f0 c* l0 p" ebonus=i*0.1; , S- y; b% H; y
else if(i<=200000)
) U* y& \3 L, ~& m3 l$ }+ V+ x- Qbonus=bonus1+(i-100000)*0.075;
( x6 _9 V8 L0 ?9 S/ v7 L2 [# i; V; eelse if(i<=400000)
+ d ^* e4 }3 E& L% B6 Ybonus=bonus2+(i-200000)*0.05; - w2 T, B" G5 D# ~
else if(i<=600000) 8 p, l& x+ i# H/ _8 ~6 L
bonus=bonus4+(i-400000)*0.03; & M- H% t6 u: N, u3 u/ w
else if(i<=1000000)
+ v, w# x+ e6 m, Ubonus=bonus6+(i-600000)*0.015;
- A8 ~1 d( N1 m) Lelse ' D2 d9 z5 _& f& n' o3 F/ h
bonus=bonus10+(i-1000000)*0.01;
) i8 A! \9 V- ?* ^6 xprintf("bonus=%d",bonus); }
: ^' @3 R# ]# g+ |==============================================================
) y4 c* {0 G& C5 A) X2 h( q【程序3】 : {# A9 ?$ T! I! A
題目:一個整數,,它加上100后是一個完全平方數,再加上168又是一個完全平方數,,請問該數是多少? 1 _. G+ u, _, L/ T9 v7 f) B
1.程序分析:在10萬以內判斷,,先將該數加上100后再開方,,再將該數加上268后再開方,如果開方后
0 W2 |9 d: w+ D* M, S0 |4 C的結果滿足如下條件,,即是結果,。請看具體分析: & B# `7 f' k. `0 i
2.程序源代碼:
5 E8 F# W- w* t3 H6 j#include "math.h" % S7 c5 b3 g1 K: {9 H; J
main() {
( Q1 I; I9 O) O3 T6 ]long int i,x,y,z;
1 {$ @& G6 }9 ]* o; Cfor (i=1;i<100000;i++) # Z# k8 j! B2 ]/ J- W; q
{ x=sqrt(i+100); /*x為加上100后開方后的結果*/
/ d0 z$ @7 W! R* w8 Jy=sqrt(i+268); /*y為再加上168后開方后的結果*/
; |8 x2 {* B3 k" E4 j5 l h& Xif(x*x==i+100&&y*y==i+268)/*如果一個數的平方根的平方等于該數,這說明此數是完全平方數*/
9 K, K B7 J' E/ Q& l9 D8 m8 mprintf("\n%ld\n",i); } } * `" D! z' c0 K9 k
==============================================================
) K+ P t: J/ Z& M7 w9 F【程序4】 }+ M8 j* g& O
題目:輸入某年某月某日,,判斷這一天是這一年的第幾天,? ) k E2 n: h) t3 a/ ^( `
1.程序分析:以3月5日為例,應該先把前兩個月的加起來,,然后再加上5天即本年的第幾天,,特殊
# f" }3 ]. h4 n# L# O1 ?* o* c! c情況,閏年且輸入月份大于3時需考慮多加一天,。 ( U) G9 D3 v' u& L9 ]+ d
2.程序源代碼: 9 K$ C6 [" j* ^7 ~
main() { ; p/ q! K4 D$ \+ x4 n
int day,month,year,sum,leap; - ]! `6 N# o4 X C- \! `2 e
printf("\nplease input year,month,day\n"); u' j0 [) ~4 g& J' U$ H1 q# F
scanf("%d,%d,%d",&year,&month,&day); # D8 C' Z' u2 W" ?
switch(month)/*先計算某月以前月份的總天數*/ { case 1:sum=0;break;
) |% v. ]2 `8 [4 h5 Vcase 2:sum=31;break; - k/ `: G) B# F1 k& N9 v$ s1 M
case 3:sum=59;break; " R- `( O9 M+ e( D+ e- H! r
case 4:sum=90;break; $ c# x# p3 o0 p: h* o2 Z
case 5:sum=120;break;
' B; ^4 g! I% [case 6:sum=151;break;
& H: x$ C1 ^& z( b. qcase 7:sum=181;break;
8 B C e' T. R" Z1 ~ \case 8:sum=212;break;
$ R6 [0 n% E, E% P5 F! {3 r0 j; vcase 9:sum=243;break;
8 F" u0 J/ A; @/ D# ^3 ncase 10:sum=273;break; ' t+ }$ _" u- f I9 @
case 11:sum=304;break;
/ ^+ N& N& Y/ h$ wcase 12:sum=334;break;
1 T, K: ^, F$ E3 {2 ]& e6 }+ Ndefault:printf("data error");break; }
6 ~ c+ @# b, h# Rsum=sum+day; /*再加上某天的天數*/ : \' s* x; q4 Y3 h" Q- g |5 ?* {
if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/ & ~# {9 c& s$ f6 z7 [7 f
leap=1;
! m7 G2 t+ }. u9 R4 ] F& w; selse 0 `- ~+ f" A. H& ?
leap=0;
+ T) y% C8 }! wif(leap==1&&month>2)/*如果是閏年且月份大于2,總天數應該加一天*/ # d3 h" S, W) T- G
sum++;
) w4 F @( r" j$ iprintf("It is the %dth day.",sum);} / E2 _- F8 y5 e8 m3 O9 |7 ~+ g
============================================================== 5 H! s4 {1 V0 i+ h. T
【程序5】 # e! l4 V* T9 u0 @. C+ m' _
題目:輸入三個整數x,y,z,,請把這三個數由小到大輸出。
8 |0 ~- B& T( z; p0 Y0 H1.程序分析:我們想辦法把最小的數放到x上,,先將x與y進行比較,,如果x>y則將x與y的值進行交換,
) c! k1 O( Y5 r1 A. M然后再用x與z進行比較,,如果x>z則將x與z的值進行交換,,這樣能使x最小。 I* F% K; ]! u$ w" T3 |! Z6 [
2.程序源代碼: " Q. R8 ^0 P) V+ p4 F# o
main() {
2 ^" Q5 ~$ P' J* b. u8 g' Iint x,y,z,t;
1 A& K5 w( A2 l. V8 [9 Pscanf("%d%d%d",&x,&y,&z);
O1 t3 T* R* Q# Q _$ Lif (x>y) 4 P s- l( G# U* b+ D
{t=x;x=y;y=t;} /*交換x,y的值*/
2 H9 K6 w* V0 d8 d; e$ N1 Rif(x>z)
4 o3 N2 `4 {6 \! R$ m{t=z;z=x;x=t;}/*交換x,z的值*/ U! ^# P: j8 ~
if(y>z) % }1 b- X9 o/ z8 S- n- f4 \
{t=y;y=z;z=t;}/*交換z,y的值*/ 7 w( U5 n; a* q: ]5 S
printf("small to big: %d %d %d\n",x,y,z); } " S- \! e0 r7 n, [
==============================================================
$ L- M/ }5 `% i' c/ J【程序6】
$ t7 v) z/ t( F/ @, B, g, C% R題目:用*號輸出字母C的圖案,。 6 M, B0 I1 E3 v% q8 O
1.程序分析:可先用'*'號在紙上寫出字母C,,再分行輸出。
$ j+ P& q: a, V7 t- }; U2.程序源代碼: 4 e# G1 `) M8 i8 O' O4 k
#include "stdio.h" : R( Q# J& s$ L5 p
main() { , {1 K, V; }! u8 N) b# |: s+ b' T9 S
printf("Hello C-world!\n");
, O2 s6 {8 l3 y0 _1 T. Xprintf(" ****\n"); " l+ |" }" X( t4 e" V% l
printf(" *\n"); , D' r0 {" R) n
printf(" * \n");
2 U# g* I+ f- S/ ]2 D% w, oprintf(" ****\n"); } 0 ]5 r$ g1 G3 Q4 k) j
==============================================================
: E/ m! w, _) t' F3 t w2 ~【程序7】 8 T. A; e/ M' q4 Y% ?% [
題目:輸出特殊圖案,,請在c環(huán)境中運行,,看一看,Very Beautiful!
! x1 m$ V* M5 _5 l- m& P0 y: n3 v! ~1.程序分析:字符共有256個,。不同字符,,圖形不一樣。 3 w( j* t% a/ m4 m. a: L
2.程序源代碼:
: G+ e* O: X9 X9 ^; V9 \) n#include "stdio.h" % y4 `9 o! [) }' D/ h) ^$ T7 k
main()
/ ]! P; {! E8 l{ ( a# _5 f; V' R$ x1 h: W
char a=176,b=219;
0 U# @# @0 V8 D6 q0 X/ T, tprintf("%c%c%c%c%c\n",b,a,a,a,b);
% S4 B4 A* e- N c# _3 ~! E. [printf("%c%c%c%c%c\n",a,b,a,b,a);
9 _0 q! b, N, m* H- \5 aprintf("%c%c%c%c%c\n",a,a,b,a,a); $ f4 y9 U7 a, t6 Q1 e
printf("%c%c%c%c%c\n",a,b,a,b,a);
$ D2 z' ]' n7 C6 j6 y' n" Oprintf("%c%c%c%c%c\n",b,a,a,a,b);} 7 n2 q! N: W: u3 p6 l, Y: M" }% t
==============================================================
7 Q9 A/ x- j. p/ c: b【程序8】 ; [2 I" H7 ]9 t8 u
題目:輸出9*9口訣,。 ) U& ]( l' H# v; E
1.程序分析:分行與列考慮,,共9行9列,i控制行,j控制列,。 7 m4 W2 w. z7 m$ N7 ^; y& A* N. J
2.程序源代碼: . P4 i* d/ ~* h+ r6 y0 }
#include "stdio.h" : A6 S+ K/ A6 }& g, Y* W3 n r5 y
main() 4 d7 `: q! B# T* J* W8 R
{ 3 K( \1 r( u e7 S5 u; ?! }) @
int i,j,result;
0 F, g1 Z, B/ M: A# T9 D; U% G/ Mprintf("\n");
4 o7 ?: k8 u" K7 V; f# [for (i=1;i<10;i++)
* e& H8 g- z+ F9 q. t7 A W{ for(j=1;j<10;j++)
& ^/ j) y% Z4 x4 s{ ' r6 W1 [* F7 _2 s) p; t
result=i*j;
0 |2 y6 t) X5 g& ], ?6 |, ]4 Mprintf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,,占3位*/ " z3 v: w: C; J6 N
}
% j6 j5 r1 e; I2 @7 Gprintf("\n");/*每一行后換行*/ 5 v r8 |& ]5 {+ J
} ; U! h7 H& c3 W, |5 O( }; o0 {
} ' ?4 I, L& P5 o
=============================================== 8 |% j: J2 W- _- x
|