下沙论坛

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

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的& J' e. }$ g( }
    功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。
    7 _) `! c& S" v% F/ w+ H
    4 _+ K' x( R- w( o( _C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,
    . `1 E. {/ j% V  XPC- DOS
    1 ~4 ]6 w# h0 p  Y1 q7 g; ^1 o8 f) t. v; P4 o/ M' d/ x) ~
    WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点: * c# @3 Z( C1 d

    . a0 }7 _; W/ ^( j( {$ R- l1. C是中级语言
    7 d/ p  k8 }7 Y2 c+ d. _  T
    5 M% x6 ]  {) b" ~! H5 g' d& O1 B5 j# ~! l0 Y  x4 Q7 v: a
    它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    - L7 E% r- y% t) W/ P) e! v$ D; [* O+ u# l3 G, Q
    汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。! Q! Q7 N' z; d6 K6 c6 a& a

    0 B0 y& Z$ K  _0 ?$ j0 ^8 O, @  [3 ]1 S  d
    2. C是结构式语言0 p& S# g' ]% Z3 N1 Q
    : c  \1 X$ ^6 i6 K1 A

    & R2 C% ~" X+ X# [* v1 B结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的% k8 g; b% u, g( O7 j

    3 Y- h* I9 H6 b! E信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调
    * j$ u* [" O1 F" M- a1 j
    * p6 H# H! ]! W, e* U: I% T试。C 语言是以函数形式提供给用户的,
    $ z& Y: O$ b, u- z$ N这些函数可方便的调用,
    $ I& s) Y8 E( V: k$ Z# O并具有多种循+ D4 v. x: D2 P1 h

    " o: d* c# U$ I2 Q' e环、条件语句控制程序流向, 从而使程序完全结构化。9 R3 i  m5 r/ E; U' U4 u: C6 ]

    $ Z# L5 i! I2 a+ ?7 V3 H: d  o1 w/ g0 f+ \
    3. C语言功能齐全( M. E/ {  C! K( Z" B
    ( ~( E9 Q, F: ]/ K4 D# \  T: D+ s
    5 B, X7 I* l3 ?3 A2 P- K) t
    C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另8 `1 |9 s: s  L3 L

    1 f5 K  e/ Y0 R5 DC 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑
    $ ?$ H. m. c/ g2 u) x9 O) i5 H: s( ~
    判断功能也比较强大, 可以实现决策目的。9 G6 \9 m# w* R8 R; _& \

    & A& E" U, V* S/ [# l6 ~. \6 J% A4 M+ z4 w) _- V' A, i. [
    4. C语言适用范围大$ L4 n  v9 U4 k0 g5 U- o% U7 W

    3 C7 Y( s% e& M& y0 B& h/ t* w& r( F( h& i' T3 x
    C 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于- b: L" k+ r7 V* X2 t, C# F' O
    0 u! Q1 x7 T) ^9 [" C
    多种机型。1 M' b. ^' L( @4 E
    , O+ I7 W8 [0 N+ o

    . n8 C) v$ G5 n……………………………复制下面红色字段………………………………………6 x& j8 O, I: n! w( p
    : n. a0 T& K8 t" Z! x
    ! p% g# Y. m- ?! [$ n: V+ F
    /*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */
    1 k* Q' ?5 j' b/ F. g  }: A& l- b#include"stdio.h"
    + h/ a: ~" z+ |: B+ L( \& i/ X6 W#include"bios.h"
    1 V7 S1 S) {/ |3 e2 R- Y, H6 G#define LEFT 75# ]! X& u( V) N4 v7 r
    #define RIGHT 77
    * _- ]5 N+ C" B#define UPPER 72
    " F0 K% r8 x; H#define DOWN 80* a4 P# V' e( ?5 @
    #define ESC 27& T8 z$ n8 o$ S, b' K
    struct Boxss        /*定义箱子结构体,其中包含坐标属性*/
    8 |# b/ L0 k+ j5 {9 ?, g{
    0 ]# E: [  T3 Sint x,y;
    - t/ G6 X8 j4 @0 c3 C0 m};2 T! b" q' R; U* `
    union keyboard      /*定义读取键盘码的共用体类型*/
    , m' {- `+ `0 G: n{
    & K  L$ ~. w1 Z0 E, L% |5 junsigned int iKeyInfo;
    * Y7 ~. o: l1 C! x# vchar chKeyBit[2];
      N) ]9 ]- j: ]* n};
      l( Y7 I4 d! {7 I$ J( i# s& M' C/ }int fnGetKey(void)  /*定义读取键盘码的函数*/) s6 J+ U; ?3 ^6 r" j
    {1 R4 g8 K, O+ ~  \6 Y) @. F
    union keyboard uniKey1;    /*定义读取键盘码的共用体变量*/0 P# Y  B3 c6 K1 c' M
    while(bioskey(1)==0);      /*检测用户是否按键*/" Z% ]# Z' N: X0 i/ r4 w. A* O; n
    uniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/
    2 L* {, Q! o0 J& f: ?return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/- R3 p0 ?* Y5 c7 z
    }
    8 b3 }6 n- [# K* a% lvoid main()
    + L) F# g  b5 `: y$ A/ E; C{
    , P" |# u1 k8 E* c& kint iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/
    9 t4 p- t8 P$ F0 _* n5 [; o1 x; {* bstruct Boxss Box[4];                /*定义箱子数量*/& [% `: e/ B1 @6 Q  L; Z7 Z4 I
    int chMap[10][10]={                 /*用二维数组定义地图*/) T' |7 b2 Y( S2 [/ U
                      {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/2 k7 \- X! e* _7 W  G, q
                      {0,1,0,0,0,0,1,1,1,0},& w3 N3 s+ |; u! r3 h7 L
                      {0,1,0,2,0,0,1,0,1,0},5 Q; V2 G3 _2 c5 J$ Z) J
                      {0,1,0,1,0,0,1,0,1,0},! s2 g1 S1 m( K3 V, N
                      {0,1,1,1,0,0,1,0,1,0},
    : t$ R! E. i- W3 h/ p7 x" o/ y                  {0,1,0,0,0,0,1,0,1,0},
    ( v  R4 c. u: \1 ?5 Z9 Z                  {0,1,1,1,1,1,1,0,1,0},+ _& e1 V3 Q% K5 |# q' Y$ v; o" ~
                      {0,1,0,1,0,0,0,0,2,0},! X- K5 x. c3 T" a3 p: y
                      {0,2,0,1,1,1,1,2,0,0},' Q2 T7 ]0 C9 o* F8 \' O
                      {0,0,0,0,0,0,0,0,0,0},
    ( S% {$ g9 D' T6 I  f0 t3 O+ {5 v# F2 P                  };
    2 w5 C) h/ ]" H. b2 dint i,j;% R2 C% ~9 g! l& f
    Box[0].x=13;       /*定义箱子的坐标属性*/
    $ a, V* X, Z8 wBox[1].x=11;
    & `4 z2 H$ x) l2 S+ L4 W) |# f, cBox[2].x=14;" i: ~- @' {8 ^1 G0 [1 U
    Box[3].x=18;* M8 V$ W( w' B$ v6 ]
    Box[0].y=8;0 P7 ], g( A: c& W& [
    Box[1].y=7;% y" M& g) D7 ]/ l8 M; L3 E
    Box[2].y=13;/ u: J- z0 K1 ~0 F$ W; h9 P
    Box[3].y=7;
    0 R1 h: [, u: M+ g/ {  while(1)                 /*反复进行求移动的坐标运算*/
    $ I# v$ h2 Y0 Q; ~- b  {
    & K2 @6 u9 Z# f2 w7 u: N  for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/
    3 n! K( F% M9 l8 Q- r0 l1 {$ ^+ a    {
      y" w6 t1 X- I" F# N+ F    gotoxy(10,5+i);
    ) a, j! s" u8 O8 r. m7 \* B    for(j=0;j<10;j++); r( l3 Q; o. |  I
          {7 Q8 ^& [! D: b# `) t
          if(chMap[j]==0); [2 X/ a/ F% |! P
            printf("#");0 j* u" S' k  ^* Z" V7 N
          if(chMap[j]==1): X1 v: ~( y5 D
            printf(" ");
      g( F8 c- c! Q$ P& _, }) _      if(chMap[j]==2)
    2 K5 j6 j/ R& I4 x" f        printf("X");& P- K' P$ I5 L
          }! S# A$ W% |8 ^, z% O# I, B
        }
    9 c7 j& q5 Y" H5 j. }) W- n  j=0;                                       /*判断是否所有箱子都在目标坐标上*/+ n  ?. ]% `# G& v9 ^3 B
      for(i=0;i<4;i++)& R. D% z) t9 n) O& d3 ~
        if(chMap[Box.y-5][Box.x-10]==2): I  E9 j  S1 s1 W
        j++;
    6 K; \0 ~8 ?+ _# y  if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/
    6 p; D  @" n6 F      {
    & U- F% N: v+ F4 S      clrscr();
    # n5 ^# }: T/ R7 v3 P5 u      printf("You Win!");
    $ P1 \+ r2 i9 z1 q$ T$ r      break;2 c5 [5 w5 N) a
          }
    ! [( u) {; K. `4 M: ^  for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/
    : ?0 e3 J: _3 `0 ]/ }% b    {
    6 r- F; |; C% m  x    gotoxy(Box.x,Box.y);+ Z& Y# L+ a# p7 |1 q. R
        printf("0");
    7 K- C2 c3 @3 v6 U    }
    4 z- A; {( `/ c( x/ X  gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/" P& V, E" T* j8 J; s- Z
      printf("*\b");4 y9 P2 Y# Y- P: M6 x; j% H
      tx=x;                                      /*记录本次移动前的坐标*/2 c- z% q% e& E; k. S
      ty=y;
    4 `1 @8 w$ }$ i- P- T  iKey=fnGetKey();! Q1 P8 h# l' W0 Y& @) N3 S  E
      if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/
    7 O8 n, K3 h- d9 g+ L    x--;
    , F: C" v8 A! g) w! u- M& L  if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
    4 l8 X7 o9 G/ }% u' B5 b! r    x++;& ~3 x; O* F* D1 p$ k) ~
      if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)* u1 c# D' O; H5 `  ^* A/ M; o
        y--;& v! S2 K# `. R& M  O. b- H  t9 W
      if(iKey==DOWN&&chMap[y+1-5][x-10]!=0). Z0 _/ ^' B9 K  ~+ u0 j: X: H
        y++;                                    /*输入ESC退出并输出"YOU LOST"*/* |# @  E1 B7 k3 z4 U
      if(iKey==ESC)
    ) ^6 g1 z2 d/ w" G; |/ y5 t: l  {) T) P/ F4 m0 O7 _3 ?9 r$ {
      clrscr();
    ' ]7 b, h% _) o$ G8 p9 e! {  printf("You Lost");% w" g5 N: ?' V
      break;/ J0 J6 C' q5 N! K$ o+ _
      }& K- @- K5 |1 c, Y. P
      for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/- O0 V' d% [7 I6 l
        if(Box.x==x&&Box.y==y): U. p- j$ @2 ?0 J; |8 v) J/ W& Y& T
          {
    ' u9 U' S7 i1 W, _: D: h/ w  [      Box.x+=(x-tx);1 q4 e7 q% T8 t1 ~) j% u
          Box.y+=(y-ty);
    8 }! s, Z! M5 [1 f" S+ }    if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/  i2 |* l7 h2 V
          {. B# [6 |! n# w1 N
          Box.x-=(x-tx);
    , ^; g, b: O& }+ r% E      Box.y-=(y-ty);
    / m8 g1 N, }6 o# _      x=tx;+ {; x. T% U' U1 c: E- V" y9 Q
          y=ty;
    , F. O" Z- _' M: }      }5 \" g  v  \1 G3 N: m& o7 `9 |
          break;
    8 R* _; C! W  l' ~, V% [4 O      }
    & F/ {: l% `3 ?' ]  clrscr();* ~6 B& _! S& o7 v
      }4 m+ e; M3 ]; I+ F( `
    getch();
    5 r0 j: A& H4 q2 Z}! b& b: u; U% R' i/ _2 {
    8 L- P2 p7 c8 Y3 M: l( j- O

    / G" K; V6 V7 k% D; C! u" R
    0 j6 V; R/ ~$ t  T( [# z! m0 A………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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