下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的) N: \3 U, b, B8 Z5 k3 m; }
    功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。
    : m7 a; u+ f/ K4 s8 @3 j. f- D: Y1 S0 a! D1 f- R. \- a
    C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,
    9 ^( L6 q- u6 b* x) \/ ]' APC- DOS
    4 z# L3 y5 ]5 h6 M
    ( z* q- y  u7 M+ F+ n0 w% M4 }WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:
    3 u: _8 J$ O/ Z# s  D. z' R" \1 s. n- j/ m/ C5 X6 _, k, c
    1. C是中级语言
    & c6 {* l2 |, s
    6 t4 R; t- C; A! l* p5 J1 R+ Z5 {# ^4 p
    它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    " J! O: C4 r9 a2 T& M) r5 P2 B0 g
    ; n3 o' O) p  d$ `汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。9 @& ~# k1 ~, B, Q& S/ |3 T0 F
    ; l- y# R# h; r/ q' n* ?

      i3 X, f5 ~0 A! V4 t6 d2. C是结构式语言
    3 O6 D1 w0 Z4 l  ^( x
    & a& Q9 w" g' U! f# a# q
    7 q; Q. T- Y8 f, }; t/ y8 ^8 h结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的" |% n. F$ J6 Q' |: ]  s6 ~

    % ~$ ]7 q. T5 P6 V7 r& q' x: e信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调- V7 f( y2 Q% G& a5 k
    . M- o6 G( m0 _. J, K
    试。C 语言是以函数形式提供给用户的,  U$ X! X; Q3 u
    这些函数可方便的调用,
      ~& v7 m0 G. [& d' d1 L2 z: }# `并具有多种循
    8 z0 e9 u' M6 w% l- B- G0 X0 _0 C- a, f
    环、条件语句控制程序流向, 从而使程序完全结构化。0 M% Q% M0 W3 D- p6 v- W
    # ~" G4 b$ y* r2 ?/ i6 {

    5 b8 ]2 R6 `2 y" F3. C语言功能齐全: j& T; Y2 U; r
    , Y! @$ r5 x* f2 I. c- z& b9 X- }

    + T7 Y- `% x& F; \C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另! C8 B. g% v0 A+ z) V: o" P& u% ?

    ) s+ x$ ]  B( [7 n- \$ k7 l  r- oC 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑
    5 _. L: V6 a+ o$ w1 A) b) g  G- l0 L: i1 B1 v8 O
    判断功能也比较强大, 可以实现决策目的。
    5 j& u9 ]6 S2 r/ q+ A. C% P! [0 j/ y8 Z- m( @7 E9 O
    5 W! t4 P- ]1 j
    4. C语言适用范围大$ y5 c2 R$ W0 b
      [$ D# y. b0 v/ G( ~

    . H9 g3 W4 }' @$ nC 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于
    # I. x) u6 d" v, k1 b
    5 _; r% ?; v' D- ^多种机型。
    9 ?8 z" b( F) ]
    $ i8 V; Z, N' C! b( j$ X
    # [" E  J  l: v9 s: O……………………………复制下面红色字段………………………………………4 ~! P1 i2 h$ @0 I+ d* g/ v
    5 H) m8 U+ P6 C+ i, M9 t

    2 r; a1 C/ b  t2 O/*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */0 O5 I- R$ ^: w7 ]: l; C/ W+ C
    #include"stdio.h"
    $ I0 g. \( D; J8 u7 x#include"bios.h"% Q1 S- [/ Y6 T2 T7 w1 {
    #define LEFT 75
    * d9 `: R9 s8 o1 S5 h#define RIGHT 77' p4 B1 T( V7 ]* ^
    #define UPPER 72
    2 g( C( z4 [! |7 X* c# V# X+ R) M#define DOWN 800 c3 X+ L- Q/ t. f. [6 v
    #define ESC 27
    . @0 b0 `$ i% p, k, d% K: ~0 Cstruct Boxss        /*定义箱子结构体,其中包含坐标属性*/4 {% b2 m3 m8 W
    {+ e6 e6 Y7 i- Q: |2 L1 g; l& F
    int x,y;
    ! K, A4 o+ _7 n$ [, R/ z* V};( j$ O% v/ C3 X4 Z( S/ k5 c
    union keyboard      /*定义读取键盘码的共用体类型*/& ~4 d& M$ g8 d; N: E
    {
    + N# v8 C# N2 i, g0 {; bunsigned int iKeyInfo;: u0 M7 H$ n; _  h0 j
    char chKeyBit[2];
    * U1 j! m6 G& w+ k% k2 ]* K};
    - Q0 U4 L  z; z/ [int fnGetKey(void)  /*定义读取键盘码的函数*/% N, z& k7 m% `" C' `" [/ x0 {
    {* \2 C, V) S4 `* ^. M1 L. c; M
    union keyboard uniKey1;    /*定义读取键盘码的共用体变量*/
    7 D0 [: |/ o& c- uwhile(bioskey(1)==0);      /*检测用户是否按键*/: v+ O# t9 v3 u, m: h! h* a: J
    uniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/) \. x% ]' E; e% j. \/ i
    return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/" @: d6 |+ @: I0 _1 y1 L4 _* y$ L
    }
    0 F* F8 g: g- C( `, }( M6 tvoid main()
    2 F0 G3 G2 F& X2 g) e( l6 I{
    , s* a% l+ y7 l; Q$ x; dint iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/
    2 r. ]+ b" a  L; D- ?struct Boxss Box[4];                /*定义箱子数量*/
    + G: F9 q* o$ rint chMap[10][10]={                 /*用二维数组定义地图*/; g0 N/ J5 M3 u: ]0 a
                      {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/
    - w  }5 X* i' _                  {0,1,0,0,0,0,1,1,1,0},  O+ L0 ]1 @3 Q
                      {0,1,0,2,0,0,1,0,1,0},
    ; b$ U; s8 `1 b                  {0,1,0,1,0,0,1,0,1,0},
    ! ]* v# ^- `* k                  {0,1,1,1,0,0,1,0,1,0},
    & {) f( H; x8 `6 X                  {0,1,0,0,0,0,1,0,1,0},: X/ h1 n/ u1 p* W& E
                      {0,1,1,1,1,1,1,0,1,0},' a7 }- l0 z7 l) m% O/ e( `* u
                      {0,1,0,1,0,0,0,0,2,0},0 n* P. G2 ~/ B6 [3 m* k, k, Q
                      {0,2,0,1,1,1,1,2,0,0},
    2 X" o% I% N; X# Q                  {0,0,0,0,0,0,0,0,0,0},
    1 m; ?' L6 c* U# s0 O; s                  };
    , z. c& x3 Q1 Q4 w8 t2 \int i,j;2 g6 Y' w7 t7 E2 v/ V" A) \
    Box[0].x=13;       /*定义箱子的坐标属性*/8 V7 O) t% e2 Y2 m) m6 o9 O. n! {& P
    Box[1].x=11;
    % b( R2 a2 N2 k# O9 QBox[2].x=14;, K: R# n0 {/ Q, D' D
    Box[3].x=18;
    ' k: h5 O2 u! J& T  d3 t% z8 C1 pBox[0].y=8;
    1 a4 N& c1 C3 I- Q) c% x( fBox[1].y=7;
    7 c5 R7 |1 c) G, QBox[2].y=13;
    ! A: H* W$ S& E  K% Z) C* `Box[3].y=7;" e; ?- x! s1 s, n; z
      while(1)                 /*反复进行求移动的坐标运算*/+ A# y1 b  J* ?
      {; R5 M& x4 g1 m5 @/ [* V8 Z3 _* H
      for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/) _" u& f% R* K- Z; a
        {
    : ]) ^2 u/ E" q2 Q0 T3 s( i0 I    gotoxy(10,5+i);/ E' ]* Y" M& B! I1 v$ @
        for(j=0;j<10;j++)$ i) W/ `4 ~4 m2 L
          {
    & Z7 Q( S2 z; `  ]0 ]5 q( F      if(chMap[j]==0)
      f6 _6 ^& _( a0 C8 ~        printf("#");
      o$ ^" x+ J4 N6 w5 E      if(chMap[j]==1)2 l7 _5 c* M* B/ a/ Z" N
            printf(" ");
    + j6 t+ [8 S4 K9 k# M# {      if(chMap[j]==2)6 M( M  l' \) O1 ?$ a6 H9 V# g/ H' I
            printf("X");, A: r+ v" X% a! S5 V- d# r4 J8 `
          }
    ; P' b/ `- T) n$ T" Q( N7 I; U0 E3 k    }9 P. g& |6 I0 w4 Y, E9 O6 `
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/
    + q3 a/ f6 m2 }: a  L$ X% }  for(i=0;i<4;i++)) b0 Q0 Q" C0 U  F5 J
        if(chMap[Box.y-5][Box.x-10]==2)
    + a$ n2 y6 D" U; x0 F- v4 ^    j++;
    1 y: Y1 d8 {9 K) _' T. K5 j4 U( y  if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/
    7 v, L; Q3 G& O) p! }      {7 G4 f1 C3 S) l8 V* \
          clrscr();
    ' K! m3 k. |9 V# S% w      printf("You Win!");1 ?1 A3 q' c" W' l8 }9 p/ U- V
          break;
    ; H( O; Q3 N# G      }
    8 X! j0 b- f4 o% }  for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/
    & T5 y6 a7 ?0 t0 d1 Y    {2 H2 v5 B- p9 S, a
        gotoxy(Box.x,Box.y);8 ]0 v) o7 V' [8 }+ u
        printf("0");3 Y- C6 ^3 x. r. q
        }! ]2 U; p5 i, m; ?0 Y4 Y2 u8 i
      gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/
    ; H. S. o- B8 k( {  printf("*\b");  Y$ z, h1 ]* L+ q
      tx=x;                                      /*记录本次移动前的坐标*/% y( ?& ]% N! t5 q1 ]
      ty=y;5 M2 S  n! X% R; d" |; ]4 p
      iKey=fnGetKey();
      b% q8 D/ B2 o6 d  if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/8 J2 Y0 a4 P; c4 j2 q
        x--;
    & ^0 Y5 \8 m& y' ~  if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)4 V! _# Y. G& H9 {/ R
        x++;, l& s5 E/ n! ^
      if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)
    * p) P! \% M( M4 k    y--;! ~, d' J1 E$ |5 z
      if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)
    5 o! u, l2 t0 \) [$ h. b/ e    y++;                                    /*输入ESC退出并输出"YOU LOST"*/7 |4 T' K* S5 a0 N& Z# z
      if(iKey==ESC)
    8 z3 O1 @0 t& \$ y: l  {4 e2 W4 X% Q* g3 t
      clrscr();! G7 J' k# l. o# P* T
      printf("You Lost");  J4 H0 l* Q7 C! `; y3 e! X
      break;7 Z8 H: H, u/ i3 d6 s# w+ J* h/ G
      }
    ! Y; T6 m2 w4 `& h/ s7 j  for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/
    0 x+ N8 y( [; ~* b& [0 T9 n, T: r    if(Box.x==x&&Box.y==y)
    9 I& w  H8 q: K2 ~      {
    , O/ m. {5 D" D$ |6 I      Box.x+=(x-tx);
    / D5 r+ }+ o, L      Box.y+=(y-ty);6 k" d! \0 ]; K! |! g
        if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/2 t- e' T3 F! B* P
          {+ C9 O( a$ f. X' O4 T: a! Z( I( w
          Box.x-=(x-tx);6 D2 F* n8 Z" X2 W* p0 t
          Box.y-=(y-ty);  R$ s: v9 i4 P# Q% x; W
          x=tx;* T5 U: Q4 S" m
          y=ty;
    5 G0 r) r0 ^3 u1 p; E      }
    $ U3 Y% t! A# N: f/ F      break;0 A3 l( W; k/ O  q
          }
    * ^1 a: u/ I4 e- ~- P  clrscr();" w/ t$ E$ ?! i1 I
      }
    ) r" O" T  j1 J$ B5 Tgetch();
    + Z% s' w8 V1 r% H% G. |}( a4 N7 |0 ?' S/ x1 w8 }6 O  U: V
    & Q; _- E3 k- S5 T# `( r7 ]
    ; V5 M* X4 u) U5 a& l) M

    & p) U( b. G" f+ b# V0 a………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩 转发到微博

    本版积分规则

    关闭

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

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