下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的
    9 G: j0 P4 U) a8 C* O功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。! N8 T2 J4 E' l' _& ~" J
    / {0 ^* R( q: J1 D4 |
    C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,+ ?. U4 V, Q3 X5 `. m
    PC- DOS 2 n" O) ~6 Y  b6 @% S  c
    : D8 @3 \9 t& d' r8 o7 ^* \
    WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点: 7 `1 I) _* U9 f/ B6 q+ ?0 e1 N
    1 f9 K! z% h% m" w; ?
    1. C是中级语言1 D8 e* k. o2 Y, U
    / ^/ P" ~3 B# H# ]/ E' K

    & h% S; U" S5 \# U, f! L( B& u它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    ) M" _+ v0 {1 i. Q6 T
    2 b7 X' M0 U3 C4 S汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。: @' W+ C7 J2 R0 r

    ) v2 d  f# ]& c: N
    . N5 X% ~# C/ R8 o# J2. C是结构式语言
    0 E' P" R$ q) t2 \3 |. g; `
    4 c9 @! t, Z6 q& J" q( e. L8 x& ?5 ^4 u; S3 T7 i
    结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的% D  \0 l. Q2 ^

    8 Y/ d* [' x% i: n, w信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调
    ( P! Z* B* U4 V$ y/ _% i; A/ Y1 k$ s+ |' A2 S
    试。C 语言是以函数形式提供给用户的,% F  G- H& ], x' w- H* T
    这些函数可方便的调用,9 Y; }* I4 d. x
    并具有多种循' C! c; [9 B; w2 {* ?9 e3 ~

    / b& e) V6 A6 L7 Z( \& c. k  r环、条件语句控制程序流向, 从而使程序完全结构化。! Z8 k! K* \$ m9 |4 B
    6 c8 N1 {' Q2 L2 F$ d
      N+ r! u! L. L$ @( C& F
    3. C语言功能齐全
    % E9 l8 ?  e! W! G- S0 f* S2 g; [+ q' g1 j- w  ]8 D5 g, j+ t
    9 ^5 V. K( Q" ]( {" u+ Y! e, f! b
    C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另
    ) N$ m, @  J! A& q/ G3 r, M0 A
    * `5 d7 }$ v5 m. i; H+ d# QC 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑! S3 X) i2 q* l: w

    ! j' q# K3 v3 X7 y# n3 b' ]" ^  }判断功能也比较强大, 可以实现决策目的。
    ! u$ L5 G' J8 O( @" g; Z1 p
    2 P9 B9 _6 s" J- I) B4 l5 A# ]7 x  U8 k1 w+ r
    4. C语言适用范围大
    9 _. R8 o) |, K$ l! A: A/ l9 t8 t5 V* Y3 ]$ V' o

      @" T4 C- ?' S# o$ sC 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于  Z3 S7 s$ z$ k" O0 v

    1 p; `) g, I- H2 Y& e4 g& V多种机型。
    7 R" @; i6 t# f4 f" d4 o5 |8 X) F4 P, b) O
    " p0 `/ Z! `' I5 R
    ……………………………复制下面红色字段………………………………………
    " r; _6 @+ r! D+ z3 t3 F; W/ i; e# x8 t; @4 k8 H: X4 _) U
    3 _4 e9 i$ ^" F; j
    /*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */
    4 _6 _; u# R* F* E9 {+ Q; [- }3 c9 e#include"stdio.h"0 y. x1 P% V: Y/ M6 D9 S: X
    #include"bios.h"
    7 [2 [2 C& d+ V- s$ b. n8 L, }9 J#define LEFT 75! j  p9 J* Q$ d9 C! a
    #define RIGHT 77
    / G4 U) A: ?1 ~# ~#define UPPER 72- z: v! n4 n" l) C8 I  y
    #define DOWN 80
    7 Z  ^- O0 d! J#define ESC 27
    8 b, ]+ |4 a8 t; G$ p% Tstruct Boxss        /*定义箱子结构体,其中包含坐标属性*/
    ( D, t( Y5 c8 k& y{
    1 U: r9 J' b% H) o# l$ |int x,y;' V  n, @% l- x. V: ^
    };
    ) e2 X2 i7 d$ I9 n: j( [5 J6 Gunion keyboard      /*定义读取键盘码的共用体类型*/" t# K5 i( z6 R& x: w
    {# b$ m9 h5 c! F" @6 j
    unsigned int iKeyInfo;, y9 F/ K7 x; s) h0 z! k6 Z# }
    char chKeyBit[2];/ R6 \: r) I" W' s3 V2 S
    };
    ) U# d9 [: |; m: B2 C' M# Q! aint fnGetKey(void)  /*定义读取键盘码的函数*/2 d! ^3 F. z5 l! H
    {
    0 F6 h! B% y- t2 ?union keyboard uniKey1;    /*定义读取键盘码的共用体变量*/
    ' v% \2 _+ C: Y) B) a6 q: q- gwhile(bioskey(1)==0);      /*检测用户是否按键*/6 K7 ^7 a2 x! v+ [
    uniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/
    " [" Q4 I( S! g2 k" E" T+ x2 B7 Freturn(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/2 c$ A9 U: }! v4 K3 ]% ~
    }
    5 O) ?: w) l$ }( V6 h, Nvoid main()
    9 W; {  k9 d$ G3 o: Z{% u+ U2 x) P) Y4 P3 f6 K9 ?7 Q
    int iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/" H  E  R: a* q! G1 d. S
    struct Boxss Box[4];                /*定义箱子数量*/3 r. y" ]' Q' e/ E* ?9 Q
    int chMap[10][10]={                 /*用二维数组定义地图*/, J+ \/ @7 k* [/ a! Y' i' z: {
                      {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/
    ) K+ c3 @3 ?% |- B) r2 K+ r                  {0,1,0,0,0,0,1,1,1,0},& t4 o8 ~5 ?/ i; u
                      {0,1,0,2,0,0,1,0,1,0},
    + c' f6 _2 M% Q0 i6 O& B                  {0,1,0,1,0,0,1,0,1,0},
    8 Y& L3 C/ n5 F: ^                  {0,1,1,1,0,0,1,0,1,0},$ u1 ?  C2 o9 Q( t4 Y& r
                      {0,1,0,0,0,0,1,0,1,0},7 e3 S9 [4 @" K2 t" k8 h$ A1 e
                      {0,1,1,1,1,1,1,0,1,0},
    / J# K8 N& H3 i% i% @# x                  {0,1,0,1,0,0,0,0,2,0},1 L6 n! k- L( y6 S8 J
                      {0,2,0,1,1,1,1,2,0,0},+ c4 x! F6 |" R, H% I* H
                      {0,0,0,0,0,0,0,0,0,0},
    + \. O+ c5 o) J  r' R1 a                  };
      G) v. V2 c4 M7 Y; Zint i,j;
    - [, X6 ~$ }! ZBox[0].x=13;       /*定义箱子的坐标属性*/
    # ?( k( ^# x* m7 h  XBox[1].x=11;
    " Z8 @  G! k  A6 F0 i" }Box[2].x=14;
    + A# _/ Z+ g! zBox[3].x=18;
    / }8 C2 n! D# N" X' UBox[0].y=8;
    * r$ T- F2 `$ k! ]" I  HBox[1].y=7;
    ' ~  w. ?/ o+ h8 OBox[2].y=13;$ ?6 f4 X& z7 `% Q5 L: `
    Box[3].y=7;. j* @: Q2 J1 h7 m: d
      while(1)                 /*反复进行求移动的坐标运算*/
    " d# f0 c+ z/ N) B7 T/ }  {
    5 \1 h. a0 b( I  for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/0 H2 e( Q! Z4 |. G7 E5 f
        {
    . K' V# a6 |9 u, |  R- Q3 e$ E    gotoxy(10,5+i);; f" l4 u9 u( T: q3 k
        for(j=0;j<10;j++)4 G- s; M2 n% `- ~
          {$ n" w+ p, n8 q9 A5 Z
          if(chMap[j]==0)
    3 @# v; L4 P, \$ Z/ O8 a        printf("#");" N, }8 {$ @+ u! d' V" C
          if(chMap[j]==1)
    0 k( b$ x5 n7 w        printf(" ");) f* g0 v1 E! d  q
          if(chMap[j]==2)# E7 W+ q7 O) _$ A# f/ r
            printf("X");
    % D* P4 k3 H) p* B3 @; `$ r      }
    ! B* q* m+ K4 g+ [; z    }, h9 r, ~" x- L
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/5 R, z  Q" V: W+ z' s! \
      for(i=0;i<4;i++)
    0 x$ y- d# y# `# ]( p) S    if(chMap[Box.y-5][Box.x-10]==2)9 i3 r: h7 r; S: W8 n# y6 h8 b. R
        j++;
    7 f+ e5 q' V! V2 j  if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/; _5 o; E* _3 [% I) L
          {
    : F6 s* v" G: N3 f, {      clrscr();0 c( n# J& g6 k7 |. e9 j+ Q
          printf("You Win!");
    7 r. Q* [* ~! ~" m) H$ a: A      break;
    / a& {, U! C* d9 P4 }" u      }
    % A2 A& i. L: Y0 G  for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/
    0 W' \. \6 A8 ?' T) S3 |* f    {
    ; H4 U' Y2 r; G( ^0 L% R1 l    gotoxy(Box.x,Box.y);/ f4 x& d5 D7 r( k; _% H1 B
        printf("0");6 c4 P( m7 M4 s7 \$ K. v
        }3 N7 A- i6 a: H+ |, M4 @
      gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/: `8 h' {# k* n3 ?( N  m! {3 K2 N
      printf("*\b");( m4 L: C8 D2 p- }" L9 N
      tx=x;                                      /*记录本次移动前的坐标*/7 k9 R; p8 @; B8 Z
      ty=y;* ]5 C5 U% n9 Y  I1 J
      iKey=fnGetKey();
    . N% i! {% g& E! v' ]& w  if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/6 v% H; I/ m6 |3 b% k
        x--;
    " ^  s- B% }+ v$ u  U& X  if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
    0 _% f; z" ]2 E" W* b; z- _. E    x++;) O/ p0 |: }) f( U' H
      if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)' m5 t# O7 d( W
        y--;" d) e- j1 O! {# j: t! O9 }
      if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)
    % }# @1 v5 F$ ~    y++;                                    /*输入ESC退出并输出"YOU LOST"*/1 h6 L& Z5 b  ~) o
      if(iKey==ESC)
    & Q' X2 ~$ B* C  {
    3 S1 y4 O3 \. f/ v  ], B: N9 _  clrscr();  W# v) t/ V& b4 E! `
      printf("You Lost");
    + M0 k1 l: g" |+ c8 v/ r, p, s; E  break;& L! y; o7 ?  v  _
      }4 n2 v) ?2 I  ^! Z
      for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/
    . g! f+ L$ U  N    if(Box.x==x&&Box.y==y). x, C; F) T4 B- k7 Z- e+ N
          {: l4 E6 R9 C1 ^/ f
          Box.x+=(x-tx);  q) m) `: }; ]3 I
          Box.y+=(y-ty);- E( W$ d5 T+ F
        if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/7 `0 e( G9 z$ S/ C
          {; p# f( L. J2 S' k  f
          Box.x-=(x-tx);/ j  E. p5 ~- P! @4 w' E
          Box.y-=(y-ty);4 w) [  q4 X6 X! e: S
          x=tx;
    ( E% A- i% f0 _! ?: E3 j5 b3 }      y=ty;
    & I, s) {( ^- m' |9 x      }
      j3 J! R4 p) ^6 s      break;: o4 u4 ?$ g$ O- x& u! O  c
          }
    : T" m& g8 ]! w; o  clrscr();; v. t- s9 `  \( m
      }
    5 `5 ^; G# d# j7 i/ wgetch();3 s" P% b+ X; C
    }
    + x" e! ~& K6 i3 B# C" R

    % L' l1 k; \3 m; E
    2 u9 j2 Z! O0 F1 j
    ) k& i# I& C( q$ ~3 i
    ………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩 转发到微博

    本版积分规则

    关闭

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

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