曙海教育集团论坛开发语言培训专区C语言开发 → C语言程序开发经典实例


  共有3298人关注过本帖树形打印

主题:C语言程序开发经典实例

美女呀,离线,留言给我吧!
wangxinxin
  1楼 个性首页 | 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:青蜂侠 帖子:1393 积分:14038 威望:0 精华:0 注册:2010-11-12 11:08:23
C语言程序开发经典实例  发帖心情 Post By:2010-12-10 9:53:08

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?4 r% |! S3 B1 O! O( k% G

' p" v/ _% ~2 b  1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
7 [4 O9 k1 P% L) F" \; ~2 D
' i+ l" v2 ?8 e8 D6 ~  2.程序源代码:
5 D% k. {$ ]  u. F0 \1 [$ P# S
; L) ?0 u" r, Z2 R6 ~. {main()
6 O9 Q  |( J$ L  k/ H/ J{
9 I2 Z5 _5 N" [  c6 cint i,j,k;
8 Z% o8 s+ Y4 ^9 Nprintf("\n");
6 i: t4 v# c7 ^: lfor(i=1;i
9 W" X) h8 D' c$ e! M6 v  【程序2】2 M6 n# H! I- X- m0 u

5 u0 x' m* M" M) x+ }$ G  题目:企业发放的奖金根据利润提成。利润(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

1 H. ?: D7 s. |- U) |7 g6 |- G, [# ?! e  2.程序源代码:7 w* m4 Q) G0 E  n7 q! U+ Z' ^/ F3 ?

  A7 l6 a; m- V! D( k$ mmain()  s) i1 j9 A5 O( T5 N, h; S
{
& R1 p% ^4 h( j9 Rlong int i;- u: b" C* _* L  h
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
, s7 x) D- R5 [! }  }4 G+ ascanf("%ld",&i);
1 z# _$ |' e+ {7 ?8 J$ {bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
& J! ]5 h( h9 t( B: Xbonus4=bonus2+200000*0.5;
( m: K0 L% c9 N6 `& ]! v  B; Pbonus6=bonus4+200000*0.3;, k+ I6 F# q0 a/ C, X1 r+ o
bonus10=bonus6+400000*0.15;
% h- j' }8 Y4 B9 ^2 r) y if(i6 M2 z8 p4 @; A2 P+ p
  【程序3】, l: ~% ]* e" c' }" t8 K9 b* Y

' w* K; U& l5 v* A% _8 o4 x  题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?" H2 l. H( p' p4 v6 I

  s$ r9 o* q, C' R, R   1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:
2 H" b% d5 H8 L) v/ ]* x
  f" d8 L" [" y9 x- D, K# b8 m$ m  2.程序源代码:
$ o% R1 w/ c0 x9 \2 D; ]8 a9 f2 I
: c& Y! W( {6 ]# ~6 v! c7 B#include "math.h"2 }) X* s8 ^0 Y! }' v1 w  O- W! G
main()  V$ u8 F7 h' F8 h* `) w- h
{
* J9 {- _; L/ x& m' s( _long int i,x,y,z;0 Q% \0 V5 h; H) l9 X1 Y
for (i=1;i
4 ^8 f7 E/ i. ~- b! r3 D8 z- p. x: P【程序4】( O/ \3 c- \  O1 t% ]5 K  ]; g3 T

5 z% d2 M* J& s' z/ [% M* y0 x( y* r  题目:输入某年某月某日,判断这一天是这一年的第几天?
4 r9 \0 O, B+ V* G, k1 q
; R) q2 B2 Z8 \" m  1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。) M) D- q- ]2 h6 l
5 v* {3 x( ^/ S( a; h9 Q% L# ~
  2.程序源代码:
, {8 Z& D& ^/ N# {' z9 M5 S6 S# V4 B; F- E$ {
main()9 F2 j" x% M+ C/ _0 S
{
: S: I+ U( s$ ]2 s' I6 nint 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);
0 u3 @' v7 x5 R" Q% p6 eswitch(month)/*先计算某月以前月份的总天数*/2 n0 Q1 s7 v5 i2 g" y
{
- C/ Q% c: f; t6 m6 ]" y$ t case 1:sum=0;break;; u- n( S+ G( N3 |/ [
 case 2:sum=31;break;
8 k- Z0 D' K+ j4 r! ]( i case 3:sum=59;break;
3 {( e, U: H- o" J  S/ u9 O& T case 4:sum=90;break;
5 u/ p6 p% w. g) M' Q# z- R 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;
* {: g7 ?* g' q  j! f/ f case 9:sum=243;break;+ _; e. {7 `( L  T! M7 g; Y
 case 10:sum=273;break;
" h1 R* Y6 f$ F' [2 R case 11:sum=304;break;  P% |6 Z" G: h% L* n6 D% [+ X7 _
 case 12:sum=334;break;
- T5 Y- `( Y" C9 l default:printf("data error");break;
  g3 p$ z1 ^& g, c6 J}
: a3 Z& m3 B+ A+ u. g6 vsum=sum+day;  /*再加上某天的天数*/2 Z: g8 V6 o) \! A% q  t
 if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
* p* `  B/ R" O& P# B( M  leap=1;
9 H7 B) F! w; Z5 m( A  r, ] else
* p* Y9 K9 ]. \' N% \) s% Q  leap=0;& g1 g* y1 Q8 d" e% ?, o
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
* W7 z/ S! j, \/ f; O8 o' H9 m  w# zsum++;
- ?) n4 t3 v5 n8 N1 l; xprintf("It is the %dth day.",sum);}
# X% N# d  {! F  a! p  【程序5】2 M5 @$ @6 b  n6 K4 K7 o  }. s

% G4 p$ V  V+ k8 D, k; Q  题目:输入三个整数x,y,z,请把这三个数由小到大输出。( B) G* z7 a0 {$ m

2 D. ?3 ?! E3 z  1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
; t& K; l& }/ P4 s0 ^- B# s  o9 ~5 d
  2.程序源代码:
5 ]5 _; z. r$ d7 O/ O8 |+ ^
7 e9 n! g! [) w6 O& ymain()% y& u" O9 S; a2 n2 x- h
{
! L' i* N8 n1 X$ i# A5 [: a int x,y,z,t;
/ J; T0 c6 _! j! N+ }3 Z8 k scanf("%d%d%d",&x,&y,&z);
1 [, |3 U$ \! Z4 c1 G5 L+ C2 d, x 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)
9 s7 Q' k# }# n/ L( z% T7 {) E  |8 U {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的值*/
  I" H. A9 N+ T printf("small to big: %d %d %d\n",x,y,z);* j6 w1 e" }# E7 _0 }: Y1 v
}
* c# k% o% s% K  【程序6】
3 c% @1 V' \+ i& z1 p( q, `& t! O: J# b/ c7 p" P& k
  题目:用*号输出字母C的图案。+ A8 h2 ~4 D( l; u+ n7 o

5 |) o2 N/ Z# ^/ H9 a  1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
; W; c" h& y" V  @8 x- q! S% {8 c, z: [  j/ S- }( f
  2.程序源代码:
9 u  C1 Y4 K; O& K! y& I1 I7 ^* Z* n4 f& w, b/ K$ y" K- |
#include "stdio.h"
* f3 g' z& m( @9 ?: i1 w! A" kmain()5 i" b! t1 t; ^5 N/ u7 J* L
{
  Z: X1 n. w! g8 o& `2 aprintf("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");
; G, l. }/ W7 R" x  w" [9 c& kprintf(" ****\n");
- T9 E. e- X8 p8 r7 b3 Y}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

9 |7 t* C( X1 y6 K/ Z  1.程序分析:字符共有256个。不同字符,图形不一样。      & V6 ^7 L* f9 K6 L
8 m5 ]$ K" K3 N# s3 M) @# M
  2.程序源代码:( {: |7 i5 G* a, t& A! f

# n. u' Z* C: n# x4 q; d#include "stdio.h"
. Q; }- H$ K: _3 {main()' C- Z# k7 i* d0 X! W: E9 _( f
{1 U+ x$ U& H3 ]7 J. X
char a=176,b=219;
+ l0 t: p% I4 n2 T: u: gprintf("%c%c%c%c%c\n",b,a,a,a,b);
+ \, F, }9 S3 d- ~- ^printf("%c%c%c%c%c\n",a,b,a,b,a);
' G+ m) B0 w$ l% Oprintf("%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

" N& F8 G! y/ J( F: ?  题目:输出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 ^

8 [  X" G$ `; }; q$ Z7 C# {  y  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()
% w6 C! A9 H" f& r% @' {3 K{. g% s: z8 S/ J
 int i,j,result;
7 f6 ]% t4 a- K3 s; ^$ U printf("\n");* d/ V0 B! t& B" O0 k* k5 g. k6 @
 for (i=1;i: U# u! O9 L, j
  【程序9】
2 r4 p. b5 ?' O+ C5 c
% Y; R! K$ E3 c' w$ L" ~2 s  题目:要求输出国际象棋棋盘。
" u0 P& }1 D/ g# t+ i% 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

5 I- G# f, }/ L6 I4 t- @9 J" O. V6 M! o#include "stdio.h"" W" F  E; p% x
main()* I" B! G9 S( F5 I

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

C语言程序开发经典实例








签名