下沙论坛

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

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的: k4 c- b2 j1 g; v! p8 c
    功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。6 p+ X5 h% r) |$ Z% I
    $ a9 ^* P- r$ H9 A+ M
    C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,8 p, h# y3 q1 j6 H, ?5 w
    PC- DOS ) l7 w% R5 ]$ W( U% F* p6 i6 B" \; A( n

    3 Z* i# w% c* JWORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:
    # P  {$ t' h. }4 O0 I8 a0 w' j, N6 Y' f1 d6 W
    1. C是中级语言% d! O) `7 |5 I+ p1 h- j# x
    0 d  `6 V" G& W. C1 r
    9 U4 ~& d9 B" G. {3 Y% s% [; n
    它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    % V4 P# b% D" ~5 x; K
    ' @7 X! E, Y+ A2 Y" \4 M3 `汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
    & g5 _& E; y$ J0 `4 Q$ t- o' F6 h( Q" L. Y& j/ Y4 Q  L
    1 t+ X! L' V8 h# Q
    2. C是结构式语言
    ; ^# n1 r/ Y3 N3 y9 `; b6 T8 n' Y% V1 F; h# T/ K9 f- y0 g

    , ]3 D$ Q% M* f5 P. l结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的# u  ]" T' |4 ]) y4 W: U

    % z4 @3 h0 n4 [8 N  C* r, Z9 m信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调
    ' B- Q( U$ s2 g9 n* [( [
    3 \+ l& T: U7 [0 z试。C 语言是以函数形式提供给用户的,5 O% A  w4 n# ]9 A" i
    这些函数可方便的调用,
    : z- k: i  _+ B" s6 l! g% ]0 Z( D并具有多种循
    ! y! o1 s# _, n) w" V3 H+ C# R9 F. O
    1 s( b3 W$ v/ ?" a% ?! ]环、条件语句控制程序流向, 从而使程序完全结构化。% B9 [$ X0 u3 `: M% E' n  Z8 U. T
    $ X2 E. N9 W: a: K$ s# e- n( \' v

      F  k+ ~8 ~5 i( b8 }4 F3. C语言功能齐全; f  l( e  c9 v8 m( d/ ~4 u

    1 l4 r$ D. v- Z9 Q
    % v4 }9 b$ Y* r8 h: D; Z& v  g3 XC 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另
    , D. J; N  _" C
    4 i0 L8 k$ b* |6 P& U" I) W  {C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑7 H5 i& v9 ^! M- c' [: Y

    6 p9 D  M1 Y3 T: n' O判断功能也比较强大, 可以实现决策目的。
    1 v% `: y/ `: K7 C: M' Y& p. N4 {& F

    5 x5 Y5 b# O0 p, g  W- L2 e4. C语言适用范围大1 ~7 {3 u" @- ~9 b7 L, K

    0 U! z8 [# [! J7 |
    6 v' r% E% M# u8 W2 ^$ ]( F5 NC 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于
    " Y7 w5 C: W% x
    . m3 E- I, u' e  N: f7 G多种机型。% H! _% g5 \/ ?! |8 @

    7 ~6 |2 |- _+ V
    " _7 o' y" m: N7 g; G……………………………复制下面红色字段………………………………………, f) O0 a: j7 _

    8 Y- h; q! p  E2 p
    / z7 B. b. ^; |6 Z1 V# W) Z/ N3 D/*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */
    ( H# X  ?6 W8 M( d#include"stdio.h"
    ; n$ I2 D4 n  z7 y#include"bios.h"" d3 t5 h* u$ [7 e3 }$ q* r
    #define LEFT 75
    $ [; o( g: ^3 l6 ~! i#define RIGHT 77
    ' S! O  T1 K" Q3 G#define UPPER 72
    5 k5 g, T+ ?! v9 E#define DOWN 80
    . ?- }- a4 o$ h4 c' M4 I#define ESC 277 z- i8 f# X/ I8 e5 W
    struct Boxss        /*定义箱子结构体,其中包含坐标属性*/$ K( j: r. L: O7 l
    {
    - X4 P: w9 R7 C2 zint x,y;
    # Z& Z/ \/ D( g, c! I, Y* Q' `};
    7 `/ [9 R- x! e3 B7 a  {, hunion keyboard      /*定义读取键盘码的共用体类型*/2 e# Y3 I) @, c1 W) {2 Z9 [
    {- t/ P7 `7 A4 j5 P/ M
    unsigned int iKeyInfo;! R7 J3 f' Z1 g( L
    char chKeyBit[2];5 O! x& ^5 ]; G8 W4 E' r
    };- y- _7 Q3 v4 w& T: o
    int fnGetKey(void)  /*定义读取键盘码的函数*/6 ^1 R  J' x$ b7 @
    {- [  W. u5 J4 X' m7 T; ?
    union keyboard uniKey1;    /*定义读取键盘码的共用体变量*/
    8 \! L; }: p$ V, X) {7 H: H- s; C, E' cwhile(bioskey(1)==0);      /*检测用户是否按键*/
    . v" k. L; X. r2 a) _9 q3 p. |uniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/3 J0 H2 L2 E1 Z! m& I  `; O; Z
    return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/
    ) r! b* b; J" i) `4 z' _6 o4 u+ C1 V}
    , m* ~/ l' d: ~: s. Bvoid main()* H. f- Z. {: A  [) Q% s
    {
    2 F0 h2 M: r0 o# V7 ^% }: Iint iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/
    2 L: P4 b4 X5 Astruct Boxss Box[4];                /*定义箱子数量*/7 J) {+ v) @9 u$ ?
    int chMap[10][10]={                 /*用二维数组定义地图*/
    6 e; v2 E4 `3 p                  {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/
    4 ?0 w$ H) Q1 I3 k7 K/ d                  {0,1,0,0,0,0,1,1,1,0},) O, U4 Z" `1 Q: Q
                      {0,1,0,2,0,0,1,0,1,0},& z' a3 H9 n! e4 t  Z
                      {0,1,0,1,0,0,1,0,1,0},, ?/ d' }8 R  i. U
                      {0,1,1,1,0,0,1,0,1,0},. s9 w( z. b9 H, _; ]) O
                      {0,1,0,0,0,0,1,0,1,0},2 x4 }7 W% ?5 a% G0 E7 c
                      {0,1,1,1,1,1,1,0,1,0},
      X# k8 k% p2 G, q. `: R                  {0,1,0,1,0,0,0,0,2,0},
    7 J7 i1 v; A) ]( _* s                  {0,2,0,1,1,1,1,2,0,0},7 A4 v/ [1 B. d; [2 [1 b
                      {0,0,0,0,0,0,0,0,0,0},2 U& L0 }) j1 O4 p; s7 u: s& h
                      };/ P6 _8 e! {" n6 L& H
    int i,j;
    ; s1 N. \. {- o( m8 J: B. R/ \Box[0].x=13;       /*定义箱子的坐标属性*/! g' X9 @: Z5 l) B" u; @
    Box[1].x=11;
    / T" t6 D* b, c0 p. EBox[2].x=14;4 q8 y7 n: h3 M5 V" O- N  F* a
    Box[3].x=18;& h( m$ `9 E- V5 @; F
    Box[0].y=8;
    % t# P  o( ~; n( v, [8 yBox[1].y=7;) C' n. P( a% w& E9 J- j4 O0 ?
    Box[2].y=13;* }& Y$ s. w( @1 s8 G8 y% h2 g
    Box[3].y=7;7 K) x1 k+ [7 y4 f/ A
      while(1)                 /*反复进行求移动的坐标运算*/# F$ s2 ]2 G9 d  D% y7 i
      {
    2 d+ [& h; P! c. n  for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/
    2 G/ ]) p- k! l3 g& T! }6 w    {: X( ]8 o* H1 q
        gotoxy(10,5+i);2 Y5 [2 a$ n2 v! }/ C
        for(j=0;j<10;j++)
    0 e+ m. H) K0 Q' e: M+ K* q. g- u! C$ i      {8 A0 a3 A& X3 |, a6 [/ w
          if(chMap[j]==0)7 C* x- _  b$ L( a- T* U9 T
            printf("#");
    3 x5 L9 `% v' B! o" n) P      if(chMap[j]==1)
    - e" }( Q( B+ x5 R; E        printf(" ");
    ' O! O3 h& C+ x* T% w      if(chMap[j]==2)4 z9 r1 f- h7 c5 B; u# e
            printf("X");
    ! l& X# |* y1 a" \9 u9 r      }, R5 D  i$ L# W1 G+ b
        }$ f! x7 U: ?2 I* Y" P& D) r
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/
    8 a& z1 s+ z" V0 o  O/ ~  for(i=0;i<4;i++)0 F7 X6 q) v5 S- C! E1 J
        if(chMap[Box.y-5][Box.x-10]==2)
    : ]: p/ f0 e+ @6 x    j++;# \+ I! F6 ^" |' C$ a+ o
      if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/
    ( h* E2 ~9 U8 B, u; }      {* g) ?8 Z% e1 k& s  a2 O
          clrscr();# S- v& V6 `3 \) }: ^6 @( H
          printf("You Win!");
    4 P! ~) ^3 X6 W9 @      break;* P3 d/ Q& T& D& v8 p
          }
    ; Y8 t; Z% b8 g* F5 \  for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/- v* _% B# V$ m# o  W
        {
    3 O3 d" W. _& @4 Z' i$ s; k    gotoxy(Box.x,Box.y);
    ) ]3 K8 B1 G4 c' V    printf("0");
    # j+ B+ t8 _  s) b, b+ f7 _- c    }
    / d& q6 X& T0 I9 _! [9 F  gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/
    4 Z* O2 c) i( Q; L9 ~  G4 p; x( u7 g  printf("*\b");# E! {( w( N+ Q1 ^5 I
      tx=x;                                      /*记录本次移动前的坐标*/
    + r7 u7 I) V. ^& u( l; z1 J  X  ty=y;
    . P9 y* w* K% D7 J  A- I( w7 T  iKey=fnGetKey();
    6 H3 v) j. ^6 T6 B6 h  I' S4 y  if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/5 Y! y$ A7 v7 r! ^- i, |  }
        x--;: M# Z9 c5 i4 m5 c# I% Z) ~1 A
      if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
    5 H4 }+ t7 i# N/ N2 Q9 i* S5 `- T1 \    x++;
    / ]* A4 R* p; r3 s' u) ~3 }% K& Y  if(iKey==UPPER&&chMap[y-1-5][x-10]!=0); C0 ]+ i/ v5 f( X: N4 n
        y--;3 j; u. I! ?  [7 W5 w6 t5 f/ P* ~
      if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)
    " ?0 [% I$ y) N    y++;                                    /*输入ESC退出并输出"YOU LOST"*/2 I% R+ ~2 g  l. G# b$ B
      if(iKey==ESC)% Z4 k3 D  y, s' ], r& `
      {; E& [) A  x; \) b! z, b! l
      clrscr();% O5 j( z% ^& M& A
      printf("You Lost");6 R: T! h7 {) L% i, w. ]0 V
      break;
    / K+ E! ~/ R. G4 o& E7 ~  C# S" k7 {  }+ Z/ {# l4 ~& T# H" ~
      for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/
    2 k: `3 {' x$ {4 i    if(Box.x==x&&Box.y==y)# L  y2 a, x( a, j
          {; r  l9 [  J+ F7 c! A7 S& }' l
          Box.x+=(x-tx);
    / `) w& H3 w# i  }      Box.y+=(y-ty);1 Q: o8 q( j3 G; m& q
        if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
    - \1 H! K3 c) L      {4 B, z+ y6 K/ V' t& l% o
          Box.x-=(x-tx);5 E7 c9 h! ^( `; J5 ~
          Box.y-=(y-ty);
    0 I% E9 G. H! i+ E) I  N" {      x=tx;( t" T( L# g/ l# o9 i& u- _
          y=ty;
      Z! n# ^1 R9 o      }5 ?+ ^3 d3 b0 N: o
          break;
    / M& y/ W! i0 t3 n' r      }
    . X5 V, W  h# a1 t  clrscr();
    1 N& t2 {2 z& o3 M3 x  }
    - D; j5 _  W4 J" d+ O( Y2 g, Fgetch();
    $ Y. _; {- N' T( I4 B" O}
    " U0 {1 i8 ]$ g# H6 R: {! A% O
    4 l9 S8 i1 l7 I4 w# S0 ^) V
    # X& n4 H, N+ k
    5 s3 I6 g: j5 l
    ………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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