下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的$ \# u) ~5 w: A7 ~3 Z
    功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。8 ]1 s; i. z+ E+ R; }" o: q- }. b

    7 w' `% n- I& v: X4 l5 o& XC 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,7 j3 V! o# f/ |2 n7 }
    PC- DOS 8 C/ P. q8 k- \6 Q  `, P
    / V, l3 H1 k0 b. X5 U  \# \% ~
    WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:
    : }; Z; [$ D7 H8 |
    9 {. K  \( ]6 R7 i. i1. C是中级语言% {/ q4 e- z$ D- Z

    ' R' g  M8 i/ I! ~- H
    . V. ~9 g" M3 W; N2 ]) J9 R* J它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    1 p+ |. v8 y# y" P9 m8 a  Z1 J+ S  U1 I+ K& w% g3 h
    汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。- X5 ^6 n( f$ t4 ?/ V9 z; ?% N

    3 c+ q  L8 [8 c! D) E9 {* L# T* O4 w$ M- z) F  q; |2 s9 Q5 s
    2. C是结构式语言+ ]" F8 }- a1 A; H" m9 B

    % K0 L4 [! I+ O0 T: N: b! a1 h# _- i" i! J% h9 ?( a( N+ Q
    结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的
    4 l- G1 s8 o5 V' E: Q4 p, a9 c7 z( K5 B( e: z
    信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调: `* w5 I$ b, J% o, |# ]5 Y

    ; l5 |* E$ r) q, d$ u( \试。C 语言是以函数形式提供给用户的,
    7 J$ G) V$ ]$ k这些函数可方便的调用,
    9 i5 N' L' B/ w; ?0 g并具有多种循
    ; F& v) v: X: A% Y0 ^5 Q+ F3 a3 w
    / k7 {8 U% b, L8 o+ ^6 E环、条件语句控制程序流向, 从而使程序完全结构化。! b# s- F" [- y
    0 K& |7 R0 G* D- o) I

    2 s9 x* y7 |/ C: p0 \1 H3. C语言功能齐全$ z7 i+ G' v3 {5 [
    6 Q1 B7 s4 x2 Q2 v2 Y6 J: d% N
    . m" ^4 G- Y1 h& W( W; s
    C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另
    5 c' ?# a& l# T& @2 |
    ! f* d$ M5 ~7 D9 a. I+ E  DC 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑% [, G' u% n5 \" i- [$ I8 b' o/ Y
    7 A# l2 {- ?. S1 E
    判断功能也比较强大, 可以实现决策目的。
    - c: F, I7 p+ T) c
    ; Y- p$ F2 c; l/ [9 P; A! i, R- q& W& x+ J4 N, C+ M: C/ r' J0 X
    4. C语言适用范围大$ O% @8 P1 ^: n* E
    , J2 D1 z8 P' a4 }) s
    2 O" q& J) O! ]5 C8 U( e
    C 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于
    8 w* ]+ M, l6 k$ g; u) B
    / D7 d7 z/ p9 Z6 w" N6 ]7 Y多种机型。, A# C; v) `- ^* J$ b
    - G" X9 p7 E$ o) A/ g

    - ]3 \1 q- W3 p: D. d; E9 Q……………………………复制下面红色字段………………………………………
    % E$ a8 `6 N+ f* {; I- q- D1 O% m5 d9 U# A* A$ E0 G# o1 H4 L

    - t0 X5 v( t" W/*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */
    3 f1 J8 m$ p% o( |#include"stdio.h"1 A$ P/ u/ Y7 P" I; U' m& u
    #include"bios.h"
    4 l6 j$ N7 H, M#define LEFT 75
    7 ^& |1 h7 C9 l, C#define RIGHT 77
    & {+ q4 U2 W3 [7 K#define UPPER 72
    ( c6 Z2 R9 b- v6 v7 z, `" n#define DOWN 80# e7 f" m; _1 ]' y
    #define ESC 27% w, @& a( O4 P& ^8 q# l: U3 d
    struct Boxss        /*定义箱子结构体,其中包含坐标属性*/# j+ a7 e) H3 _; m5 a- u! b
    {6 J$ y* Y: y$ m1 \
    int x,y;" o  P; M7 Y4 a. Y
    };! F) ]7 ]: v; {& [4 Q/ }
    union keyboard      /*定义读取键盘码的共用体类型*/+ Q0 @3 r; }( l4 w4 U3 a/ I
    {
    / s! p/ Q! }" Q# n8 T( Z' eunsigned int iKeyInfo;  x" |& u) I, l6 F4 n
    char chKeyBit[2];
    ; z. J+ W0 L8 O3 Y3 Y* \};
    ! N  {# h" p) N7 m& ~: ]int fnGetKey(void)  /*定义读取键盘码的函数*/
    * |- P+ d! w% }, b) W  \. M7 O{
    + P: H1 A, j  p  r0 Tunion keyboard uniKey1;    /*定义读取键盘码的共用体变量*/- t, g3 v+ K- [6 H3 {
    while(bioskey(1)==0);      /*检测用户是否按键*/
    & t+ d  L9 E2 Z/ ^* ^" A% NuniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/
    3 F6 `5 {4 [0 C' R5 ?9 n( i; M! @  ireturn(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/4 |7 N5 i6 b! _4 G$ c
    }! w: K, P+ w$ [6 z
    void main()
    1 z- |$ G; g- _( J3 i6 }3 S{
    3 j9 D( r) a+ d3 P/ F6 Q! bint iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/6 w+ W! ^. q0 i2 Y  z7 y* b
    struct Boxss Box[4];                /*定义箱子数量*/
    / O. N! k8 @0 F; y9 `( yint chMap[10][10]={                 /*用二维数组定义地图*/* a" p: `5 @7 g; J0 a9 W# d
                      {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/) V* s4 Z1 T3 N' U* o) F
                      {0,1,0,0,0,0,1,1,1,0},
    ' k% N5 {  k) d! W                  {0,1,0,2,0,0,1,0,1,0},. X% n8 H: n1 \7 O& f
                      {0,1,0,1,0,0,1,0,1,0},- _7 \% P0 B+ A* R0 f9 W
                      {0,1,1,1,0,0,1,0,1,0},
    " W* d. n( s7 d& y" A  |                  {0,1,0,0,0,0,1,0,1,0},
    * Y( B2 Y/ v: \: F                  {0,1,1,1,1,1,1,0,1,0},
    3 A) z1 f8 b4 T( Z' K! `' t4 O% y                  {0,1,0,1,0,0,0,0,2,0},
    + \0 V, d- @  J& A5 I1 [                  {0,2,0,1,1,1,1,2,0,0},$ ~$ U9 z) {' {. J
                      {0,0,0,0,0,0,0,0,0,0},
    3 R9 a  }  q1 O! H. N                  };0 G( x8 I9 i4 i6 _1 D& u( }
    int i,j;+ L" i1 C* Q9 v7 W# v! R2 k
    Box[0].x=13;       /*定义箱子的坐标属性*/
    . ]  q. T9 |; x# R! y1 sBox[1].x=11;
    . W6 d6 W9 V# F* _1 ABox[2].x=14;# N! ~- z7 H4 K7 ^- r
    Box[3].x=18;$ Q3 a4 i& r5 I
    Box[0].y=8;# n" Y$ H9 o9 [- F; U
    Box[1].y=7;
      V& F. v, u( A$ ABox[2].y=13;
    ; s) G& B" n. D1 NBox[3].y=7;
    % c* ?8 z3 w5 B- J  while(1)                 /*反复进行求移动的坐标运算*/
    & u. J: Z- x. y2 h+ e. \2 C% F3 e  {4 w" O( R4 K4 |0 x3 W5 i4 n
      for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/. _$ p+ y3 k5 s( h
        {
    4 e" u# i/ g- ]- _' t# v$ Q    gotoxy(10,5+i);) d& T+ d  B' u& l' g
        for(j=0;j<10;j++)
    , d% ~9 ~  G) v! l. r; t      {
    8 ?) a& u; Q8 ?      if(chMap[j]==0)/ D+ t5 y! r$ r+ l
            printf("#");
    - |" Z4 z, C1 t, y/ `6 R      if(chMap[j]==1); B  U# k. v1 S7 O0 y5 Z
            printf(" ");. O; J; C/ F/ m+ ~& t
          if(chMap[j]==2)
    ( g3 ]2 L+ M9 {9 _" L" L        printf("X");. {: ?/ v1 ]0 y3 p3 s
          }2 `# [, \8 f" p0 \5 K( Q  D
        }9 z/ x" ?8 y0 l9 O5 z3 h  y, l
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/- U+ {6 D3 G5 C/ Q
      for(i=0;i<4;i++)  [4 `8 E% V8 N
        if(chMap[Box.y-5][Box.x-10]==2). D8 ^7 F" O+ [) U. |
        j++;& Z2 z/ i/ T/ K3 N+ Y/ v
      if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/
    8 ]( c& U/ S9 h8 n: p      {( A: V; K1 @" |% ~* X
          clrscr();
    9 y2 o9 l0 Y! r" \' {+ g6 t      printf("You Win!");
    . n1 L" ?% [, P  U/ s7 H      break;
    ( b, {/ o4 J! m9 i# j      }
    9 H; i- }4 s8 n) Z2 p5 h  for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/, N. C1 \4 w& E5 M, K
        {2 f* Z- X' e  e; D5 f( X2 l0 y; @
        gotoxy(Box.x,Box.y);5 M" K' ]  q$ k. P7 _
        printf("0");+ }/ c( U2 f  C$ M
        }
    - G' n2 A# _. t6 N$ W  gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/  d  v, [/ b! H* Y
      printf("*\b");
    ! o0 b, T, x, d  q) B+ X: s0 b5 r% }  tx=x;                                      /*记录本次移动前的坐标*/
    - @' N8 O1 `1 F0 |' ~  ty=y;; L# D. R7 W4 a2 G. ^
      iKey=fnGetKey();
    / s/ ^/ a9 r, M7 ]5 _( i  if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/
    ' E- o5 K% D- Y) G$ e/ t    x--;- M, L6 }1 Z8 d- p9 K) N
      if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)9 r$ V) u/ B9 J( ^, |# N9 P
        x++;
    ' t7 F, q8 W+ }  if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)- e/ x) T( d: G. q2 J
        y--;9 j) N4 {* [5 m0 y1 ^' A
      if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)" H9 Q' {0 g1 u* {
        y++;                                    /*输入ESC退出并输出"YOU LOST"*/0 H  y' X& F! z4 K$ u; J/ h1 @) r
      if(iKey==ESC)
      Z" T9 d2 ~: l' @  {  j3 G2 g: F1 x3 ?) n" A
      clrscr();! C" C; R! o& d' h7 o* f! v; c0 B* Q
      printf("You Lost");0 {2 H5 [$ h0 B9 v& b2 P/ T) l" n; r
      break;: e$ O8 R6 _. r4 [" \& x5 u
      }
    * O: g/ e8 E  W; u: Z; H  for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/* \' R9 M/ {- ?" q7 w1 n
        if(Box.x==x&&Box.y==y)9 `' d8 e( I4 A( l/ ?: q: J; h3 d
          {
    ) u( q9 C( K7 X      Box.x+=(x-tx);
    + v; y2 N0 L) }/ X  {      Box.y+=(y-ty);% m2 P( m/ s' \/ L
        if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
    $ {3 G. _8 E. M2 g- M: D      {
    8 f2 m/ u" A  v5 r; E# }& W      Box.x-=(x-tx);1 K( n$ r& O; m% r, T- S4 q
          Box.y-=(y-ty);
    ! @0 ^: j) Z% J% |      x=tx;
    ' @: s! Q1 s3 l+ I" a3 v      y=ty;) |4 H8 \9 C$ B4 h- i; U: r" L
          }
    ' @* R  o* ~. g  g1 O) q- Q+ G# \2 L      break;
    . Y4 M8 u- r5 I8 P      }% [1 o9 m: ^& j( J3 r; {
      clrscr();, P* J5 n3 I1 R. o) P
      }
    1 ]- ]9 h2 }* s4 S2 U2 ^getch();
    ( f) x9 D0 q! Q# m}
    & D& Q7 }3 {, M% ]

    4 \: F9 T% D8 J4 K- t

    0 R8 U( m7 _& L% y! x, x0 t
    $ |) t$ C: Z: l+ O7 W* ?7 M" i6 |………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩 转发到微博

    本版积分规则

    关闭

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

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