下沙论坛

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

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的7 l, [& c% X+ m9 @
    功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。' l  N/ W1 E9 Z- B& B2 R6 b
    , U; v1 `; j( W( i1 f( c
    C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,; M. D9 B( d/ o8 H! |% u
    PC- DOS
    ; Q  u8 _6 W% ]9 H9 y, \0 j, e- Z5 c  s
    WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点: / ?3 S! P/ C: e4 q  r% ]
    5 d; U6 J" f# U* |5 x  w
    1. C是中级语言
    ! w; M+ Q* \$ |; h- h8 Q% M+ d% W+ R* h3 L* k. ]. G& y! I
    1 Z4 Q! B5 L9 A/ J* E
    它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    3 m  f9 U% T, {+ e1 V5 a
    " X" Z; G) L( A( `5 L! r; b汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
    & H5 @4 U3 s0 j3 D3 q3 ]: t# J1 ]' P% E4 [
    * }; n* m% H9 {# q5 t0 g
    2. C是结构式语言
    9 S* v  |! @" [2 D4 \6 z7 u; z! S* g* p$ v* E8 S3 D
    1 z% v. e2 n& `
    结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的
    ' b( z3 p# {, h! R7 S
    ! K) R, T- d" ?8 L信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调
    6 u& x$ u2 @# r& W9 D6 j2 A% j) Z* Y. J5 h- R
    试。C 语言是以函数形式提供给用户的,
    * d, v. Y" T7 a" j# @! r6 u/ [6 B4 W& X这些函数可方便的调用,
    9 x  G# {# b% a; g/ o. l2 g. a并具有多种循0 J! O5 `; R% l7 J/ q

    $ s( e) n2 m/ ?  w; j环、条件语句控制程序流向, 从而使程序完全结构化。
    5 t% r6 k+ E6 B* g7 B' N7 @9 T, J/ g: I0 u
    $ y' O- S2 W9 K; L4 X
    3. C语言功能齐全
    % k0 P3 B5 D5 p% u7 a, R: H1 z  @7 j1 v2 C9 m1 ~
    , r, ]; b, \! U9 Q
    C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另
    7 _4 K0 F+ O/ r8 k
    6 r* |9 [( ?  H8 }, ]C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑
    8 `# E/ n* E# l6 L
    9 G$ `3 n% q: N  r  V5 ]- f: S判断功能也比较强大, 可以实现决策目的。
    * q2 p4 ^; p% y2 p3 Y
    # L& G7 }( q) N8 Z
    0 G2 d0 ]. ~8 M$ I* p4. C语言适用范围大1 Y, B3 E+ f  o7 N, f! F
    ' X. ^* ~6 B5 D
    ; r0 d6 N& `4 z5 d" L5 d" Y6 o! V
    C 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于
    ' x1 C/ m8 ?1 B+ @6 W; l+ K5 r- b+ {' @% E) z% z& w
    多种机型。
    3 W. b  r% R6 q7 R# o& P0 N
    ; O. n5 j( J- _( ?3 t, v$ U# p. z4 { : W5 g6 ]( g; k  R! X
    ……………………………复制下面红色字段………………………………………& W* t# p2 W+ y$ b7 t8 t
    2 v1 D5 g, m/ }7 _' q) X
    + m0 ^6 }; j6 }% p
    /*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */
    $ S; t4 I1 T9 h. c( W9 m#include"stdio.h"! L; u7 V* }/ M7 z; I
    #include"bios.h"
    5 }; p; e0 z2 u* D5 Y' X' l& P#define LEFT 75# V$ D7 ~1 C/ g' m8 X. ?- Z( h
    #define RIGHT 77
    # a8 H9 }& `9 x#define UPPER 72
    + I% G0 J8 v3 M#define DOWN 80
    0 t+ r1 @5 p, C3 t#define ESC 272 W4 v( F8 z( S" G
    struct Boxss        /*定义箱子结构体,其中包含坐标属性*/- y7 ]; S" B( y4 C5 }- S0 Y: {$ d
    {
    4 {1 U( t$ G/ v& c3 ?int x,y;4 M; p8 k3 k! b, T! A
    };
    : ^( f% f2 A" N/ ]8 Cunion keyboard      /*定义读取键盘码的共用体类型*/
    1 i7 a# y1 y0 n5 K: ^# Z; @$ b6 {{) ]9 f; F6 P( M5 _4 G6 D$ V
    unsigned int iKeyInfo;
    1 p9 \4 ^: t: Y. @1 ]' |char chKeyBit[2];4 D& o; n5 C4 J$ o. \
    };- a  I- h; z; H& y! l: k9 |
    int fnGetKey(void)  /*定义读取键盘码的函数*/
    6 j8 {& m$ F5 P8 a7 e{+ a4 t* A, @1 J, \
    union keyboard uniKey1;    /*定义读取键盘码的共用体变量*// Q0 p1 b: A. e2 w5 P1 o7 V! X
    while(bioskey(1)==0);      /*检测用户是否按键*/
    7 G4 n. }5 [2 S( \uniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/
    ' E  }$ x& K) l! P1 ]# b: Xreturn(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/
    5 K% d. T# {% d# m9 Q}
    # Y/ ]0 _  {; Y! }2 Mvoid main()1 L# ]% y2 N2 g
    {
    9 |$ H& D8 u( ]! ]1 rint iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/6 [( F3 p7 d/ P  a2 c! H" t
    struct Boxss Box[4];                /*定义箱子数量*/# K& D# V  q2 W( d+ p# i: w; Y+ M1 _
    int chMap[10][10]={                 /*用二维数组定义地图*/4 `+ ]6 C9 ?# e* g
                      {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/
    + t# r) \$ W# z: B5 [& t                  {0,1,0,0,0,0,1,1,1,0},
    $ _, \$ S0 j6 o- O; G! K                  {0,1,0,2,0,0,1,0,1,0},
    ) I' I7 t' A" z. j3 q- _4 I                  {0,1,0,1,0,0,1,0,1,0},
    / e) T: h, W, u9 D" h. G' p                  {0,1,1,1,0,0,1,0,1,0},
    ! I/ ]0 I& l4 f; y. b                  {0,1,0,0,0,0,1,0,1,0},8 I, n9 e6 M1 k$ n  A9 Z
                      {0,1,1,1,1,1,1,0,1,0},
    4 A0 I3 R6 U' A; m5 y# f                  {0,1,0,1,0,0,0,0,2,0},
    2 S% y3 `: W0 e% D                  {0,2,0,1,1,1,1,2,0,0},, ]2 ~3 V3 Y  a6 k" u
                      {0,0,0,0,0,0,0,0,0,0},8 _7 Z' M8 L' p1 q2 G3 w: r; A
                      };
    ; I0 R$ d7 s- O' C+ qint i,j;& Q& _* E  Y: c2 I( c
    Box[0].x=13;       /*定义箱子的坐标属性*/
    9 e4 m/ I2 t0 Z1 K5 H; i& ]% NBox[1].x=11;
      f( }% U5 f/ g. N& m. k/ P$ TBox[2].x=14;
    ! m/ T0 I! |8 W7 o9 Q) fBox[3].x=18;' G' H  _6 \$ O6 K3 U! G
    Box[0].y=8;
    / m  Y  M4 S+ k" ]! FBox[1].y=7;
    " R4 u5 |2 Q0 j. M) WBox[2].y=13;
    " O9 s. E" G+ {- Q, k9 pBox[3].y=7;/ q! R" b8 u$ B% Y% z! {/ e
      while(1)                 /*反复进行求移动的坐标运算*/& N( @5 e" G0 ~
      {/ J1 U" \7 X' d- h
      for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/
    ' q2 i  _' s% E6 V2 [# N5 |  f/ ~    {
    ' O' O1 Z* B) l    gotoxy(10,5+i);
    4 D8 ?5 t2 \' K2 w( z. J( {" `    for(j=0;j<10;j++)
    ) ?3 o0 [' ~4 G% B      {
    2 m$ d$ J# @+ k% p" r      if(chMap[j]==0)2 d* R& o3 x6 o4 p8 X3 _1 z
            printf("#");* B% K. O4 N- [2 r$ y
          if(chMap[j]==1)
    8 L- B" }9 G9 R+ @, h; n7 T8 j1 b* j3 U        printf(" ");
    + k5 ?* K% A. N% @- D" x      if(chMap[j]==2)
      d) m, g5 J8 K$ E" H        printf("X");
    , n# n' Z* e7 v: R& L      }
    ; X: d" }6 ]+ P) u# O    }- v# ?, A. o( [8 |: Z" V
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/
    ) z  A+ y7 v1 ~  for(i=0;i<4;i++)4 Y0 j: N8 f& c
        if(chMap[Box.y-5][Box.x-10]==2)
    0 p9 k* C2 S( E' q) d6 h% \    j++;
    ; B! g. J' O7 z6 N8 b9 v, f% o* S  if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/
    1 h. g" B3 {2 \; \: Z" ~. P8 }      {
    # K, P1 u- @6 F  h9 O      clrscr();% r# i# i6 Z1 B
          printf("You Win!");' j* o/ `+ o( n
          break;; V2 k* |8 I& J, U' n
          }
    & F2 ?: ?/ a# C7 G  for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/4 \) \" [) z( n4 |- f3 o+ ^3 V5 O
        {, a; d( G& \' ]& I6 E
        gotoxy(Box.x,Box.y);
    . Y: m4 W7 w4 U4 V: |    printf("0");- Q) \' R! e1 s3 Q, u% `
        }4 g- I8 @9 R% B, \
      gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/
    6 H2 m. O# m& j$ x* |  printf("*\b");
    9 r, \! S- K. F2 E* ^  K+ B- A  tx=x;                                      /*记录本次移动前的坐标*/: N; j# b' U6 ~6 [
      ty=y;
    $ q# C! W6 x. V  iKey=fnGetKey();
    0 u0 u1 ^" B  {# b4 U; s  if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/
    8 t; H3 \# t# d5 q3 N' l/ a: h    x--;/ M7 Y3 q5 W' m
      if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0). \  ?& k/ {* s  p# K5 p# c/ D
        x++;, ^5 n, t  C, ~  P
      if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)
    5 s5 ?  f8 R3 Q) a    y--;
    1 ~8 B: `5 @. D, s& P# L2 A2 r  if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)
    : m8 R0 W1 n5 L    y++;                                    /*输入ESC退出并输出"YOU LOST"*/
    * |) m  |3 U. O: F  if(iKey==ESC)
    - e) R; ]+ R+ t9 t* [# T  {5 ~; q  {, p  @; ]  ^3 c' `
      clrscr();; K3 c; ^; T; T' `6 f, s5 g
      printf("You Lost");
    $ L9 \4 Z. q- \  break;
    7 J  G! P* d: e  }
    7 I8 q' H9 b8 K$ S) N* ?  for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/: ~& m: n2 S  T0 Z, p- f* ~
        if(Box.x==x&&Box.y==y)
    5 q5 \8 _. z7 ~8 [8 T( B" E3 ?2 y# U      {& s( q/ k( p' q2 V  ]
          Box.x+=(x-tx);
    $ n  k7 D4 \4 _: j. [) b      Box.y+=(y-ty);
    - F" k+ M# {; [% {; q3 n    if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
    . U0 A+ R5 U+ w% o! m$ {9 O      {
    7 `/ y% c% K: E" i& r( V      Box.x-=(x-tx);- b$ |$ D, K6 e
          Box.y-=(y-ty);3 @; [1 T- S; U( `5 u) b
          x=tx;" c# P6 L  {2 Q# i# M! F( {; n/ z: g
          y=ty;9 O5 p  s: R8 O4 U; }
          }: X# N7 k; c( i. d2 [8 W3 e+ N6 E' N! o
          break;) }, U7 d  D2 k0 F4 A1 Z
          }0 N) k% ^+ @6 n* c
      clrscr();$ ]& B; V  N' Q! q& b0 _
      }
    3 u* Q, c* f* E# x7 {getch();
    ( m# ]3 t! u* Z3 i}
    6 ~4 k; z; D* T: x) Z
    6 K3 K4 n+ J1 N% q5 C  {
    * v. r! e5 S8 J9 T# p

    7 m: Y! X! c$ |3 \, _4 O) U6 Y1 A………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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