下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的
    + @+ I" A: l% p% q% B' v1 V功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。
    & c+ ?# C, L1 c8 V1 I# Y* P1 l3 ~7 {4 x" n# L+ U
    C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,
    ) \# S6 B) S) x6 vPC- DOS 5 t0 u6 c/ w7 Z
    3 {1 o6 I" L3 U
    WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:
    % E) w8 j; o; @& Q$ u
    9 |2 }/ C& f: h9 J4 e; j1. C是中级语言
    / j- V) q, A1 \' ]
    - |+ ^6 ~. r1 j! Z) v2 \
    , n( j3 [- A1 R' h8 P它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    & ]" |% W3 {/ f$ s7 L$ _2 Q/ N% m1 o4 ?( P8 Y+ G
    汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。' [* P/ [; a. N' r. g

      _8 R# l! R7 @) b# `
    8 t3 r/ x8 P, ~( a% ^  H6 H! H2. C是结构式语言
    ( `8 L2 R* `( b3 K$ q& Z! x8 h% r  D, \: C7 ?& x

    ( s- q2 p( t# F9 C结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的; C& c7 w0 L. U! c" z+ z
    - F4 Y3 i4 \9 U& R: w
    信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调, o. K( g5 x2 x% M# z, G7 M' q

    ) \2 E# w* d+ C试。C 语言是以函数形式提供给用户的,
    ' O- b2 `2 X$ \. ^8 w. F) V7 X这些函数可方便的调用,# R- x( \, j3 I/ I
    并具有多种循
    4 `5 A) N# I4 l3 L8 d" @, e* S- `1 A" R  c- ^1 I
    环、条件语句控制程序流向, 从而使程序完全结构化。
    $ K* v6 ]8 v5 x3 m( A4 K
    9 E8 @' o. A) o5 c
    * A' f+ o5 l: I. y/ \4 T3 D3. C语言功能齐全
    & f, U! r4 d, S/ P% I
    , z- m9 \# g' K8 o  J* A! M
    ' S4 ^4 Q* q! d9 ?/ AC 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另+ n' \6 m1 e; c' E: Y

    ) L" ]) v6 s+ A" i1 d) BC 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑1 F7 \8 L% W9 h; Y" i6 P

    0 N* ~1 F+ _8 o" g& \判断功能也比较强大, 可以实现决策目的。
    5 M  b4 ~9 W' o. }" ?: G) d$ N  U) h6 x* S4 R) r% \
    2 K- ~) o& f+ B) {
    4. C语言适用范围大
    ( d6 E8 G: g7 R0 f+ B  f) q' H- E$ i2 U$ s3 A
    ; w5 \9 t- C% u" v9 ?% h
    C 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于3 J9 J" @' ~5 ~
    ( k# E6 Y, K; {1 c
    多种机型。6 `: h2 E; F* A* M! |; Q% |

    . t7 i' N1 V/ x6 S; _
    ( D5 Q4 i9 e% G. m  d( D……………………………复制下面红色字段………………………………………. u/ i& Q' t7 Y9 w0 R. L

    5 G  W- e) L4 @; ]& Y$ C; j& m0 V) B
    / [2 f/ E- l* q2 h/*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */
    7 W. i; c) F' b6 U* K* `+ ?#include"stdio.h", v* m. e9 b0 }& l. Y$ k. n
    #include"bios.h"4 R) K% L4 j6 M3 ^3 K4 K, L
    #define LEFT 75+ Z4 H8 t: a; I* J1 T8 f% b; v+ H
    #define RIGHT 775 h2 N' U. p3 ]1 i/ F
    #define UPPER 72. M- E1 C3 R9 n+ W, y4 s
    #define DOWN 80. K+ v& R' U8 x; ~/ J
    #define ESC 27
    3 _. o' `6 Q3 ]% F& ^9 estruct Boxss        /*定义箱子结构体,其中包含坐标属性*/0 L2 j' S; K4 Q
    {) w: w: J+ M0 ?2 s! [+ m
    int x,y;5 V3 c% I0 ]$ m4 A8 O
    };* `# ?# R8 a- {5 r, ]9 i5 A" J
    union keyboard      /*定义读取键盘码的共用体类型*/
    & g! A5 M8 n% [8 A5 |5 e{9 {& C( n% g/ d7 A1 v4 ?$ l  V
    unsigned int iKeyInfo;
    - |, Z9 {- {2 c% Z  Dchar chKeyBit[2];
    . ?( p; P; M" b  |, ^};1 ?5 x% ]7 T3 t6 C0 s
    int fnGetKey(void)  /*定义读取键盘码的函数*/
    . ^5 B' ~  D6 M1 f  N3 ?8 b9 O{  G" L) L  S6 f/ p6 x
    union keyboard uniKey1;    /*定义读取键盘码的共用体变量*/. U+ h0 W4 v% K) n
    while(bioskey(1)==0);      /*检测用户是否按键*/
    $ L( ]$ \- S! S  p' n7 LuniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/
    : r) k5 K% M0 zreturn(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/
    5 l  _1 |) W8 H' c6 @$ @}
    + a0 b! R& }" O& O! Rvoid main()
      P5 e- X0 J+ Y+ O2 ]; {{( P$ f  I6 d, @* Y( K
    int iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/
    1 j5 s* a4 f5 fstruct Boxss Box[4];                /*定义箱子数量*// b% y% {4 t. H# c% u6 c3 o
    int chMap[10][10]={                 /*用二维数组定义地图*/- X( C, J% `, r/ V
                      {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/
    1 ^9 o* {% C  }8 n: x1 w                  {0,1,0,0,0,0,1,1,1,0},2 L; a5 o( J% U- |' Q
                      {0,1,0,2,0,0,1,0,1,0},5 `1 c1 D4 \+ q, L  Z
                      {0,1,0,1,0,0,1,0,1,0},
    ( _  O3 _8 k+ g0 f                  {0,1,1,1,0,0,1,0,1,0},
    7 ]( W$ ^+ a' I5 L                  {0,1,0,0,0,0,1,0,1,0},
    4 N3 g3 ]& W' N  V                  {0,1,1,1,1,1,1,0,1,0},
    7 l/ H) _+ w$ R1 p! k% W                  {0,1,0,1,0,0,0,0,2,0},$ J5 ^8 g; g$ }3 H$ ]
                      {0,2,0,1,1,1,1,2,0,0},( S2 K. B0 \- P. c- w) w8 K
                      {0,0,0,0,0,0,0,0,0,0}," Z, D9 {% [; w% S  Y) P8 U5 Z
                      };
    " ]" m8 L. h3 L5 Yint i,j;
    # |9 P' i4 A4 o- iBox[0].x=13;       /*定义箱子的坐标属性*/* O/ i. f. n- ?" r
    Box[1].x=11;6 t0 r5 B1 g7 r- T* I' M" r
    Box[2].x=14;8 V, S6 W3 n: ~7 v9 ]0 W
    Box[3].x=18;
    - o2 B# ^; p& M; V1 eBox[0].y=8;; E9 a7 l5 i' o& d6 X2 J
    Box[1].y=7;3 }, C4 [# w8 R( V- u: Y+ w7 B1 ^( B
    Box[2].y=13;1 M0 |3 p4 M5 @( A3 G! Y- m( S; H
    Box[3].y=7;
    " I# }: A, m' q; _( B  while(1)                 /*反复进行求移动的坐标运算*/
    ) h9 o" t" O# Y  {
    8 L2 `. Q$ Q8 W. r( ~  for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/# M3 t/ b2 L7 b/ @# s/ _5 ^8 {" z
        {% t* Z& P; U1 |, U
        gotoxy(10,5+i);
    7 E; H% f( x+ y2 h    for(j=0;j<10;j++)
    + `5 n5 {) f0 R( L; t      {! K& p. L! ^& _, t) ^
          if(chMap[j]==0)  J' G1 T) s4 H! J
            printf("#");! V+ l4 e0 o, D! q" ~
          if(chMap[j]==1)' G& Y' _; Z0 r- @8 s7 G; f% Q; ]
            printf(" ");+ _9 Z! a; l2 R0 i% s
          if(chMap[j]==2)
    " x" s8 L& s4 R: H7 A+ K' v        printf("X");9 l% m6 D( S6 a
          }: ]+ m: h0 v7 v7 J0 U! M
        }, u( D  m0 J% b2 X
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/
    ; K* K! o' I; \0 J: j  for(i=0;i<4;i++)
    / N6 O& o" @% s2 z    if(chMap[Box.y-5][Box.x-10]==2)* d4 t1 I# n# P, [9 ]
        j++;9 _; M% y; @+ T9 P( |& Q/ W6 c
      if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/
    4 u+ d6 I1 P$ {+ \0 s. M      {4 F; F8 f/ ?1 |% {& Y# b
          clrscr();
    * e4 N6 i$ U% u      printf("You Win!");
    " X" O+ ~4 s' v      break;
    0 w& K# k6 J. D3 ~( S" Q      }  A: A* g' t" ~' I6 c+ Z- h; M0 l+ m
      for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/% I& G% k8 [2 {  t8 j
        {3 Z, Y5 C0 q" x$ \" x8 b* Y' j& ]
        gotoxy(Box.x,Box.y);
    $ w8 v6 M8 W  u( @+ T    printf("0");- r) ?( @/ I( W* K) {- O
        }7 z, j9 r4 V9 g" I' e
      gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/1 d& Z& E( {9 U: R0 e' r6 R1 j* ?+ Q
      printf("*\b");
    " C9 L0 _9 i# t5 Q  tx=x;                                      /*记录本次移动前的坐标*/
    6 q' X- c( |* W# `. c  ty=y;
    # K6 A* }# y" s5 R/ H% I5 F" w  iKey=fnGetKey();* K' h" P& |/ H! [
      if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/" E& a3 Y5 U& W& {8 M
        x--;
    2 y' n& c; K; ~+ D  if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
    8 D( `- |: `2 U/ \7 h8 w2 f+ N; T- N    x++;
    ( r- l( {6 |! n6 b  if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)! {6 \  `  Z! c8 \/ j4 G- v. P* S
        y--;" B+ w" F9 b" b3 e. {2 t' p. W
      if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)
    # P6 a+ E  U, \    y++;                                    /*输入ESC退出并输出"YOU LOST"*/; N$ v: ]2 D* j5 P8 r
      if(iKey==ESC)
    9 t" Q) e. K( j, j  {
    7 H2 q: K) p- i' ~1 C2 j2 \2 h  clrscr();+ o: K$ N7 R( F9 i8 g, `3 l
      printf("You Lost");5 m, I; I0 ]' J) c$ k$ d
      break;+ p1 o$ ^' R% X: E; m
      }
    ! Q# F, Z7 V9 s4 ~0 V- o  for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/
    9 U1 `8 G' g7 j5 H& b* g% C    if(Box.x==x&&Box.y==y)' |7 \3 M7 F5 [/ z& s7 O
          {) X5 i4 Y' s! v* d: v
          Box.x+=(x-tx);4 D/ E; w7 j2 i+ E$ r/ X. j
          Box.y+=(y-ty);
    : L  w. D% d" K, [/ U1 }+ P* k& h    if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
    4 p# C) i: J  Y5 k2 ]      {# w  t8 s8 H. x9 J
          Box.x-=(x-tx);, X' }2 A- U2 N& e' @0 f
          Box.y-=(y-ty);" {: k( f4 `3 H8 y( o
          x=tx;
    1 N1 W% I( u* A7 b$ b. ?      y=ty;5 W" W( n; z% |# g4 n* y8 _% K
          }
    6 u0 [  k+ e" p6 j2 p( b      break;
    7 }3 N! E: W! ]- n, @/ V6 X% b      }
    # n8 @! [  _1 Q  clrscr();
    0 {4 @0 ~. u/ }3 T  }
    5 V# w2 U' l# F4 h, s/ [getch();
      W& B8 b) g0 O6 k! M}! |! X& {$ a1 w. `( C; b  ^

    " O# p4 E4 d6 X6 `2 }, E9 V7 b

    & q7 {" M5 z6 y& h6 A  Y/ H
    ) U- B3 v: c) H8 E2 n* Q" p………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩 转发到微博

    本版积分规则

    关闭

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

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