下沙论坛

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

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的! F. M7 o# B' {5 P1 p
    功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。
    5 {* S* A7 ?+ I- `$ X  C+ @# Y0 l! F! s% l6 k( d
    C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,- w: w; g: u; `* X  Q
    PC- DOS ( U2 z( l/ I% N9 u
    ) `. a, ?9 Q+ n* S, t
    WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:   |; A6 B1 t: j. ]! p* ?
    # f2 R6 v( P9 T" B6 D( ?
    1. C是中级语言* }% U* q8 `6 T; ^$ u3 h+ J0 `& y1 g
    6 Y1 g& E% i; L1 U. T4 @5 x$ |

    / X( t' U) @* S3 h! Y它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    % L) b  Y) v( r2 F' W, `7 ^! t6 q: w, g6 b3 d" g/ d; T( E( Y: ^% M; N
    汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。# u: `' R) Z# [/ E# m$ E& w" _' X
    + j6 m' p$ E: z' W4 s3 K' X% Y* k

    * a9 m0 u/ f3 V+ b( g' T  y2. C是结构式语言4 V4 m/ M! y8 M8 E

    0 f0 O4 E0 w5 C8 Y/ R
    $ P/ i& w# c3 J9 j% r* q, S  W结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的( l+ Y" ^8 q9 Y
    / _0 D# M2 x4 L
    信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调
    ( Z4 V4 C; v& Y# m, p- s$ K: k7 m: x5 f% u: u( {8 h
    试。C 语言是以函数形式提供给用户的," }9 M- N2 N" B7 I/ F' Y' K
    这些函数可方便的调用,/ m  a9 T7 f- H' A5 |
    并具有多种循# q( `/ |+ @3 g; T1 N7 D4 O) k3 N
    ( @) U% [0 n0 @4 W
    环、条件语句控制程序流向, 从而使程序完全结构化。
    5 }& Q" |1 M: \7 _7 i( i
    6 X% D* j+ V+ r8 l5 B  l9 ]& Y! |( t& f3 A& Z
    3. C语言功能齐全4 W) N4 @! `! G. _1 E8 g
    8 ?/ k7 ]! U8 Z/ k' Z* I

    , H0 S  e1 _; m6 W9 N+ W% i! T% @+ UC 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另$ p+ ]! ?( B; E
    * W  d+ E; P* w$ q5 b7 i
    C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑
    6 |. Q- [& g- j7 [: `2 b$ e) e1 M* j, X% I9 ]
    判断功能也比较强大, 可以实现决策目的。
    + \. ^1 c$ |" Z2 Z
    ( |. H& u) L5 r2 b  `
    2 Q5 q, C3 U, L9 l# O4. C语言适用范围大; w. `0 G8 E- Y. a- R8 `6 ^) `( f- C" ~: }

    . b8 B8 x1 h/ S+ e# C  \0 Y% R! T1 g6 C. w
    C 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于
    ' A4 u) T: N- f. F+ v; `* M
    3 C: Y" A3 n; u! t8 G多种机型。
    1 \. z- K: F# L9 g8 \" W& L' a) S% @; X6 _& y- [1 d  Y& [

    " I- e) n" O# e; b% R……………………………复制下面红色字段………………………………………
    4 T6 _4 K5 D! G8 @. ]% S  B; n3 }$ M; w+ y9 E! W% A

    # e% B1 m4 D, f/*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */
    2 ?1 P3 ^. `' @' Q; R#include"stdio.h"# ^9 r0 M9 W6 K2 H
    #include"bios.h"% b! s1 T  ~& N# T( H
    #define LEFT 75. h4 o6 G# |$ O7 o
    #define RIGHT 77
    ! d6 V, R8 A( U! h' b#define UPPER 72. c+ x% k4 ~6 l5 g. c# k3 B2 T2 d
    #define DOWN 80' l# q% h, H6 H* B; @4 {
    #define ESC 27) {. h- m5 h3 W9 ~3 T2 X
    struct Boxss        /*定义箱子结构体,其中包含坐标属性*/
    # _( B+ v/ a: g% j" ~7 J4 r; _{9 z" U! |$ w  a1 ]
    int x,y;# j1 e+ E$ I4 V. h3 l6 c
    };- d/ a! `  x9 }6 Y  {1 W9 e# x
    union keyboard      /*定义读取键盘码的共用体类型*/
    3 [) J, U- i) @4 ^{& u  ^& L5 f( v& o" b3 i; x
    unsigned int iKeyInfo;  _( V& m! K& V0 _+ Z, }( ~7 f8 j* A' B
    char chKeyBit[2];
    3 r- O2 l- x: V' {};/ ~' @0 i; s) v  U, n
    int fnGetKey(void)  /*定义读取键盘码的函数*/, ~( r, Z6 r& p! t6 t' b
    {' Y' n0 b+ T' \1 [' x( f; f
    union keyboard uniKey1;    /*定义读取键盘码的共用体变量*/: \9 J; H( C2 k( z' l
    while(bioskey(1)==0);      /*检测用户是否按键*/
    3 {+ Y! T5 B) W" muniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/
      G& D& U# Q0 C) Yreturn(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/& {+ }- w( B6 \9 M, \, ]+ I5 ?
    }
    9 g5 G/ d7 v5 Svoid main()
    ; L+ n" ^. G- a1 _* f{, l, Z- T. y# z% }
    int iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*// E& k$ m9 z8 x2 o. V
    struct Boxss Box[4];                /*定义箱子数量*/, [4 N0 @9 `* V0 g; z
    int chMap[10][10]={                 /*用二维数组定义地图*/5 \( J* k3 H/ |& K" ?: ?  O/ j0 v
                      {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/6 e4 z' }3 M8 b3 i$ D
                      {0,1,0,0,0,0,1,1,1,0},
    . @' F$ H* ^+ g0 `( v2 i                  {0,1,0,2,0,0,1,0,1,0},
    : C: S6 K" g* j; z4 @1 W                  {0,1,0,1,0,0,1,0,1,0},
    7 h, ^! f- K$ E0 e! M                  {0,1,1,1,0,0,1,0,1,0},
    ! k) I, z( z' r0 y* o                  {0,1,0,0,0,0,1,0,1,0}," [0 F) z* z$ A4 D  H
                      {0,1,1,1,1,1,1,0,1,0},
    : Y( I! X8 W* O8 O+ _: O: g                  {0,1,0,1,0,0,0,0,2,0},
    ; D8 y! b6 T3 E. H- \. U( P; c                  {0,2,0,1,1,1,1,2,0,0},
    . v" L3 G1 h6 r* d( P                  {0,0,0,0,0,0,0,0,0,0},/ Z4 g2 ^, ?9 n$ G% Z$ z' G
                      };
    : }  h' D* m& S. |% a1 vint i,j;  U3 D4 a1 }1 e# q- K8 W7 t
    Box[0].x=13;       /*定义箱子的坐标属性*/  H* M% E- [$ a3 A; w6 c4 h" j
    Box[1].x=11;  w! g3 H  A+ n8 M) d2 {( P$ W
    Box[2].x=14;% b! q* b) D. T* O5 l/ K% Y
    Box[3].x=18;4 z( h" G* w, [0 H% }9 N
    Box[0].y=8;
    + U  t2 u$ f6 R- h7 mBox[1].y=7;. m& B& m7 F! d/ f, O: R
    Box[2].y=13;
    ) r8 q) R, ^$ H1 Q3 T1 Z; bBox[3].y=7;
    ! F$ S1 b* \, D9 k8 r, T$ l3 v( |  while(1)                 /*反复进行求移动的坐标运算*// O" k- M# S" \) u
      {
    + ?' H6 \9 _6 _3 M+ i  for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/
    # p& i5 a5 X" z5 `4 y) ~    {
    ; \& Y* q2 m' |    gotoxy(10,5+i);0 E- m; _( M# k
        for(j=0;j<10;j++)! }6 |. |! T" Z5 G
          {
    5 F/ b. s+ H0 C4 ~4 w      if(chMap[j]==0)
    ) ]5 h. f7 Y$ W$ I        printf("#");
    % H1 Q1 c% \+ M7 h2 a/ v      if(chMap[j]==1)3 C. }7 }7 n: _0 X
            printf(" ");
    2 l. P# @  J* ^+ M) w" F  F; y' {      if(chMap[j]==2)/ v% b7 U3 d9 q' O# q
            printf("X");
    1 u, `7 n% p, M" D0 Y      }: G8 j5 S6 y' Z2 X, O6 Q
        }4 e8 w) Q5 A+ i
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/
    ' |* `, ~1 q0 ]7 v; m1 Z  ~, w+ y  for(i=0;i<4;i++)
    4 R& x) u/ K& q, b    if(chMap[Box.y-5][Box.x-10]==2)/ E: w! I8 I( Q/ R# i7 V
        j++;
    # J3 S4 \- m  b+ |% _+ ^  if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/
    4 G$ s9 r: X- n4 ~) c      {& D  c3 k! H, Z4 n
          clrscr();6 v. ]# ]: Q$ o' d) A, B/ k
          printf("You Win!");
    * U# @2 N' P* n      break;( s: f. E& [8 \  C
          }1 N3 y$ [0 _6 i) J4 E6 m$ _- n0 W
      for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/# D2 t8 @7 L7 i: n
        {
    4 w* ?2 n/ \: P- w. a    gotoxy(Box.x,Box.y);
    " t- q; n) m/ D! B( s    printf("0");9 W% }& n* s1 k
        }
    2 B. D  {9 r: R1 z, _  gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/1 {6 h) }% C/ `1 f' A5 l
      printf("*\b");
    1 b3 r& A) r) ]0 A) t# L  tx=x;                                      /*记录本次移动前的坐标*/
    8 s2 a& Y7 L- C( @2 n* x! D  ty=y;3 Y; X0 T* |3 x# [8 }$ M
      iKey=fnGetKey();
    5 C. W* F, f& l% y  I+ I6 C4 p. ^  if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/) y9 o5 X! U) }, M3 o1 d* y
        x--;: T& o- o, G6 \6 I! I
      if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
    & o* d9 y& H- F    x++;
    7 \4 f/ b/ n; T* d( d/ {  if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)  ^2 e7 Z; B+ b5 }' q1 S4 @
        y--;
    9 ~0 z( |) J( Q, d4 T5 D* O  if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)* t! H& K8 ^% X) L! x
        y++;                                    /*输入ESC退出并输出"YOU LOST"*/- Z$ n; z' A+ {( L- Q
      if(iKey==ESC)
    2 H2 E" W3 B$ D! D  {" H6 p. s6 Z% f
      clrscr();
    6 m8 N5 w% N( u) N! l7 e  printf("You Lost");
    & Y8 o+ v" S, ?8 G, j5 I% `  break;
    * E8 b3 Q) i$ ^; G2 Q  a4 R  }
    : v. M$ U% N9 {$ @1 k, n  for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/
    ! _( l9 D1 t# H' G    if(Box.x==x&&Box.y==y)3 f" k" e& D. ^; Y
          {6 l7 h8 f4 o9 y- M3 f0 o
          Box.x+=(x-tx);9 }: l' `. ~$ v! k/ O4 |
          Box.y+=(y-ty);
    , k; Y3 Y. K! f% N, v    if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
    ! s$ A8 O" X: A- ~& k( B! [/ ]      {
    3 }* q& J6 G  S$ n: s& a& D      Box.x-=(x-tx);' V% Y$ N  L, ?" i, E
          Box.y-=(y-ty);
    & F3 {8 Q2 s. r/ x* v) Y$ T, C      x=tx;
    ; w2 m2 Y. H* J/ ~$ s      y=ty;7 t7 v- P6 z7 G' ]0 m
          }; S0 M6 d6 ^. }' w$ l: Q
          break;
    ; @4 U4 B) v$ q' f. J1 H      }
    6 X' y/ I# ~( l0 h% y  clrscr();$ X* S  ^& @- t. I" v$ S  w: B! h; D
      }1 D  y) j, s' r4 q1 J3 L: o
    getch();7 M+ b0 q3 u( B" Q
    }
    - l7 L5 E! a7 D- d# p% d
    9 O) {) B. J: r! t
    0 w: F/ D1 u- ^! H9 `4 h
    ! v& B4 R+ k8 g9 {
    ………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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