下沙论坛

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

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的; G$ m. ~8 b) g0 M  e/ r
    功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。3 ~: y# _9 z. U& t& |. g' w# f$ \1 m
    % ?- |4 p: F6 Z2 w& s- a0 H( ?
    C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,
    * x/ c' h) I  n( \1 s/ ZPC- DOS
    2 u! A, a  u4 P& I( f3 [2 e* `9 P- U8 d& A
    WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:
    8 b, ^. u4 Q9 R# j
    ) }" n- o4 A3 x) ?1. C是中级语言
    ' o7 u  B4 @" m- ]" w* G- @( R2 Y- ]. q

    ; z+ l& F8 P7 C( n$ T. ^! K7 j9 ~5 Z它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    8 {1 J9 D8 T% b; v- W9 y$ k' k2 x1 E2 {/ \% n
    汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
    % z( N) @: F; [0 u2 m1 O# l& X. O) G1 ^5 x

    / N0 s$ w' ~2 r% e; ], t$ o1 p2. C是结构式语言' c6 \. E# F% k& Y( K4 x
    - L- l: ]. E: E
    . B, i9 @$ k% l
    结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的
    - U: _$ p& i. F( q. U
    8 }% e% j. f) e- s信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调6 \6 Q! L" N; z3 R

    ' n9 E8 z% x6 N试。C 语言是以函数形式提供给用户的,
    . d* r7 n! o2 n3 H$ l这些函数可方便的调用,
    ; J. I" c1 i0 f) n并具有多种循
    / ]6 {9 F: `( i* ^0 _4 g/ X
    / ?5 e! \; h1 a环、条件语句控制程序流向, 从而使程序完全结构化。
    - y% O; |- i/ i3 r# `9 h) ]& m* s# e$ A( x9 S
    ) H* y8 ~! z. H# _/ W, T
    3. C语言功能齐全* u5 I8 j; i) n$ l, s4 C, L
    ! d9 I( p1 |/ Z$ T; b
    ; {, A# V# D) z8 a- y
    C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另8 B% y" A3 v& s% h

    ' O5 m) J) s0 z# L5 KC 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑
    . E4 M! W: x$ d! a! U- _5 T' w1 ?5 R
    判断功能也比较强大, 可以实现决策目的。" D+ b: a" x2 E. w

    * q7 I2 N/ t& Q" w' y. T  m$ _* O% k  F1 m* D$ C- Q
    4. C语言适用范围大
    & L6 z+ R: t) P) i
    6 i! b+ u# k: W' b% a& m' c# S
    - w* l" a5 v/ S% u# S6 S& Q# FC 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于
    ) ]( t* Q8 M& M( u1 @# X5 u& c9 ^! J0 G- e4 g3 O' ^! O
    多种机型。7 Q0 W/ J+ X3 I' Z/ p0 n

    . `$ A" I; `2 r8 D" X7 ^7 J 1 D4 L( S) t$ d! A  B
    ……………………………复制下面红色字段………………………………………
    2 R$ `% {, D- N* Y
    " b9 P( ^9 b( i- i) m
    ) Q; c# [* V  `# J! s/*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */" k: Y1 Q  W2 C  V) Y# g/ \6 ]1 ?
    #include"stdio.h"
    ' o% e" Q+ J: `) d" ]: I6 B' w#include"bios.h"$ v: f4 {, S1 \$ @7 m- u
    #define LEFT 75
    8 d% X5 \; H8 y, D- h2 s#define RIGHT 77
    ) ?$ q: j% D' f5 X#define UPPER 72* ~" Y; y# P; I( \  Y3 _. q
    #define DOWN 80! e& T7 k/ @9 ~, i1 |9 M' d
    #define ESC 27" y' N7 ?- k8 o! G4 }5 a
    struct Boxss        /*定义箱子结构体,其中包含坐标属性*/
    6 r- W% g' g3 `6 j8 `8 i+ G{
    - a6 t3 O! j7 C: _6 p$ hint x,y;) K* w+ L, J9 |! i) T6 ^
    };& p) P* m8 a2 m6 O3 E8 ?
    union keyboard      /*定义读取键盘码的共用体类型*/
    ' V" s; D7 `5 }{
    + f' y! ]4 f  ~+ K- G+ iunsigned int iKeyInfo;
    * ~3 C6 g, T/ Z3 `3 X2 Vchar chKeyBit[2];
    0 P/ l. |3 ^4 G};
    / S1 W7 `& b" N" a( pint fnGetKey(void)  /*定义读取键盘码的函数*/
    6 v; p+ M+ ?6 E{
    7 E9 p- L1 }9 Kunion keyboard uniKey1;    /*定义读取键盘码的共用体变量*/' h* o# z$ D$ z4 z2 a$ Q
    while(bioskey(1)==0);      /*检测用户是否按键*/
    0 k  h: ^3 q) z5 x/ x9 puniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/6 w) D$ X* w$ o, c
    return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/4 A% Q' z3 @9 M* j1 i+ j' ?
    }: F8 c# N4 e0 @8 W; L2 [
    void main()6 z3 _# }7 ]! e- K% Y
    {1 l+ S$ b: A+ D6 K& R
    int iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/4 F9 h0 H4 r: C4 Q
    struct Boxss Box[4];                /*定义箱子数量*/: P! ~: h  I! ?5 I9 z* D
    int chMap[10][10]={                 /*用二维数组定义地图*/# d9 D' e/ ]) w
                      {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/; Q2 H5 [, r. H$ D
                      {0,1,0,0,0,0,1,1,1,0},
    ( @* Y: B) M; ^  K& [                  {0,1,0,2,0,0,1,0,1,0},
    . f$ k/ s) O# p: \: R' x                  {0,1,0,1,0,0,1,0,1,0},+ d. l8 b- _6 ?! w8 c5 V% n
                      {0,1,1,1,0,0,1,0,1,0},
    1 I' ?# a' y. g2 |                  {0,1,0,0,0,0,1,0,1,0},
    - z+ A4 [! F& h' R( a: X  v) E: D                  {0,1,1,1,1,1,1,0,1,0},
    , v: f- b( |$ H                  {0,1,0,1,0,0,0,0,2,0},
    4 {; Q4 k4 I1 u8 U1 m: v" J9 O9 K, x                  {0,2,0,1,1,1,1,2,0,0},
    + r8 ~$ e# S6 U" W* E                  {0,0,0,0,0,0,0,0,0,0},) Z4 l! C# v- e2 W( m
                      };
      N2 h7 [: d2 f( zint i,j;: r, H+ O4 y) y8 p
    Box[0].x=13;       /*定义箱子的坐标属性*/" T2 c1 _0 x( w. T  q- Y1 ?1 ^
    Box[1].x=11;# _. l5 N$ f" P( N8 P
    Box[2].x=14;
    % ^) i! E# R$ t* y# DBox[3].x=18;* c, S* r8 x+ I) z6 L! O) K
    Box[0].y=8;; Z5 ]- [. f! s9 C7 B) ^* Y& [$ [
    Box[1].y=7;% o+ _4 u" p! g- z/ p, n' B% q8 ?
    Box[2].y=13;
    : v8 Q6 u7 L4 e: nBox[3].y=7;
    7 W  R+ L% e0 _% [# Y  X  while(1)                 /*反复进行求移动的坐标运算*/
    + m0 i4 W: \! X0 K( B; e! k" z  F$ u6 r  {* p0 P, {* f+ C9 s- s5 d
      for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/- i& |& f) M* S0 C8 [; ~
        {
    1 u' ^' W) S7 m( `! Z, i    gotoxy(10,5+i);# Y7 Y3 B' H/ R9 R. R% o* I# c+ N/ l
        for(j=0;j<10;j++)1 f! d( b: l  T
          {
    ) r' V/ m( t1 ]# b. q2 K# v3 R8 s' k# f      if(chMap[j]==0)
    ; _) a1 H2 h$ [        printf("#");
    * q) r6 Z3 m& ]% ]( l      if(chMap[j]==1)
    " H( @7 ?( ]3 I4 q) C+ f" Q        printf(" ");
    - V% I4 g" f+ R$ ]" l" w7 u$ y      if(chMap[j]==2)+ y1 Z: G( a- p5 s  ?" x7 z
            printf("X");
    3 b, T2 H& p. ?* Q! q; W) @      }
    % k' E% f8 A6 Z9 U2 n) U    }# ]0 x& Q# b7 s7 Q: _3 f9 U8 ^
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/2 O, X# t4 R! _6 C# e5 \
      for(i=0;i<4;i++)4 d% p% B5 X$ a+ c; x% }
        if(chMap[Box.y-5][Box.x-10]==2)
    8 g  Z3 ]  B: x2 n3 V( w2 C5 D    j++;
      p* ~2 c/ N0 g2 m$ E  if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/
    9 Y4 X  V; T. C6 t6 D      {' \1 G& z; o! y- `# a
          clrscr();' d+ @* r+ i4 ~* D! S& c
          printf("You Win!");- G; ~" S, P& z
          break;( I+ y5 P; h9 l( z
          }- a0 w) r; ]+ z" k1 e
      for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/4 \; \- y- [$ V' J8 h
        {
    ' m( M( M; K( D5 j8 h    gotoxy(Box.x,Box.y);' ?. ^* V9 K. ^  c! d4 K
        printf("0");5 H* \% ^. s' Z7 J, R* v$ i9 B
        }7 z. j! _! d+ r" V3 C$ Q
      gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/5 A( A8 Y5 J+ P
      printf("*\b");
    & j% E$ W3 ?9 ]0 N/ @( }9 t* g  tx=x;                                      /*记录本次移动前的坐标*/4 V: C- ?2 L5 [1 k7 L# [
      ty=y;7 W( O9 P# |4 i% f, Z" Y5 Q2 V) o
      iKey=fnGetKey();$ E$ G8 Z; U0 h: X
      if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*// |8 [% t! c% d' j
        x--;% m' B9 [+ y' _4 J. U
      if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
    9 S9 d% m& A8 {0 L  W( Z# P2 P1 e    x++;
    % f  S, ?  S( ?8 B+ E  G9 x  if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)
    * G1 d1 i' K+ z3 g% f3 m) F    y--;- g/ a* j) t: U5 M
      if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)
    $ P6 K( b1 h3 e  R+ o    y++;                                    /*输入ESC退出并输出"YOU LOST"*/
    : k: e1 y+ n- ]2 ?% N  if(iKey==ESC)
    ' v4 d! a8 e0 w; P# c4 [; v  {
    - R: W1 R5 _/ j" B9 J0 V  clrscr();
    ) y. f( {: ~# |' H+ b: y  printf("You Lost");" C4 `  }, w5 `5 S/ x; N1 R0 g
      break;
    % t# l2 j) L/ W( _% @! p- p! b8 T  }2 ^8 d9 f$ R/ u
      for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/. B; M9 \( T' L) d
        if(Box.x==x&&Box.y==y)
    . W3 Z1 T7 [1 M0 F      {$ z* e, {$ f& M' y1 {) f
          Box.x+=(x-tx);
    ; ^2 {( S; @/ d6 ?2 \0 O7 S      Box.y+=(y-ty);
    4 p: N! H, }( y5 G7 |. t6 v9 \    if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
    , h  ?; ?5 ^7 q, V/ C; C2 Q      {8 S9 L: F$ C3 r. i0 {
          Box.x-=(x-tx);
    0 e% z8 o, N6 c      Box.y-=(y-ty);
    * p* B$ f& D4 X/ d' e& C2 k      x=tx;
    4 s0 c& B2 A6 D- \/ t) Z+ u      y=ty;6 R3 W# B9 z+ q2 L1 R
          }
    4 R7 m1 k; b6 u7 R) J* r7 {      break;' `4 x1 o7 n# w# D  u: B
          }, p; d! @7 r3 |, \
      clrscr();
    " K+ v, B4 I2 i2 L0 U  }
    % H$ ~& P8 Z# f5 Z/ Igetch();
    , \! U- }, i5 U% T# [3 }}
    5 A2 |, Y) }/ w8 K0 a- N

    4 }+ T. T6 E/ s1 b
    % f( s4 l9 {& g, T& C" i8 W

    , I. d  A8 F) |- v3 ^………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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