下沙论坛

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

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的
    / k& g, [4 l9 Y. q0 m: y" p$ @功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。* p* R4 F; R  h6 M2 q- t

    + o( O. E0 w7 dC 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,* ]- [' W( q; O4 Y
    PC- DOS
    ( o9 D0 z7 S0 z; K6 S% h
    . h) D8 J5 l- i& j6 UWORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点: ) e6 U2 V9 G% w2 z) W

    0 Y  P  r& I5 o1. C是中级语言9 b9 _* ~0 i. q4 d. c* V

    + \$ C( t3 E' e9 p' [6 p; x( h. ~, w; Q
    它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象$ v0 D/ c. o7 d7 Z2 s. x( A8 ~3 e' R

    ! J+ ^$ ?% ?: Q4 L& b! p汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
    : W* g8 b" T; J) M
    , ^. Y( B- j# R$ n8 F! Z1 f
    : B4 C4 f0 n5 n2. C是结构式语言' x- s9 Y: e: F8 z
    . d- _4 J$ B' J6 d& Z+ j

    3 a1 q) Z5 T$ B结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的6 y# _: G" l8 s% X

    # w8 V6 u' V& K5 N7 J信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调' J8 ?! s  A1 U, P" e' ^* P6 R1 {

    # X7 e8 f; [4 F& Y  l+ ?$ l试。C 语言是以函数形式提供给用户的,3 c( g6 S8 n* K4 k/ c, N5 @5 z6 B
    这些函数可方便的调用,
    + D0 Q5 X& V7 ]! N# q$ M1 R并具有多种循
    ) Y& f" V& ~1 d+ q3 [* n( H1 v6 p% a# a' p9 f, u
    环、条件语句控制程序流向, 从而使程序完全结构化。
    % @* |# C' v/ N8 ]" w/ k# B! k* B
    1 b9 g" q, c9 n% W
    $ m" y7 z- F: Y: _: h3. C语言功能齐全
    % I9 I4 p* z+ ^7 |
    + y) |" k7 i, U. L0 Z
      U, \; F  }2 C! LC 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另* T; I" I% B3 a& Q  U+ b3 Z4 X

    1 F/ m/ K% n5 A/ `6 _, yC 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑
    / ?1 U% G) x8 m$ m. g4 z+ r+ `9 V5 C' q: C2 e
    判断功能也比较强大, 可以实现决策目的。3 ~% S) g- Q: h* K! r5 S, n1 b! N

    & S; A5 |/ x. q
    - ^" y/ h4 h; C4. C语言适用范围大
    / H" [6 \+ [5 F0 ?; a1 D: S* H3 E+ C& \/ Y' c7 _! ?$ E" g& Q* C) o

    . h$ `) L* {, H6 s" fC 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于. A/ Y7 z) b5 H; C% ~( Y

    1 ]* I5 k+ r" t3 S% l. z多种机型。7 U' @8 g0 `2 v5 a# ]' M2 {4 N
    9 Q/ ]+ x- ^( o1 t0 m- c

    # C* L7 h$ P5 C4 H2 N/ ]……………………………复制下面红色字段………………………………………* x( e, M6 g0 {+ @5 l

    + D# \. a- y; }7 ~
    " e4 y0 @7 m; {/*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */
    4 M- s( w) R5 Z$ z+ T#include"stdio.h"3 e$ L3 r$ l) Y; {
    #include"bios.h"
    8 I$ h/ C: H8 [3 o3 [& I. k#define LEFT 75/ w. T" e9 l2 }/ f' P
    #define RIGHT 77
    7 `; x" e' `4 c  L/ Y#define UPPER 72, C5 j3 w' |) q% y% s  @( W
    #define DOWN 80
    ! r! X! m2 I/ k#define ESC 27
    ' L( }, n3 e5 C/ ]- C. q9 Gstruct Boxss        /*定义箱子结构体,其中包含坐标属性*/9 h& b/ O) T* Z- r1 o9 O
    {
    / e% i0 ^9 m2 f% l( k4 X; Y" qint x,y;
    - h8 j5 Y# W: e0 X# h+ s& c' O0 f};
    ) [  a) G8 l; Y+ punion keyboard      /*定义读取键盘码的共用体类型*/$ T" O) A8 b, x1 U; R0 b
    {
    " \, h3 l$ X7 x2 z& Bunsigned int iKeyInfo;
    $ V+ c5 H9 {9 d2 I) [char chKeyBit[2];/ x* x5 O* `3 i, w
    };
    5 z3 E; p9 c9 v, o8 S8 u; L9 Iint fnGetKey(void)  /*定义读取键盘码的函数*/
    # b' u8 }$ W# }" a# z/ x( Y{
    1 E! @* S: c# a5 hunion keyboard uniKey1;    /*定义读取键盘码的共用体变量*/
    3 ^% {4 S  k- [& O0 m* I7 vwhile(bioskey(1)==0);      /*检测用户是否按键*/
    8 }7 G, ^7 t+ ]  E4 R7 wuniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/+ [! L. J# m) @3 D" V
    return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/- X, S% L; F* M, E
    }
      w* {! s% V2 dvoid main()5 U3 {4 F6 X% g  x/ K
    {. Z3 B; b8 x- T
    int iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/
    % A5 e" N6 y0 m) j  ]struct Boxss Box[4];                /*定义箱子数量*/
    ( U8 z9 b; U( \. I$ t* D; Sint chMap[10][10]={                 /*用二维数组定义地图*/
    % d' p2 N+ Y7 ~" b7 ^& V- p; _                  {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/
    3 O2 ?: ^/ b* {. ^$ Z, w                  {0,1,0,0,0,0,1,1,1,0},
    4 g& Q/ c) X% o6 W                  {0,1,0,2,0,0,1,0,1,0},$ f( x" j4 T! M6 i8 M, g4 k% V
                      {0,1,0,1,0,0,1,0,1,0},
    # v) U) d( p- C2 Q                  {0,1,1,1,0,0,1,0,1,0},: k0 ?5 u0 K$ M  ^, P) H
                      {0,1,0,0,0,0,1,0,1,0},& g8 j' x4 Y" S: x4 n* E
                      {0,1,1,1,1,1,1,0,1,0},
    1 X% v5 I1 \( b  A7 t: l                  {0,1,0,1,0,0,0,0,2,0},
    3 f, x6 L4 j3 u$ R2 w2 ^                  {0,2,0,1,1,1,1,2,0,0},
    $ I6 R# H& s2 B0 u+ O: X                  {0,0,0,0,0,0,0,0,0,0},
    . w7 B5 r& b$ M2 n& T( N" J6 z  S+ I                  };  c4 S2 V3 `* O" H8 d( m) l; X6 F
    int i,j;
    8 p7 X5 z2 a! k! QBox[0].x=13;       /*定义箱子的坐标属性*/) v) N: j9 A, R% T; U' W3 `* \
    Box[1].x=11;
    ' a0 `# l  C) T# z+ s) aBox[2].x=14;
    4 h( G7 y; \- j: o+ \Box[3].x=18;
    & N$ Q$ e3 ~/ C4 xBox[0].y=8;
    ! X! |' c* p5 @Box[1].y=7;
    ' o1 h1 s, n9 WBox[2].y=13;, J) S4 u5 d9 P
    Box[3].y=7;$ e6 N4 @* J. L/ Q) K, V
      while(1)                 /*反复进行求移动的坐标运算*/9 H( Q! @6 C- W+ O% ~# t
      {
    + G/ e- f1 l6 L* c/ p: L' w  for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/* d* S" [- p, q: K! A8 D
        {
    0 F% m* D+ {' I" C( \# ^; U    gotoxy(10,5+i);
    , M7 A8 i$ H7 f0 E: i4 S1 a5 Z    for(j=0;j<10;j++)7 L& |: S! j' r0 Z
          {
    . S+ A6 z) d9 z4 o' d      if(chMap[j]==0)
    # Q  H- ^4 j6 k/ A) @/ Y        printf("#");+ t  Q- P7 N( ^
          if(chMap[j]==1)
    * T# \$ {9 j/ z  b* L5 @- L( ?        printf(" ");4 |. p) M) X3 K7 ?9 Q& n9 L
          if(chMap[j]==2)
    0 j1 M" A( @. t5 ?        printf("X");  W2 ?; _5 X# L: l3 L3 N  z' {/ u
          }
    ( f. T) r- w! B* I) {    }$ A- u$ w: M$ M- q
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/
    - P8 N# r6 ]. u! x  for(i=0;i<4;i++)
    ( I. W6 L. U4 s1 h+ Z    if(chMap[Box.y-5][Box.x-10]==2)$ s: C  [" F$ I% {3 V
        j++;
    ) V9 K* X4 K, ?* p9 e  if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/' S9 z  l" J, b
          {; `$ [- x) h, [3 G8 q* c
          clrscr();4 C; Q+ r3 o. K
          printf("You Win!");
    * M' k5 x7 W" a/ Z2 i) v* {$ P      break;. |5 d# f6 E& y7 `
          }
    & p1 Y! U% l+ S6 g% C$ ~  for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/
    ! Z# C8 t  m* Y    {7 n1 n' O1 {% A% J
        gotoxy(Box.x,Box.y);  L8 c$ H$ o8 H$ n$ o
        printf("0");" [$ h( O% E( L# C' ^
        }+ x  u$ m8 _* {3 f9 W1 f( z8 \
      gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/1 W6 I* q1 g  z* x
      printf("*\b");
    0 Y( V$ {; s5 \0 F! C  tx=x;                                      /*记录本次移动前的坐标*/6 m3 _9 B8 I6 o* L
      ty=y;
    3 N# v" `% k4 j# e9 N; x- p" w  iKey=fnGetKey();
    4 {% Z: x0 ?' R" S8 B. u' s$ P  if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/
    0 [" s0 q7 t- i$ ]+ a) p" p; ~    x--;+ D6 d/ u: G& w  K5 K; n! Z% e
      if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0), o# B# I' s) {: D+ M
        x++;) B' v+ c3 v# w* r% y. x
      if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)0 d; `* Y$ D# g2 c  ^- S. a# ?
        y--;
    % \3 v4 b6 D- N9 k) {4 T  if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)1 H% d9 c  w1 V4 @& J5 I$ \6 @; z
        y++;                                    /*输入ESC退出并输出"YOU LOST"*/1 \. Z( g  P( Q! ^
      if(iKey==ESC)
    6 G6 p; q; `+ d7 k  {8 K, a, n# q- ]3 x
      clrscr();2 V5 E" a  ~8 E- ?
      printf("You Lost");
    # P. a* Y+ c( E# _# r- s  break;- x3 {) P+ l/ a( D% \4 \
      }' C, |+ n3 }6 W0 x% O, ~/ G
      for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/# u$ G! a7 A- @/ i& X& I( i
        if(Box.x==x&&Box.y==y)' I/ h' p$ q& F1 b# I+ a
          {( I1 q2 w' J1 p+ w
          Box.x+=(x-tx);
    2 E) @% G! P3 w& p* f) D      Box.y+=(y-ty);
    3 g" K4 m6 J" q1 ]# V4 Y    if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/4 l" k* G, J. V$ S: p2 [( Q
          {
    8 ~' S$ P9 |8 g1 c' h0 X; g      Box.x-=(x-tx);' e+ f* ?' R: H' u
          Box.y-=(y-ty);
    & u. E( T( h. }, Z) D4 J      x=tx;; _- ^) T$ M) u+ U3 j
          y=ty;2 i1 U8 H* c. H
          }
    8 Z8 }( i. ~. w  t      break;, V' t/ D( Y7 a2 Q: M
          }
    . y: h/ V6 T0 K  n" C  clrscr();+ g/ T# E: u" j7 m
      }
    # w% D. _$ R. g+ }9 \getch();1 U- b7 C9 Q# [  X3 \
    }; [9 D* N" Z: t) A. d( ?# g
    2 p, B* j- _! Z% e
    6 ^. t# T  M1 A) u6 \5 p$ S+ W! L

    & i  E8 f* C" ]5 P! R………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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