下沙论坛

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

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的
    , Y1 F/ ]$ k9 {9 T功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。
    ; B- g. A4 J6 ~. X9 M5 h
    6 Q' W2 y2 V- x+ T9 F% f1 ]: k4 A& |  AC 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,8 x" j+ n$ ^( ^5 L
    PC- DOS
      g& D$ Q% p. _, W! Z: e" t& Y& H* O; h
    WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:
    7 o9 t7 E# p. F: Y0 k" c  o2 e7 C' w3 f) A# q7 Q1 ]
    1. C是中级语言
    " J. f, F/ ^) N1 U3 B- ~' {/ O6 D+ f1 z% W8 w( Y: A$ r

    - {4 P+ u% V0 o: ~0 a它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    % X% o4 Y  p# C* j  P, f! U" i- o6 n: a' G( k- g. f. U
    汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
    8 B! B3 _; a2 V7 ]! e+ y4 d2 S5 o7 r9 T9 t
    3 I0 J0 ]8 \/ u5 S, c
    2. C是结构式语言% _8 T" f, Z: D! b
      W( ?% x# T0 W1 x
    5 N3 c) U, h0 U- A- m8 k
    结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的2 N6 j5 [- Y! J# J
      o/ u7 Q8 q0 s/ v# h& d# f
    信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调# l2 P% G3 ~3 n9 K
    & i4 f* {! C0 I
    试。C 语言是以函数形式提供给用户的,/ }+ Q: }: c* l
    这些函数可方便的调用,  I& U9 _/ O( l/ T- M
    并具有多种循
    / {; D; R% {* w$ ?
    ' G0 K6 G+ {4 B' F: x环、条件语句控制程序流向, 从而使程序完全结构化。( W0 r# o7 m- N2 q& @! k
    ! R0 F& }/ L" P& x9 R/ T
    * K1 x; m; P7 c5 F( F
    3. C语言功能齐全- S1 ?9 U2 r! |3 `
    ( W8 F6 b# A/ }

    6 @2 d$ ^$ G4 @' u  E$ FC 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另" D2 Y( C$ ~6 c) B! b0 ~
    " A1 k' ^! I; g* R: }
    C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑6 D5 Q4 V+ o0 c
    # U, O" p1 M6 r+ H: y$ K- a
    判断功能也比较强大, 可以实现决策目的。
    " M$ t2 M0 P) F3 g/ D/ K% R3 O- Q
    5 E8 ^$ f4 x1 X5 m2 h& [
    - x( [1 m2 ^4 ^0 k6 @/ W4. C语言适用范围大0 B- m: {! g- [; L4 h* }/ u
    - K2 E  H! D; {3 t3 O6 ?( f

    ; i- k& }- |  P3 C( b: i' C" a; h- LC 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于
      o. W# [9 }+ J& }  K; _4 J6 g
    0 Y4 n, m; G- E多种机型。
    7 [# L7 x+ X( v  t4 S* J* ]: G: i( @7 [. b
    1 T2 V  f0 C# ~* [
    ……………………………复制下面红色字段………………………………………& @( b% l& N, U. {+ _  G

    7 G% s% R( @! N+ ]
    7 W9 [  S5 G, x8 i- H7 i/*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */3 I  E0 J/ k9 N" S% d
    #include"stdio.h"
    ! p+ Q+ q) Q0 J" T8 f#include"bios.h"
    9 ?5 D3 i5 a/ }& Q2 M#define LEFT 75+ x0 p/ p( U4 v" `( U- m0 D
    #define RIGHT 778 O9 K  Q6 ~3 Q2 T" w
    #define UPPER 728 f1 Y) h' }" g3 ~$ Z4 _$ F
    #define DOWN 80) d' g3 ~; [% `" Q, Y$ z2 ?' d
    #define ESC 27
    - B$ C. h: _; S$ v) W) s8 Mstruct Boxss        /*定义箱子结构体,其中包含坐标属性*/% Y7 \, k, y8 O5 v7 K
    {; w5 V; a! E5 M1 H( y1 m
    int x,y;4 N4 B" v! K! u5 u/ a% q
    };
    $ j3 r: e: `' K: r3 nunion keyboard      /*定义读取键盘码的共用体类型*/
    0 U+ ]4 B) k. W7 j" p{9 h8 u9 a$ @+ m  Q/ ~
    unsigned int iKeyInfo;3 i1 ]( y; f+ \! ?: j+ O6 m0 F; P
    char chKeyBit[2];
    1 b$ n7 H4 T1 R- H};5 @8 s+ L$ W3 ?& g8 [
    int fnGetKey(void)  /*定义读取键盘码的函数*/
    - B9 ]* a- z: p; k6 h$ D, e' @4 k, Y{
    2 s- q9 c! B- t1 kunion keyboard uniKey1;    /*定义读取键盘码的共用体变量*/
    : p) S1 x2 h- ~! `1 ]: vwhile(bioskey(1)==0);      /*检测用户是否按键*/3 [+ k5 K4 F4 E: w5 T' p" e
    uniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/9 ~1 O3 R; `) k9 g+ s
    return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/
    1 j% u* R- k) u! E+ ]. l}0 n! A, }# ?2 \% d5 c" C
    void main()4 E8 n5 Z" t4 v" e
    {
    4 w& z& T1 Y" x7 nint iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*// s& c& P3 E' W  J1 m
    struct Boxss Box[4];                /*定义箱子数量*/" w" d* T4 N) B8 t! ]; q, e! m
    int chMap[10][10]={                 /*用二维数组定义地图*/
    + B. l, O7 L8 P& }# ^( e                  {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/  e7 }0 _6 q( F9 s
                      {0,1,0,0,0,0,1,1,1,0},
    ! ^$ D2 `* o4 \$ |, _/ r                  {0,1,0,2,0,0,1,0,1,0},0 C$ W: g! x- V' c. `
                      {0,1,0,1,0,0,1,0,1,0},
    2 g) R! w  B: P( D6 f! |                  {0,1,1,1,0,0,1,0,1,0},
    . t1 a& e- I% v. K3 @' ~                  {0,1,0,0,0,0,1,0,1,0},! T! v9 H: [1 v+ q: R" B4 ?
                      {0,1,1,1,1,1,1,0,1,0},4 i, p% s9 R8 D$ ?
                      {0,1,0,1,0,0,0,0,2,0},
    , n2 r  Q/ k3 X/ K5 _                  {0,2,0,1,1,1,1,2,0,0},: M0 Z5 y* q- M) B! m7 L- T
                      {0,0,0,0,0,0,0,0,0,0},% I; g- a8 m0 [6 ~
                      };
    / E, X( I( s8 [2 q3 E6 L  sint i,j;
    : j% X5 R% {9 E3 j- v: ?Box[0].x=13;       /*定义箱子的坐标属性*/
    7 \& Y, k/ b4 |: m& r8 Y. T" c0 zBox[1].x=11;
    2 S' ]2 H# V; t. nBox[2].x=14;
    0 e# q1 O9 `6 s# u5 k3 \Box[3].x=18;. j; _: ^9 G8 o" e: O! i' M
    Box[0].y=8;5 Q0 E# }" y! p: i* @0 z2 |
    Box[1].y=7;
    : @- U) M1 ]3 G: R! F/ x# bBox[2].y=13;
    6 F, ]+ M; Y" |2 d7 hBox[3].y=7;
    6 u; r% j. S5 `& r/ s$ o1 r4 d  while(1)                 /*反复进行求移动的坐标运算*/! v4 F& I( I" P% X; d! ]8 C
      {0 B9 b4 F' J- }2 ?
      for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/
    ; \) V  B% X# Q7 [* {' {% c( M    {9 e" d- v. b; A
        gotoxy(10,5+i);
    , i6 Q9 A9 ~6 w$ |    for(j=0;j<10;j++)
    7 ?. b' q5 b( e' R1 V4 u; [1 @/ g- }      {" e( s% _* N8 m; P; ^+ [) j
          if(chMap[j]==0)
    * I9 r6 \; Z* S2 T        printf("#");
    , o1 m2 V7 \/ V8 ^: R9 K9 s      if(chMap[j]==1)) b! c) A8 D2 S, ~" X& q7 ]
            printf(" ");
    ' Q" h3 D+ _! |      if(chMap[j]==2)
    ; [0 T" m( i( V; P, O8 F! y  {! W        printf("X");
    * g: f0 K0 c, J9 ~( Q4 W+ L- _/ ?9 j      }
    9 Q( L" P, R0 ]9 B5 x    }
    : y; p9 C5 w- K% E  @  j=0;                                       /*判断是否所有箱子都在目标坐标上*/
    6 P7 s) M# I5 x8 z+ @  for(i=0;i<4;i++)' p  `2 O+ a1 e: m& R- I  j. P
        if(chMap[Box.y-5][Box.x-10]==2)& g1 _- ?' `1 e& ~  K% Y$ n" k
        j++;
    6 F; ?, j: J! z& J  if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/4 ^0 J' L: D* k) \
          {0 ]0 a  K" y4 b
          clrscr();* X0 ]! ^$ A6 r8 X1 O; o5 T  b+ C
          printf("You Win!");
    ! _; T" G1 {' u% e8 u9 q      break;9 }7 Y( B  D' `9 f6 J9 [
          }
    : m) i; m1 O  ?  F) u, y; J  for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/
    / j9 H  u$ Z9 ?8 f1 l3 {    {2 n4 c4 Q: X: r8 o4 h$ w4 W/ ]
        gotoxy(Box.x,Box.y);
    3 ]4 N7 l2 N7 U* t    printf("0");' M& o" H% k5 u9 G5 N
        }
    # S. ?' i4 [& y% d2 z  gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/
    - A6 {& q' Z2 J3 ~2 ^  printf("*\b");# ]) c8 @9 g( b$ a# l# Q
      tx=x;                                      /*记录本次移动前的坐标*// k! C* n8 z& O* z& {$ O" J
      ty=y;8 I) O# b) J! Q9 _3 f
      iKey=fnGetKey();
    1 K; J6 r. K6 ^3 c: ^  if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/% L! F! u" ]* }7 w0 C
        x--;
    / H4 e' W) l! U, ^$ H  if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
    * s& l/ v7 C: ?9 k+ A% n    x++;
    5 r2 g- h/ e& Y* V, l  if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)/ V( w5 t" \3 t5 C+ A
        y--;% N3 \% m$ `% X/ O7 T5 n+ J
      if(iKey==DOWN&&chMap[y+1-5][x-10]!=0); A' ~* v4 M; L4 v9 B' a  I  I. J  l
        y++;                                    /*输入ESC退出并输出"YOU LOST"*/
    + j7 f/ }! S6 E0 l  if(iKey==ESC)3 J1 r* @' s5 G% A1 E. J; _
      {
    3 R1 M0 R" ?" b7 j3 ^. H  clrscr();2 W, h) \; |7 ?7 g# s% J( T3 ]
      printf("You Lost");5 q! K9 a+ s* I: Z( Y" ~/ U
      break;# j. i+ ~( `- s/ M4 y
      }. T" T9 t# S; i$ ]- J
      for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/
    % U- a, Q1 N1 D$ z) k, l0 T    if(Box.x==x&&Box.y==y)
      g; w; ?1 m5 u4 P      {7 w# M8 V" F' `3 U
          Box.x+=(x-tx);
    * D* ~3 j5 P) d3 k9 [- ~0 O1 L8 [* \      Box.y+=(y-ty);
    9 F7 \. r: T/ H    if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
    ) T9 }7 Z0 }: n1 |( S      {6 H5 T$ `5 Z, i' {7 O3 c! Z" c
          Box.x-=(x-tx);
    8 s6 w: A$ c  o, [      Box.y-=(y-ty);9 O8 f( n# ^' E) C% {! @6 X
          x=tx;
    7 ?  T* s+ Z2 O0 e0 M) H# S5 u1 f      y=ty;7 ]2 J; _9 C/ h8 A- z- }
          }9 d0 A+ n, P  o( r* a  b4 K. _4 P
          break;- X% K0 \: ~$ ^# n* ]
          }
    . y( A. S5 b) |3 o  clrscr();
    8 @8 S8 X2 q4 i3 R  }
    * b5 ]: \3 l- j6 F, r# Sgetch();
    : {! y8 l5 n, d8 x# d4 H$ m4 x# L}
    - J/ D& S6 a3 e# Z( m/ G5 f
    " z) B; D' f+ D$ s9 e, X( ?" I

    ) \8 t; u3 b& U# P 3 O. q4 M2 J5 R2 E* o; T) b8 I
    ………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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