【程序1】 / j1 |9 f) D5 l: x7 s% ~" d
題目:有1、2、3、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少?
5 Y1 W6 R( q* a/ U6 `1 a' F1.程序分析:可填在百位、十位、個(gè)位的數(shù)字都是1、2、3、4。組成所有的排列后再去 % @- a, J) I6 r, [- p
掉不滿足條件的排列。 . x# @% I: S1 d5 Q% \* d
2.程序源代碼:
' {. o7 y% X, W& w& x# x% jmain() {
8 w- m: K( P% r2 c* t4 C5 Yint i,j,k; / Q1 r# z' {/ e* @" t
printf("\n");
- X( i% v# E" M! J0 F2 ~5 Kfor(i=1;i<5;i++) /*以下為三重循環(huán)*/
, @' e) _% j) _9 d( Nfor(j=1;j<5;j++) , |8 J% {' z4 Y" @" L
for (k=1;k<5;k++) {
4 W! X4 ^8 v! a& F3 Q3 Gif (i!=k&&i!=j&&j!=k) /*確保i、j、k三位互不相同*/ 7 e. J# R6 n+ j$ ~* [* @/ @
printf("%d,%d,%d\n",i,j,k); }} % @& r( J7 o& n8 n4 P
==============================================================
{+ f5 h( D) y3 s/ q【程序2】 ' o E) [& `. R0 k/ g* o5 ^
題目:企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤提成。利潤(I)低于或等于10萬元時(shí),獎(jiǎng)金可提10%;利潤高 : I4 i( J& j$ T9 k% v6 X* m# o9 g, n: v
于10萬元,低于20萬元時(shí),低于10萬元的部分按10%提成,高于10萬元的部分,可可提
2 h' O6 Y) _0 h3 ?成7.5%;20萬到40萬之間時(shí),高于20萬元的部分,可提成5%;40萬到60萬之間時(shí)高于 5 h* x9 m$ \$ e. e! ~# L
40萬元的部分,可提成3%;60萬到100萬之間時(shí),高于60萬元的部分,可提成1.5%,高于
# S4 e+ S9 d- R8 R1 u100萬元時(shí),超過100萬元的部分按1%提成,從鍵盤輸入當(dāng)月利潤I,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)?
5 x3 S7 p4 `' `5 Y, a8 z1.程序分析:請利用數(shù)軸來分界,定位。注意定義時(shí)需把獎(jiǎng)金定義成長整型。 + E% B" r; l# h& v5 } F
2.程序源代碼:
* T+ v5 A1 ~! F! P7 S zmain() {
6 D- j0 f9 r( O3 v, h5 Llong int i;
" o; c/ A8 z& G: W6 g1 _# m! Q9 Rint bonus1,bonus2,bonus4,bonus6,bonus10,bonus; 4 c9 K) i: f# f
scanf("%ld",&i);
7 I7 o9 R: M7 B8 ^/ _bonus1=100000*0.1;bonus2=bonus1+100000*0.75; . w9 {0 A( \1 A) C: P, L
bonus4=bonus2+200000*0.5; {+ S* q1 M) t: z1 l
bonus6=bonus4+200000*0.3; " M: @9 o4 a1 `1 E3 r
bonus10=bonus6+400000*0.15; ( f7 E7 u `6 o' g4 Z$ f0 p
if(i<=100000)
% B* s$ D z8 Ebonus=i*0.1;
3 T! d; s" S; ?else if(i<=200000) / c( W9 U: V6 `* V5 q
bonus=bonus1+(i-100000)*0.075; . u' u! L# n4 Y' p8 Q6 t5 z7 J4 _
else if(i<=400000) . Y& c% l0 V) ?$ k
bonus=bonus2+(i-200000)*0.05;
+ K7 T- P1 Z% L! T; _3 selse if(i<=600000) " m/ @0 _ g2 x7 w
bonus=bonus4+(i-400000)*0.03;
0 m3 k m+ {1 e6 K j. welse if(i<=1000000) 5 w. j' M# y7 T R/ s! z
bonus=bonus6+(i-600000)*0.015;
9 s& T2 L2 |, ^7 w2 }" Felse & V0 I; n3 k0 f) e3 I8 E
bonus=bonus10+(i-1000000)*0.01; ' z: D, X( i8 }0 ^, D' V, N! I" S
printf("bonus=%d",bonus); } 8 w# v$ ?% z. s" |9 S. H
============================================================== & v. A" ^) E' q) A1 N. e! `2 M: B
【程序3】
/ P4 ~4 o6 y8 L) _3 ]' s' B% v題目:一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再加上168又是一個(gè)完全平方數(shù),請問該數(shù)是多少? ; H3 W9 r3 V" z6 ^& @# q6 S
1.程序分析:在10萬以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后再開方,如果開方后 : N2 n+ i4 G, F: O6 Y5 e N
的結(jié)果滿足如下條件,即是結(jié)果。請看具體分析:
$ e9 f# H' G& N' n2.程序源代碼: 9 _$ ?) v. s7 B: c! M
#include "math.h"
- U- s7 I& g; S4 M$ ^! g X$ Zmain() {
: e, @, s# ~. p H3 qlong int i,x,y,z; 5 Z F1 H5 j( ]1 g# p
for (i=1;i<100000;i++)
5 M$ i4 y4 ^0 `+ N. H' U7 x{ x=sqrt(i+100); /*x為加上100后開方后的結(jié)果*/
+ ?# t5 Y. e- [) S" {: xy=sqrt(i+268); /*y為再加上168后開方后的結(jié)果*/ , d$ S- f( y3 b2 Y- E; [# u
if(x*x==i+100&&y*y==i+268)/*如果一個(gè)數(shù)的平方根的平方等于該數(shù),這說明此數(shù)是完全平方數(shù)*/ ( \' [' |: T9 j- ]5 v$ h
printf("\n%ld\n",i); } } - j2 m9 h6 y0 t& e4 I
============================================================== - k5 h3 o1 W. d! x
【程序4】 # N9 t2 U1 g1 R8 f0 I, v) i
題目:輸入某年某月某日,判斷這一天是這一年的第幾天? / H& o: G' ~0 l* [" J
1.程序分析:以3月5日為例,應(yīng)該先把前兩個(gè)月的加起來,然后再加上5天即本年的第幾天,特殊
S" u/ ~2 s) J# i情況,閏年且輸入月份大于3時(shí)需考慮多加一天。 ' \, ]; W9 M' H; k) U! y% K3 x
2.程序源代碼: - z2 W+ ^7 k3 P* Y# h
main() { / c( C: ]' n- ^" h( X
int day,month,year,sum,leap; % L3 ]; E' \. [( m2 c
printf("\nplease input year,month,day\n");
/ V4 Q/ u! |0 c% a0 K6 ^ Jscanf("%d,%d,%d",&year,&month,&day); 4 G3 @: ~+ i: a' v
switch(month)/*先計(jì)算某月以前月份的總天數(shù)*/ { case 1:sum=0;break;
$ H, u/ }/ E! J) J4 N7 j& [/ c) ucase 2:sum=31;break; + C: U7 G) c& _. \. w, B* P% Q
case 3:sum=59;break; & d' t" ]0 B5 v: {9 T) ?/ h
case 4:sum=90;break;
" e H1 _" p8 L' r: T9 _" Q: ecase 5:sum=120;break; 2 v* b- f5 s7 {( M- l) Y
case 6:sum=151;break;
$ i& L0 m1 M+ r- hcase 7:sum=181;break;
. K A+ O" A8 C7 f4 F2 \case 8:sum=212;break;
5 ?- L, O3 T9 H3 t) Lcase 9:sum=243;break; 6 l( S, ~* I! U- S
case 10:sum=273;break; . u; M3 T- n! Z" m* x
case 11:sum=304;break; ( k' V& b' s7 J. _) M9 s
case 12:sum=334;break; 8 S. X6 c; }. F' b% \
default:printf("data error");break; }
' M1 p; f4 \) k$ ?sum=sum+day; /*再加上某天的天數(shù)*/ 0 i) u: N' x. O+ ~, O$ e
if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/ ( C9 C. l2 _) x2 [# O5 z- \
leap=1;
/ x$ X j9 x; u% p; belse 5 c/ D; h. Q2 U( ~; T- E9 i
leap=0; 7 D: I. c! X* m/ ^
if(leap==1&&month>2)/*如果是閏年且月份大于2,總天數(shù)應(yīng)該加一天*/
" P' Q2 e) O, y/ S8 \+ E' Tsum++;
H( S) _" L" w7 m" n& oprintf("It is the %dth day.",sum);}
" p4 k# y) F- W. W==============================================================
Q/ J/ Y5 F; y" m* L. m. [2 f【程序5】 - c9 Z5 q; P7 q
題目:輸入三個(gè)整數(shù)x,y,z,請把這三個(gè)數(shù)由小到大輸出。 0 ]; B. a1 \/ l3 I
1.程序分析:我們想辦法把最小的數(shù)放到x上,先將x與y進(jìn)行比較,如果x>y則將x與y的值進(jìn)行交換,
& n4 G+ p" c* O2 d0 F然后再用x與z進(jìn)行比較,如果x>z則將x與z的值進(jìn)行交換,這樣能使x最小。
# [5 M- W+ k5 E" y- W2.程序源代碼:
7 ]' z# a# s1 s: l0 k% ymain() {
8 T! g; j; e2 \$ Lint x,y,z,t; % S) s% Q' j: ~
scanf("%d%d%d",&x,&y,&z);
: m% ^0 R) {! ^; _& V2 M9 V" T! Lif (x>y)
* P/ w$ O' A, o8 ]{t=x;x=y;y=t;} /*交換x,y的值*/ 7 n9 S9 k# _' S {6 [; C T
if(x>z)
3 y/ b2 q) m( B4 r{t=z;z=x;x=t;}/*交換x,z的值*/
% {& h1 V4 l! ]' lif(y>z) 1 l% z% P" q% L& i# G, E7 x" L& I
{t=y;y=z;z=t;}/*交換z,y的值*/ ( P, o- ?1 r' U8 f
printf("small to big: %d %d %d\n",x,y,z); }
" t5 l/ @5 O8 `==============================================================
7 f) Q9 {; e& p. B" v% D【程序6】
8 s9 L* L5 f* s' L2 d& q" \" Y題目:用*號輸出字母C的圖案。
. z+ [) Z& \& P7 M# C) n" E1.程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。
# y: T% `; j$ E2.程序源代碼:
# w. g1 s2 q# q) O' |#include "stdio.h"
. Y* F2 L* k6 ^) i S7 F- k+ p3 Wmain() { ' `+ c- U' g3 w* b+ g
printf("Hello C-world!\n"); 2 q! c: t {! J3 M) ^! C
printf(" ****\n");
; h7 @: E! S* i, mprintf(" *\n"); - I3 G" G* i+ z& ~. J5 L
printf(" * \n"); : ]6 Q: D% D4 l: W- `
printf(" ****\n"); } ! N% _( U9 x# U) R7 ~0 i4 l" ]
==============================================================
! f/ M2 j4 m) X! Q9 K, s【程序7】 5 V) K4 s0 e" ^4 g
題目:輸出特殊圖案,請?jiān)?/font>c環(huán)境中運(yùn)行,看一看,Very Beautiful! " I; D& c, t z t
1.程序分析:字符共有256個(gè)。不同字符,圖形不一樣。
" s% G, H4 O& e$ O2.程序源代碼:
9 d: n6 {4 c* W/ T' u8 [#include "stdio.h" 3 c6 R! r! K5 \6 Q2 u+ E
main() 9 z( }% L/ K) E" X4 F
{
6 G: L+ |$ j& a- F3 W8 u2 H- a: vchar a=176,b=219;
& n* e/ o# r% R+ ~, }9 ^; yprintf("%c%c%c%c%c\n",b,a,a,a,b);
- E7 V y$ j, c, _1 M" ]$ T- B4 v" gprintf("%c%c%c%c%c\n",a,b,a,b,a);
0 b( X, i- O4 wprintf("%c%c%c%c%c\n",a,a,b,a,a);
/ f8 R0 H: S# Bprintf("%c%c%c%c%c\n",a,b,a,b,a); $ C$ b% {+ A. _( c2 t+ y" u# q, A/ O
printf("%c%c%c%c%c\n",b,a,a,a,b);} ; V2 Q: I- I) N( [/ ]: o
============================================================== 5 _: o9 ]$ Z0 B7 ~6 m
【程序8】
. }( D# `2 I2 b( E題目:輸出9*9口訣。
( w2 v2 q- i/ b8 U# [* [1 r' ]1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。 3 X9 c5 g: ^8 S2 V1 U/ ]
2.程序源代碼: ' w8 B' b/ W# T- `) F' U
#include "stdio.h" , X$ ~ G% r5 M4 w- Y+ J
main()
$ ~/ q+ G7 k- C& ^1 J9 n{ ' ~% K/ L3 P! f
int i,j,result;
9 ?, o5 `4 C/ ^! k$ D& aprintf("\n"); 8 k# g% K; E$ J2 z4 p
for (i=1;i<10;i++) ! g k8 o) f/ \. n. N
{ for(j=1;j<10;j++)
) ~5 ~, c8 v1 ~5 m$ L& U5 y/ p{ + l- U2 ]. Z9 \* c
result=i*j; ( J5 K2 a+ s" m' v
printf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,占3位*/
, g" \2 _2 l' q @# D' W1 \, g} ) s" w, s2 ]# D& O& H5 E6 F4 l
printf("\n");/*每一行后換行*/ * \( r6 K3 c% }+ j) u& _
}
; L; s+ f8 A, I) X, |3 @1 p0 I}
$ y7 L& k! n! A% o. u1 G===============================================
6 C! A* c7 |& M |