下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的  Y$ R: r  ~4 r
    功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。5 X# G% j6 t/ K0 l& z

    + _( q. Y1 C, S) K, [+ S9 dC 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,
    , y# @1 R7 X6 d( D8 {PC- DOS . Q% N6 m0 R1 \% H4 X5 M. U% I+ x
    6 m$ a, E' F5 \0 }
    WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:
    % G5 j7 q: X" z- q0 R
    . U. C* _' C" c. C6 I0 c1. C是中级语言
      ?8 A5 _0 H0 y8 `8 t( e  e6 J' _) `0 z( O8 E! R
    0 B: t* b2 F9 ?! B1 w0 l( C5 l
    它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    1 o4 B: X& X. v( d; Y
    1 q8 n/ S' H* h! [% V% S汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
    % W2 u# L! \% N% s! V4 }3 B  E1 p. v+ k# m1 o8 o0 m! x5 }
    5 e& O+ X8 Z8 N4 S! g4 V  K
    2. C是结构式语言& y) r4 ?* H" k. i( f: ?
    9 _3 [, D% ]0 `) a

    ! p! u$ s) A& L" {+ [) C/ h: g9 K结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的
    - `- a; |# \, l3 G$ }
    ) d8 ^$ V* u! D& ]信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调0 Y. G3 n3 L' C# R
    , E5 k& r: P( {% w
    试。C 语言是以函数形式提供给用户的,3 m* c1 I" {, C# R1 W
    这些函数可方便的调用,
    $ G2 z2 ^+ W$ O9 u4 B5 u" t, p0 a# [并具有多种循
    ) Y9 N$ I9 Z8 Q' W3 K# Q/ y5 J: R7 z' A, ^, g: ~" @' \
    环、条件语句控制程序流向, 从而使程序完全结构化。3 ]0 g/ K. e+ t' A. e

    $ k: b7 D: C; b% |5 a/ z& i* Y0 o, K7 y/ M. H* Q) {3 j
    3. C语言功能齐全
    7 ]" r$ q; r) e% S) z. Z) l. G0 m+ b$ C" d' z: h6 y" e, Z

    ) B: V8 g: w  Z2 h/ _2 K9 nC 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另; R- Q3 W% }: A" i0 O' ]" g

    5 @1 T- e' {8 l) a. N3 v4 IC 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑
      G) v3 e- [9 G- C; X% Y
    ) A' h& N8 b2 i8 h判断功能也比较强大, 可以实现决策目的。( z, h9 o9 m$ Z) R/ d! P0 R

    ! F6 ?8 A7 V& L. e1 B. R# U
    3 m' ?* K* S, x4. C语言适用范围大
    4 ]$ ^9 `7 B. y
    9 r8 Y* j( g; ~" P  T. F: c2 M& z* b; i
    C 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于8 B3 @8 o9 z( H2 L' Z* Z
    ; A- E( N. u+ b+ |. X$ W! k
    多种机型。' Y, ~- Z  y+ m

    * v/ L; H9 T' q) i8 S, a 0 a* q; O9 O6 `/ F+ r6 Q
    ……………………………复制下面红色字段………………………………………+ h, s: I4 j0 x& T& k7 x
    ; H" U, @4 G! x
    2 \4 g) R; S3 h4 E, J% }; u
    /*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */) s' e* R4 ]/ t* T$ s! @
    #include"stdio.h"
    & A; E% u- `# U#include"bios.h"! ^! q) ]' d2 V6 E
    #define LEFT 754 v7 M' b& L' t! k7 ]
    #define RIGHT 77
    7 Q4 W" w* }4 G$ j4 q#define UPPER 72+ e  H( s/ o  o, B  o
    #define DOWN 80, V" E$ z0 B# R
    #define ESC 27: f+ h5 A; |4 A% o# R
    struct Boxss        /*定义箱子结构体,其中包含坐标属性*/
    8 g. Y/ K% s% q4 h2 u# b% e6 X{- u# m' b! k* s: L' I3 f1 B
    int x,y;
    7 O! h" G5 _0 N9 ~5 ~};
    4 {9 b8 P* N1 s5 h: Hunion keyboard      /*定义读取键盘码的共用体类型*/
    & S2 Q1 l' K9 ]. U, w; ]! S# E{, g& v1 H1 ^( o; |
    unsigned int iKeyInfo;
    - ?$ ^$ a  K& Fchar chKeyBit[2];2 K3 Y( D7 T( `" t. F4 ~, S. p
    };9 O) y7 T0 D0 k( K6 A( e5 E2 ]
    int fnGetKey(void)  /*定义读取键盘码的函数*/* A4 j; ?$ @: n# ]
    {
    ( j& l2 Z" y$ v- X+ K4 q# yunion keyboard uniKey1;    /*定义读取键盘码的共用体变量*/
    1 Q% A  v' x; r0 P5 swhile(bioskey(1)==0);      /*检测用户是否按键*/
    . n! O2 b& M( kuniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/1 |, I0 r/ _6 v
    return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/
    6 l4 h! H8 i/ M; |! t" P}9 Q/ k( J: |, e5 ^
    void main()
    7 R* q8 P0 y* c6 l9 q{
    # r7 w; [. n2 S- J/ G3 {/ yint iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/
    2 s1 A  u- J; F  [; Q' O7 Sstruct Boxss Box[4];                /*定义箱子数量*/+ \; a6 b: K# c2 ^! M
    int chMap[10][10]={                 /*用二维数组定义地图*/: n; r9 a# v: V3 A
                      {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/
    8 X- }& u) y1 I# T6 o( F                  {0,1,0,0,0,0,1,1,1,0},3 Y9 }/ v, }! w) B4 `
                      {0,1,0,2,0,0,1,0,1,0},5 R! x7 }1 x& t5 E2 V
                      {0,1,0,1,0,0,1,0,1,0},9 \" x0 o# Z7 T4 s
                      {0,1,1,1,0,0,1,0,1,0},( }# l* J4 w+ G/ U
                      {0,1,0,0,0,0,1,0,1,0},4 O+ J5 f3 q& o$ f$ T
                      {0,1,1,1,1,1,1,0,1,0},
    * _) p1 e2 q8 I" c                  {0,1,0,1,0,0,0,0,2,0},+ d1 ~% X+ }, A: p
                      {0,2,0,1,1,1,1,2,0,0},/ t% s  d9 q* f9 m$ }/ U  E; G
                      {0,0,0,0,0,0,0,0,0,0},
    3 `9 o, {- J9 r$ e) z2 Z                  };
    : ^+ s* e3 i; h7 Mint i,j;
    % W( [) c- g$ NBox[0].x=13;       /*定义箱子的坐标属性*/
    ( b& U( Q  Z! E, y1 HBox[1].x=11;0 M" B( D9 g# E/ W
    Box[2].x=14;
    $ Q& ~: Z2 ]$ L& {" v* IBox[3].x=18;
    1 S1 N6 p% I) }5 OBox[0].y=8;6 V2 W4 D9 Q- q* |# Y6 ?7 S3 H1 Y
    Box[1].y=7;3 S" `7 N$ O2 }# \) Y4 b% t
    Box[2].y=13;5 O2 ?; {: y1 p0 _( V, d
    Box[3].y=7;
    : E. n& {, l# A0 ?$ f; P$ i( q4 q  while(1)                 /*反复进行求移动的坐标运算*/
    * }0 v8 e5 `+ j" c  {
    ' b( E6 G- b: B" C/ C5 {0 n  for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/3 D% T9 y, J% v2 z. n  ~
        {6 w, O$ j2 q  u9 z8 L
        gotoxy(10,5+i);: b& r1 A0 ~) e6 f+ o% o0 R
        for(j=0;j<10;j++)
    8 Z& }, @; h# C: b6 b- ~3 j2 S      {
    + L$ d+ m; ]% a, t      if(chMap[j]==0)
    / j5 Z& q/ g  D        printf("#");8 H5 ?4 w& W% N% I, W' a
          if(chMap[j]==1)) E$ F5 n1 D, R1 R$ A. g
            printf(" ");
    ) X4 T- Z* f2 ^) k0 C, ?      if(chMap[j]==2)  e$ }) Z. D% V+ @; Y- \
            printf("X");0 w# S9 l* r- o- G# M
          }% ?, k4 [- V1 H) G9 U
        }3 V/ g, r( j% I3 z
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/" m' c& l2 p4 ^* O: x: R; A
      for(i=0;i<4;i++)7 \7 t0 y7 u# E7 v5 _# ]3 q
        if(chMap[Box.y-5][Box.x-10]==2)
    & x: i; w$ K9 y: E) t" ]    j++;5 G  z) W  s/ o) z) d
      if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/; |. w- O) u0 }# a
          {
    9 U, L: o6 B1 R  K0 L, V      clrscr();
    - h  p0 E: N% G7 x7 o. h1 E6 _      printf("You Win!");' R1 a4 g# H9 E: c; x" \
          break;
    - W2 ~2 E" j. C/ P      }
    # S0 w1 k. w0 ?- D3 g( u* U  for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/9 T+ j7 K" b4 c# J8 m% R
        {
    1 ^' ~9 e4 d6 ^9 L* B' l, T0 Y& I    gotoxy(Box.x,Box.y);% Z! ^( p* G0 E1 w/ E
        printf("0");
    6 r( n! H# p% W, }    }
    8 u. y* u. C# S  gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/8 A5 T5 j* o. v5 S6 A" r
      printf("*\b");
    4 g5 N+ B$ s  B/ z% q  tx=x;                                      /*记录本次移动前的坐标*/
    0 i7 i. I! B+ I! d/ N; Q  ty=y;
    8 }/ i, c  V7 }  iKey=fnGetKey();! E+ w8 ]# c( T" M& _& ^
      if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/& d" N. \$ q3 ^* Q
        x--;) }2 ], y- ~5 X
      if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
    1 _* q8 J( a% L1 |    x++;9 V) Q  B- G1 x7 q- s' ?/ Z$ j
      if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)
    ) {% ]: K8 j* w3 T* ^    y--;
    9 B. ~5 L5 s; A' m+ q  if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)6 S- t3 I7 ~& c( T2 B1 O/ u5 Y
        y++;                                    /*输入ESC退出并输出"YOU LOST"*/
    . l9 O; F; l! h: m  if(iKey==ESC)
    8 [4 @/ l2 j) M+ A' V  {
    $ v: G' E$ r) H  \, E! m  \  clrscr();
    - j- L6 }  z+ |2 ~: I3 o  printf("You Lost");
    3 Z7 N( b" G" F6 I  break;* Q& k: E7 x; C5 i9 C, x
      }0 ~3 G5 a$ q- }: U
      for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/5 b  A3 ^3 z/ `" c2 F- T5 ]
        if(Box.x==x&&Box.y==y)
    " y+ ^  l% [& _& G' R      {: b! a( S6 D& w2 d
          Box.x+=(x-tx);
    ! i$ t5 V- b3 j' E* K0 U      Box.y+=(y-ty);* t: [! g. k7 Z7 i- `* w4 t
        if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
    1 C# P) Y; B7 z; e0 P/ F( z      {
    & ~% R( a& @8 a1 ?( S      Box.x-=(x-tx);) X8 T, g. Q5 N8 k7 `) G% h
          Box.y-=(y-ty);
    $ w: Y4 y, d0 D( B' B. K$ |1 ?& u      x=tx;
    0 ^- Y% m$ s, f: n      y=ty;1 x, W* V. y2 o$ @8 T" \# I: u
          }. G! A% w. z- k5 H
          break;: W+ D( k  o6 |+ A% J1 ]5 Q
          }
    1 g- U) L1 Z+ ?6 b( o  clrscr();  l. C, |/ g8 c& E3 z; Q
      }0 z$ s7 f) G: A" {0 ~9 q# J2 d9 \( {
    getch();3 F1 u- P% `* E
    }
    ' `9 j3 R" D0 ]$ f

    ) Q  ?. o4 l- ]4 |: S% J

    , C* D2 V8 c1 T- k7 m! U4 y& n / y) j7 \( V9 r  k4 a, \
    ………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩 转发到微博

    本版积分规则

    关闭

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

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