下沙论坛

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

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的
    7 W* a1 Z8 Z& ^: W6 b; y功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。
    6 ~* Q' O" N* \% P+ t' `( V% T& W- V% \" i2 H$ o$ A0 }
    C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,
    - m! H7 m) @7 ~/ F! tPC- DOS 0 W+ l4 _  [+ D5 V
    9 o! M- t( ~! }
    WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点: * g# d& a4 y( p3 `$ U* D3 Q  C% G

    4 d/ r" G3 y, ~$ Y2 ]) L1. C是中级语言
    . b8 I* u8 k5 [/ v% R! }/ c! [( q" J  C- B7 {/ q) m1 j% C
    , q& F) x5 H  A5 [! B! y
    它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象/ f0 ?8 E; h  B6 X6 |# U
    $ a4 L7 e4 @. X! T, E( y' V# c
    汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
    ( Y3 n+ K3 ]: i9 {9 ^& R* O! ]
    ( K/ b& f, B& ]" w8 Q6 C7 }, U: k, {1 [) D- u! l& a1 q$ U; y$ _  {
    2. C是结构式语言3 I2 d% t, G$ M# p! q- }
    8 a+ _8 v  C% @! c" W9 H8 ]
    / C% Z6 E4 ~( o) r/ k7 x
    结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的+ @* i6 u( h; }

    3 ?( B" ~3 B* J/ u7 Q信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调. [7 G8 h3 j1 G5 I$ \# i
    # I* K3 k/ w% b
    试。C 语言是以函数形式提供给用户的,& Q) \" @) l: e9 G9 O  I7 q. r; l
    这些函数可方便的调用,
    ; |% z# `. ~) s) V并具有多种循6 g, Y. |* H% u8 C7 L

    / T- S6 }) e1 K  q# b* [环、条件语句控制程序流向, 从而使程序完全结构化。- ^! {4 m" d, B: v) `8 B

    6 M* H- Q9 b2 j/ H8 j
    ! @: d* b' o5 E4 `3. C语言功能齐全
    9 n: ~* X& S( \' z" `! A4 y9 k8 T5 X& [4 w2 e! @

    * V$ H4 O* B- Y) t3 IC 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另
    2 `/ a4 N1 g  _0 o
    8 O) [' J% c- `) {: |C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑
    1 A: W8 ~9 J. f+ V4 \6 L
    4 N& O/ n& q7 o: H8 u7 A$ t判断功能也比较强大, 可以实现决策目的。
    7 b5 E3 P  [, {* s7 M& T
      ]: ]: i6 {& s: n0 t9 A5 n5 P0 o0 @$ s9 E4 c( P4 t
    4. C语言适用范围大
    3 U/ {9 [" P0 k9 a7 x% ]" _; {1 q! |2 A# i) Q7 V' s

    3 u6 J- G% Z/ }0 _) A0 G- ^3 PC 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于" I) T/ y) S  \+ _; q! |

    ' J- {# t3 t) o8 D( O多种机型。4 {4 \+ y. m$ B+ ~  O  W
    ! F8 e) _" I. b, E' K
    1 Z1 w* |6 U2 N* Q* \
    ……………………………复制下面红色字段………………………………………, Y  Z8 l( j. N0 @+ w: y
    9 P+ u; r7 H3 p& q
    ' m+ h0 D0 ^6 _2 ]6 ?8 N
    /*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */4 g9 v0 m! k$ n% ^
    #include"stdio.h"% u$ a5 X8 Q2 J
    #include"bios.h"
    " d( T2 A+ \9 J' W" W. j+ I( d; r#define LEFT 75
    - {  j" U2 h' L! j#define RIGHT 77
    , K0 V7 T" R" f#define UPPER 72
    . X& i: U% @# {8 A/ E3 C* z# I# `#define DOWN 80
    0 \  R2 D" d- O#define ESC 273 z  U' R# v5 L% |" X6 u
    struct Boxss        /*定义箱子结构体,其中包含坐标属性*/
    ! z  z9 A" U. `4 u4 z{
    $ H% S: F! y; @1 E. ~int x,y;6 {1 p3 a0 S, e( I. i
    };( ^+ ?3 n$ W9 N( J; u2 F3 A! K' ]# g$ ?
    union keyboard      /*定义读取键盘码的共用体类型*/) o; X) t! m# D2 p
    {
    ; F8 J  i% X/ \- W9 Vunsigned int iKeyInfo;. h+ K1 I5 F: D1 j* ?3 K/ X
    char chKeyBit[2];3 ]- @& I3 ^+ x6 l( A9 a) E
    };. r& A& |9 g  r* K) |; O
    int fnGetKey(void)  /*定义读取键盘码的函数*/0 V8 R% ]% e9 ?& g0 N
    {0 w0 M- L( N: _( p
    union keyboard uniKey1;    /*定义读取键盘码的共用体变量*/
    3 i! w" V) G. c) ]while(bioskey(1)==0);      /*检测用户是否按键*/+ A+ O' b3 {# s: L8 A
    uniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/
    0 C5 v! {; {& R8 f9 m7 yreturn(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/
    % a0 t/ }$ ~- c4 r: `- a8 r9 A2 U}3 ^8 j8 U; \; c6 C$ A- R
    void main()
    ' Q+ R" o! z: j5 \/ h  c{/ w  X4 e; W8 h* _$ n& F
    int iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/
    + z- z$ x, k+ R, S' G& h' \struct Boxss Box[4];                /*定义箱子数量*/3 n' O$ p. Q, s% g
    int chMap[10][10]={                 /*用二维数组定义地图*/
    7 {# N- K. ^8 R! @                  {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/" b+ J* Z& b8 f1 y- t" q+ e0 G
                      {0,1,0,0,0,0,1,1,1,0},
    , e" J. Y! f8 s, y2 X0 D                  {0,1,0,2,0,0,1,0,1,0},. k0 t% r& U8 \# a0 l
                      {0,1,0,1,0,0,1,0,1,0},
    $ ~+ P8 F6 ~. R4 R8 q* d2 F. v2 r                  {0,1,1,1,0,0,1,0,1,0},
    9 Y/ [% ]! ?% d                  {0,1,0,0,0,0,1,0,1,0},
    ; \$ S* v# X5 C& \                  {0,1,1,1,1,1,1,0,1,0},* S# h3 b$ A6 |. M+ {' Z* H
                      {0,1,0,1,0,0,0,0,2,0},
    3 U( U8 c' h( k- Y                  {0,2,0,1,1,1,1,2,0,0},
    ; i' z+ l9 F( _                  {0,0,0,0,0,0,0,0,0,0},
    : f9 z( d# @& q                  };
    7 t; A: m3 \8 p: ]9 C7 a7 qint i,j;. `2 F- o, s5 N& o% z! n* O4 a
    Box[0].x=13;       /*定义箱子的坐标属性*/
    3 P8 Y8 S' l2 ?5 k. r1 o+ jBox[1].x=11;3 p, j% h$ y, N0 U
    Box[2].x=14;6 M7 D1 I. Z5 f
    Box[3].x=18;
    " m% h5 Z0 ?) \: s! iBox[0].y=8;' G/ Z$ h8 t% X7 ?, L# v- F
    Box[1].y=7;
    4 j* B: T- {: w$ `% J* bBox[2].y=13;9 p$ }( N7 D! k- V2 h- t
    Box[3].y=7;
    . z8 R4 Y" D4 w  c  L& x8 ]  while(1)                 /*反复进行求移动的坐标运算*/0 v/ |* T" n5 ?- q& H7 Q6 ~
      {
    2 w5 f' N( i2 H& }5 g* H! n  for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/
    3 k3 T4 J$ Y, }* B# |$ S3 ^    {
    . t/ h6 J! b) ]2 ~3 z  Z    gotoxy(10,5+i);: Y3 g2 x( c" `4 J% [) l- t
        for(j=0;j<10;j++)7 {# a+ P' @' A0 P4 I) j; d( d$ G
          {1 d* ~0 }0 Y1 G, b  u4 E! L
          if(chMap[j]==0): o) C# n( A$ p2 o8 D5 h+ S0 V
            printf("#");
    6 k; T- m( V7 u8 \  S      if(chMap[j]==1)6 p" ^7 z$ y% G" i
            printf(" ");
    6 l9 Y. e8 A; m. }      if(chMap[j]==2)
    + K/ _# ~6 s# r4 W0 y. `9 I- J2 g        printf("X");$ E( J0 k" [4 F+ ~3 Y3 w) @
          }
    6 z# @4 ^, K- `    }" J7 E- [: _( p! K: U% Q" r+ C/ A
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/- G+ d/ I3 o8 f  M
      for(i=0;i<4;i++)
    1 r" F3 X% M" |0 d    if(chMap[Box.y-5][Box.x-10]==2)
    + V" c1 C. T* m9 k    j++;
    ' [2 C2 w+ o, C7 A0 k, \  m8 v  if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/
    7 r8 o1 s  V5 o( C1 \      {- Q8 v3 S) t" H' [! ^+ _8 d- y$ l
          clrscr();7 \* {2 t6 ^4 y3 l
          printf("You Win!");4 M; q0 I% I7 X/ n& q3 ~
          break;3 K& Q8 B) U# o! y
          }1 B& ]% b, T" x  w
      for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/0 D3 v# ~& p, O; n. p3 _
        {
    2 {% Z9 F$ m0 r2 x" L    gotoxy(Box.x,Box.y);% s" r: j6 G/ [2 [. m7 f
        printf("0");+ E2 B& X, v5 D6 {" O
        }. [, C0 p) ]9 r2 |7 a! [3 V  f! d
      gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/- `" y$ N- K7 s0 U
      printf("*\b");
    7 O" K  W$ D. h9 \  tx=x;                                      /*记录本次移动前的坐标*/
    , _- `  S, j4 }5 I& o+ e  ty=y;" b1 s2 P& @2 q! a! `# j
      iKey=fnGetKey();
    5 ]6 f* `8 p& v  if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/  x/ ?( p$ @" e4 R* J
        x--;
    5 p# i( [' `# l% B6 Z  if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
    4 a, d, `; r4 H  ?1 [    x++;
    : Q) Z- {( u* ?- Z$ D% u3 b  if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)3 m9 n: I" Y& Z* Q/ O4 X2 x1 j
        y--;
    # W. h* h" w, C, k  if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)/ V: P& F+ H8 o6 B5 ?- R# ^  E
        y++;                                    /*输入ESC退出并输出"YOU LOST"*/
    8 D2 V! c5 a' {: s0 K3 O+ }  if(iKey==ESC)
    4 K- R! ~; }1 Q8 J  {
    ' O( N; ]. d" T  clrscr();
    3 c6 r' P& r5 y7 C) R0 [$ ?  printf("You Lost");4 b. \1 W  Z6 |2 Q
      break;8 H5 B% x9 h# X1 b
      }
    2 F: F: U# L8 G  C! L  for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/5 m: X! }1 j7 ~
        if(Box.x==x&&Box.y==y)
    7 f5 v7 o: q& c7 i% l2 y- }' b      {, y( ~( J1 S" _# @6 K
          Box.x+=(x-tx);
    - {4 j4 k. |# Z) r# W      Box.y+=(y-ty);  F2 y& {! e/ ]0 c3 I5 f, O
        if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
    * e4 c$ c, D: D/ e      {8 F( ~7 E5 }' `/ s
          Box.x-=(x-tx);6 g9 u# y% X# q
          Box.y-=(y-ty);  L% D4 @1 r6 y4 M  F( f
          x=tx;
    0 {0 E) w. w0 G: Y      y=ty;
    - a$ U5 J) f* ^0 k* M& G      }
    ( g* c& t  [0 U: q. Z. @      break;" J4 S' e% R7 M! @# v/ J6 t! \9 ?
          }
    . p% @5 q5 f. w& O  clrscr();9 Y2 ^; G; b1 c! _* C3 |
      }
    * a7 P2 S  \9 m$ B" {8 A$ Egetch();2 F' H6 M) L) x% z) o: T
    }
    ) N( y) V6 |$ M' s& C0 t# |3 ]

    ; {2 ~' l' y. m
    % a( Q' I( s" A# k8 i$ T

    - X, ?; w; Z0 W  g" P………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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