下沙论坛

 找回密码
 注册论坛(EC通行证)

QQ登录

QQ登录

下沙大学生网QQ群8(千人群)
群号:6490324 ,验证:下沙大学生网。
用手机发布本地信息严禁群发,各种宣传贴请发表在下沙信息版块有问必答,欢迎提问 提升会员等级,助你宣传
新会员必读 大学生的论坛下沙新生必读下沙币获得方法及使用
查看: 2391|回复: 0
打印 上一主题 下一主题

C 语言的特点

[复制链接]
  • TA的每日心情
    开心
    2014-7-28 21:47
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的
    / ?' q3 P9 E' d9 I/ }功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。
    & [4 i  }4 Z/ H1 A$ P9 Y" [  |
    ) }0 [& I/ }* J  o; r% y  p; V; QC 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,9 Z# a' ^9 H, m$ t$ y! Q
    PC- DOS * B# T  T7 J' V% r4 h. b

    ) d' o  N9 P! E. v) J. _WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:
    * D' ^( B; r( i$ Y. x" D2 c6 V! X) C( p0 w# i. D
    1. C是中级语言  ~) e' U" n3 T" }/ \) M$ w

    $ W! H$ m! e. _' I' I; W4 n
    4 ~( x  a- j1 i8 ?它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    # n% ]  m" ~+ b  B: S# f
    ; m4 M: N( J7 c% z, e汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
    " L! M" S/ i2 t0 ?; q( Z2 u* e6 {6 z
    2 d0 s- s/ r+ w- g* j% B/ O5 Q9 v
    2. C是结构式语言
    6 s0 T( ~1 z6 I  V7 M3 ~
    ' b; z2 m9 ^  f) O0 X# @. b
    + H) e( P5 Y' H, x结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的- e2 S* Z8 f& i
    2 i7 q5 p) S: s+ x: E; y$ W
    信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调" f* E. J, [0 L# L8 u9 Q

    $ r. q1 K9 |2 i试。C 语言是以函数形式提供给用户的,, ~1 I3 Z: }3 a8 [0 |; A# E3 `/ d& c
    这些函数可方便的调用,  S8 E9 t: U1 J3 Q/ p' X
    并具有多种循! I7 a! Z) |) T1 x! B

    8 |* y! q% M6 y  p( U环、条件语句控制程序流向, 从而使程序完全结构化。6 E% s( i0 m4 C
    2 U/ L  e7 b' a( y/ N. k0 p
    & y- B# ?4 [' l% I  K; D
    3. C语言功能齐全' p& _7 @" F5 B3 @
    5 R. {8 t) f" j1 Y) x% P: K

    6 V. P6 \( m+ k1 h) K6 P* JC 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另, t1 L, ~( Q" E# `% w
    6 S1 q3 [- B/ c6 d
    C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑' P1 |- X# A- V: b+ G" i) n6 E; y

    " w) \5 R6 }( V  S1 C  k( Y1 s判断功能也比较强大, 可以实现决策目的。9 K. l3 H! z! G3 r
    " o) e8 W3 _6 M9 S3 C4 s; q/ g
    ; ?# ?9 [) n% A% ~! e
    4. C语言适用范围大
    2 Y/ c7 Y" {5 c7 N3 t; _9 A( a# L& B6 f" l

    & r; Z" c2 A% m6 n, C' s) HC 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于; P& E9 ~; q& k% P+ V

    3 I' l6 a# l1 n& W3 k: Z$ h多种机型。
    % J) A* }  G6 p
    3 u; o# X) [2 K8 y6 b$ f/ {# `1 P1 d
    # O! t0 r& I/ ]- |0 `6 w- I9 \+ G- S4 P……………………………复制下面红色字段………………………………………
    4 t" m' {) |. m+ c6 v2 B
    9 j4 }: n) k) ?; Y
    5 c! s. `9 s- V, \+ U/*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     *// s% G9 e; X2 d* Z
    #include"stdio.h"5 T- f" L2 O8 n9 L, U, H0 m) _
    #include"bios.h"3 ~- B4 P' s' }5 N
    #define LEFT 75
    5 G( K6 w. e6 T, t#define RIGHT 77
    ( N5 p6 \4 j8 A#define UPPER 720 v, r% \" p1 p" Q( P) q) J- w
    #define DOWN 80
    4 Q+ v# x* ~9 Y& P#define ESC 27# Q( |  {& l& @( O/ h6 {* q5 Y
    struct Boxss        /*定义箱子结构体,其中包含坐标属性*/. L1 {+ @; u' w, ?: M. W* f9 E
    {
    ) P2 r2 y- t4 x, Lint x,y;
      _  a( O# T; t3 m7 J/ w};: O! r, M4 k3 x  ?, e
    union keyboard      /*定义读取键盘码的共用体类型*/# D, ]( H% @7 {$ s
    {
    3 n% I9 f0 T9 d* }% R$ junsigned int iKeyInfo;
    3 m+ r: N7 y6 y+ K8 Dchar chKeyBit[2];
    1 E/ g3 I# g, j0 N$ E};
    8 \6 w# J* g" q9 O# ~int fnGetKey(void)  /*定义读取键盘码的函数*/
    * D7 Y  U6 p7 K( e' f6 x6 R! |{+ C& Y% s9 H1 n* y- a
    union keyboard uniKey1;    /*定义读取键盘码的共用体变量*/
    0 j4 f, P8 F2 b4 [, X$ |8 q6 Qwhile(bioskey(1)==0);      /*检测用户是否按键*/" Y  ?' @  p$ s; [$ h  A
    uniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/7 X, ^8 G0 S0 Q7 g  X5 G
    return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/2 q8 Z" D8 E; H# t) F% f/ J4 j. _
    }+ r, f2 e1 c5 R) r! a. ?6 k4 p
    void main()
    ) [( F$ n# d# m1 M+ l" z  F{5 N2 j% W; z3 M" a! y
    int iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/; {# X- \0 G2 W
    struct Boxss Box[4];                /*定义箱子数量*/4 P2 y. i: S$ a- \- V
    int chMap[10][10]={                 /*用二维数组定义地图*/' @0 c' l5 O0 l3 Y
                      {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/
    , y9 e6 g5 L2 a1 p. n0 ]( F                  {0,1,0,0,0,0,1,1,1,0},
    * I1 X( F. _/ W2 A7 S                  {0,1,0,2,0,0,1,0,1,0},( p- j  g- C& ]3 {- q. Z
                      {0,1,0,1,0,0,1,0,1,0},! G" g# s) H2 A5 F; J4 L& k' r9 d
                      {0,1,1,1,0,0,1,0,1,0},) ^9 `% v9 c1 q- @
                      {0,1,0,0,0,0,1,0,1,0},' q& W( A# {+ j) T& r5 G0 _
                      {0,1,1,1,1,1,1,0,1,0},# ^/ N( O) ~6 i! S
                      {0,1,0,1,0,0,0,0,2,0},. w8 T) t. @8 u: Y3 m
                      {0,2,0,1,1,1,1,2,0,0},
    ( [3 y3 s* j$ Z1 t                  {0,0,0,0,0,0,0,0,0,0},: @6 i: x6 X0 h! f' f9 N! ]+ ^7 ~
                      };; U) u* P5 Z4 q
    int i,j;
    $ L' W1 T5 |7 y7 d/ i: O4 ~9 lBox[0].x=13;       /*定义箱子的坐标属性*/9 R$ B* r1 V: t0 b, u1 @9 k2 m/ ]
    Box[1].x=11;/ c- l4 {( A7 e5 Y. \
    Box[2].x=14;
    ! e3 ~- X- U1 A5 Z! F; vBox[3].x=18;: h6 M9 n( {0 K* r& G
    Box[0].y=8;
    . t! {% h  Q! L# g3 r9 dBox[1].y=7;
    $ ?6 r0 }2 p6 x- PBox[2].y=13;
    $ j9 {3 z, u+ @+ J( }8 XBox[3].y=7;# p+ B) q9 o; k
      while(1)                 /*反复进行求移动的坐标运算*/  X* n% |0 |6 K" z4 v
      {- j. U1 S0 a' u* C
      for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/! y2 H7 i# O1 y) _$ z  a% p# d0 ^
        {
    1 H- K) ^. v( C    gotoxy(10,5+i);9 Q" o; A' y3 E1 Z8 q  N% u
        for(j=0;j<10;j++)1 D. X$ ~6 y5 y
          {! N0 X! m. E- z  a3 X7 }  M- D
          if(chMap[j]==0)
    4 B/ r) c5 G8 L% X& m2 j3 v        printf("#");2 @4 l- O( Q$ ?/ @1 I
          if(chMap[j]==1)/ X5 {8 f& i3 `% R! Y
            printf(" ");" T0 s  I+ |9 V2 ]) E! n  D
          if(chMap[j]==2)0 J  E  b6 \# u2 L9 U# }) Z
            printf("X");
    : {( h: s) B2 O+ ^1 A% W0 x      }" ]1 f3 P/ H, z, {3 ^* W" V
        }
    5 z8 B. s1 S5 L0 k  W5 ?' ~  j=0;                                       /*判断是否所有箱子都在目标坐标上*/% x9 a8 w" v3 w- U' O  Q
      for(i=0;i<4;i++)
    * m) i! N! F0 a& P$ b- B    if(chMap[Box.y-5][Box.x-10]==2)
    5 B# c! B) ^- n( X9 v: ^# X    j++;
    # M( s: b/ j( ~8 P& J2 ?  if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/+ h/ b8 {7 V7 u. y$ G# o/ i
          {' I# u8 u. _1 ?; B
          clrscr();
    6 C4 N$ g( B( z9 ^9 u- S" C      printf("You Win!");
    ! U8 p, j, u# v2 W      break;
    3 g! ], I# _" s# q) F      }) ~' |3 X" A  ~
      for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/
      ~- Q: W+ D6 O% t) e    {
    # C9 |% C: H1 j! F) i7 n# i. |! v    gotoxy(Box.x,Box.y);
    / v$ }( |2 X3 L& n0 r    printf("0");
    " I: U1 s, V8 z- a    }
      M/ t6 s9 D' {. ]) E: y2 m  gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/; r6 a. R9 t' j- ]
      printf("*\b");
    0 n, |! {* B! i7 z( U  tx=x;                                      /*记录本次移动前的坐标*/
    : R/ l) j5 @8 A3 ^/ e1 \  ty=y;
    / Q/ E* X! S; D0 C" D  iKey=fnGetKey();
    ! v; P! t! k) W/ X/ i  if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/
    , w/ K( b, w; i# l0 p$ x8 R  S    x--;8 H" _. R2 T; n& ?' w
      if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)7 p' k; m4 _% n6 g
        x++;
    0 S, s/ E8 ~3 \8 V. G4 X7 T  if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)
    " N* o& y) T% V& D. F" l) ~    y--;
    2 a0 P7 L1 h6 ~8 F  if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)
    7 S  [2 L6 u' y3 G9 Q% `8 N    y++;                                    /*输入ESC退出并输出"YOU LOST"*/# F3 e: o' a+ h% ]- b! l, n  N
      if(iKey==ESC)8 Y9 J! C+ H& J0 }
      {* H- x) |/ N0 z9 s
      clrscr();
    : V, b; s' z" |; h# V+ ?  printf("You Lost");
    2 Q' V, u! n0 W/ t+ s* D  break;
    6 h. z1 G$ L# c; b8 \+ \  }( [* b- \# o* a9 Q9 T. M
      for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/
    / p7 ~, R& @8 v' K5 n5 f) W    if(Box.x==x&&Box.y==y)  c. ]5 k/ h  D
          {
    + d& s- M& k6 o6 V4 Y9 U      Box.x+=(x-tx);# Q" X) ]5 i# R" \& C9 Y& ~- k
          Box.y+=(y-ty);
    1 z1 k, t, P& l    if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
    0 }; i6 R7 j2 T; U* S- N      {
    8 y* u4 ]$ D% b0 N7 {      Box.x-=(x-tx);; F& N5 ^9 X1 C% e1 [. r- l) z, A
          Box.y-=(y-ty);
    7 v& ~8 R3 X* Q      x=tx;
    1 @3 }% u! D7 a$ z. [9 o      y=ty;
    " Y  z5 ~! \# j7 e      }
    1 X) k: |) a# I* `      break;( [" A) b( r: z! ?+ p# Y
          }
    $ Q1 z5 ]# H3 [  I3 C  clrscr();
    8 Q( n; G3 e& j3 x: K/ T$ i+ V  }! C4 a+ K& J! v8 b& F: |8 J
    getch();
    * ]2 ]5 H8 n% P) h3 y}
    . X' Z7 t4 u4 X; b2 {

    / K$ M- G5 g$ |) w4 J% q( s" P

    * C, k/ ]7 w! @1 P* D( f 4 p' _5 m( D  [) y5 Y
    ………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

    下沙大学生网推荐上一条 /1 下一条

    快速回复 返回顶部 返回列表