下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的3 H$ U1 B6 r! V% D- K' w
    功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。
    1 ]. W( A, i. z0 _' h4 Y/ R" `/ P7 X: Y, h
    C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,
    8 T% n/ ?& T: ~# c6 ]PC- DOS
    - ?8 d. r; |3 P6 h: M6 ?* e3 ?. R3 J; |- O8 G( t/ z8 W; H$ A  c( S
    WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:
    4 V& @2 u6 Y0 q3 ^& _
    : ^7 p5 J. j) s- m& e# G9 l: ^. X1. C是中级语言. c6 Y9 P2 h3 ~9 `/ X# a; }
    8 v) S  G( H) O& m; `
    6 B5 H6 u) `; I. w8 i
    它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象0 S' z) ^6 Z* i

    3 i; \% E! Q) ?; d% B汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
    9 ~0 a& \4 u' L; u& `: \& A% r5 K$ U
    / Q8 S% \! h: K2 L* \( _
    2. C是结构式语言" e- m5 n" G! s6 [! H; a

    / I% P2 Z" z4 \! r; M  P3 D: l+ q5 Z. I- p* w
    结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的
    ' M! `7 Q/ K0 I% ~6 r- v% c8 F7 o4 z! m2 Z
    信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调
    " P+ p4 H% ~( k& V! ~: \8 O3 n3 j. h
    9 T$ p& `& R& \) n5 O; I) o试。C 语言是以函数形式提供给用户的,1 A# H, y5 S" X; u8 J& p
    这些函数可方便的调用,
    4 L7 T) T, {8 K: {并具有多种循' r' l! F* k8 D0 Q1 j* K2 P1 l- k

    & e  o% c; G3 T环、条件语句控制程序流向, 从而使程序完全结构化。
    + l9 H0 W  [& o  c8 L
    : t3 G  ?: @# [
    . z8 H6 M# M4 [. T0 K9 g3. C语言功能齐全8 k; N/ f! u3 ?, R" |; o% K1 b( L

      u( h" L& I; I9 ?' T( b; G: M! S; p( Y5 P
    C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另
    + s3 e8 e5 s3 A0 u1 h( Z
    , S( E$ i/ c2 X( A5 N5 xC 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑! l# f, E6 T5 B
    * ?- e: g4 U& d
    判断功能也比较强大, 可以实现决策目的。
    . A5 m0 |3 B0 s- ?3 F$ ]( D% @) g6 R- N2 u0 ^0 {9 C' N
    8 D7 E$ l2 N2 ?5 Y/ G8 b& F
    4. C语言适用范围大
    . L+ u8 o* @3 d) _4 ?) J9 L7 m  a9 `: u' O) N" @( j2 `

      Y! Q' W. D  g( x, ~# gC 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于3 S# c- H0 p( R3 }# P* @+ e0 }

    : T; u5 ]4 m6 H" O多种机型。1 U; F! c- n: p
    4 ?4 e! s* i1 W# K

    2 f$ ~+ A3 d, p; p8 O' q  @……………………………复制下面红色字段………………………………………% M- O/ y7 ^( [3 c$ X! {

    : w* `; H6 L* E
    + @5 Y) B8 L' d6 u7 z9 }9 S2 M! ^/*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */
    " f. U% w) W0 U7 `) a! C#include"stdio.h". H9 X5 L2 p( }- j
    #include"bios.h"
    * y, A- D$ a7 ~6 c( U- Y#define LEFT 75
    % M5 I9 b/ \. h  @5 @2 ]#define RIGHT 77
    2 {& Z1 t4 ]6 _2 ~* n#define UPPER 72
    + g# l, i7 R: L+ x9 D/ d$ i#define DOWN 808 V9 _6 g8 L# c6 `- @# m  A
    #define ESC 275 D6 m# {. _$ `- S: `
    struct Boxss        /*定义箱子结构体,其中包含坐标属性*/
    # B0 x" ]; k' w5 g: }3 R9 J9 ^{
    " b% M! _5 H# B- O5 f" hint x,y;
    ' A: p  h8 k+ O2 E; P( w) h};' {$ B6 t$ z! B3 n1 e
    union keyboard      /*定义读取键盘码的共用体类型*/
    ) P% t6 K% b8 ^* M7 y& h( m8 a* d{: L& }) s( d' X# J, v5 x" W
    unsigned int iKeyInfo;
    / [# l- Q9 M% \0 J# P- y) s7 n2 zchar chKeyBit[2];
    , f  ^9 Q( P; d/ {9 [4 K* R- q};
    8 {; C! R0 l6 F# w0 xint fnGetKey(void)  /*定义读取键盘码的函数*/9 U) l# h6 R8 V/ m) X! ^( y
    {
    7 R9 Q* s1 J5 C" U& B- }; Zunion keyboard uniKey1;    /*定义读取键盘码的共用体变量*/! C. k6 P. h0 {- D8 d$ c! }8 Z
    while(bioskey(1)==0);      /*检测用户是否按键*/
    4 H  y& v3 Z1 f# n( E4 B: JuniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/$ K* X  E( ]$ _1 [
    return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/& ]/ B3 X& D( A: I4 h0 L9 o
    }
      D1 l, W9 Y( w( j/ ~void main(). I' P0 j; U( }4 m7 {9 h
    {
    . x- ?% k7 K0 l0 u1 d3 Y# L/ Dint iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/
    6 S* `) o, L) }; [0 b- k9 {$ ~4 \struct Boxss Box[4];                /*定义箱子数量*/
    9 E: U3 v7 u/ s2 P* Sint chMap[10][10]={                 /*用二维数组定义地图*/
    7 U: l5 A) w7 G9 c! @                  {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/
    0 Y6 r' t# x* M* R# A" }! ?* p                  {0,1,0,0,0,0,1,1,1,0},. x( m- y, R8 n
                      {0,1,0,2,0,0,1,0,1,0},
    $ }. K" P6 y1 ~) {9 `4 w3 {                  {0,1,0,1,0,0,1,0,1,0},
    , {( z. ?2 }  T& ?! i$ }                  {0,1,1,1,0,0,1,0,1,0},
    & }+ M* X4 v# |  F/ m0 T, @3 F                  {0,1,0,0,0,0,1,0,1,0}," _; [, g+ J  a0 ?
                      {0,1,1,1,1,1,1,0,1,0},
    ) i2 U" O! }( t' d                  {0,1,0,1,0,0,0,0,2,0},# D2 s5 p4 x- j: t& j5 a+ S: H
                      {0,2,0,1,1,1,1,2,0,0},' U! f: x# k7 m5 v0 P' x
                      {0,0,0,0,0,0,0,0,0,0},( b/ V+ t; N6 |5 u, O
                      };$ }7 ~4 k/ T, r
    int i,j;1 z3 X( C/ j/ v3 G! {
    Box[0].x=13;       /*定义箱子的坐标属性*/+ v2 f, I: ?+ p/ R; D5 z
    Box[1].x=11;9 v( s, k+ q/ h) Y8 [
    Box[2].x=14;
    / M2 y- \' p0 _9 q* |Box[3].x=18;6 X* U6 L+ A, t
    Box[0].y=8;& l0 Y' m: a/ I% M7 k/ P6 P: a; I
    Box[1].y=7;0 {: M. j  C4 Y2 d8 k
    Box[2].y=13;
    8 i4 F- x+ t5 uBox[3].y=7;
    ! f0 H  h8 _* A0 M3 ]  while(1)                 /*反复进行求移动的坐标运算*/: O2 b  W7 C0 k8 T- h6 V2 ?/ ~
      {" U. C: {& g, N6 l3 e& ?. Y9 z
      for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/. W2 ]5 Z1 Q- \8 A1 Y
        {
    - c8 y3 f$ J$ b$ Y( C2 C    gotoxy(10,5+i);
    " b7 _+ u) T9 f    for(j=0;j<10;j++)
    % ?  A! k6 N* Y3 M8 O( }6 C      {
    , V5 Q) e( A/ C      if(chMap[j]==0)
    8 }4 n5 v% t& N        printf("#");/ M3 M9 e2 V' j2 H8 O8 [( L
          if(chMap[j]==1)
    - B3 o8 Z8 B1 ^+ H- c$ f        printf(" ");; H+ k0 d7 g& e) i8 @5 R
          if(chMap[j]==2)
    . H2 k3 J6 t3 p7 r7 ~. l        printf("X");" A( R# @$ h% q; O7 y* R
          }
    7 i" R! `4 e7 C7 J0 X    }. M# {0 h' ~# L( [& G, p
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/
    + r9 N0 [% ]" C( d  r  for(i=0;i<4;i++)8 l, t# r" _& }+ R' Z9 P# n
        if(chMap[Box.y-5][Box.x-10]==2)
    * ]; O, G, k1 A    j++;, W, r& V* C. V) |% p5 a
      if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/  U# W% S$ X) m2 A7 V- Y0 V7 S2 [
          {
    # I, Z- F6 |- C8 Y' t      clrscr();* y; _' D) n4 E% s- n
          printf("You Win!");# P$ J1 k" c( Q5 P0 X
          break;7 {+ v9 e* G) t8 u2 {. B8 O9 U8 j
          }
    # Y9 t* S  s- `- A7 C5 _! O  for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/
    2 m1 |( M2 g( P: C( m    {
      K# m0 _$ z: G- T, {1 ?    gotoxy(Box.x,Box.y);
    7 B1 X! K/ Y  P' U; U0 p    printf("0");- G( Q2 w* b' s3 d, R  L0 @3 W( F
        }# `$ d4 I+ a$ j2 G0 Z( U) |/ k
      gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/: g" q% z: |$ |* C- e
      printf("*\b");
    % N; v: U1 \( `- F6 w, y  tx=x;                                      /*记录本次移动前的坐标*/
    7 F- p- l9 G* P  ty=y;
    ) I: _0 F) `  t6 {  iKey=fnGetKey();$ _; e' F# u5 r$ I9 U5 a7 _4 l
      if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/: U  R4 }9 I4 D8 k% k' R) s% t( [
        x--;8 L0 R" l5 L3 h* _+ E
      if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0), e% _; }  r$ I$ v6 D8 B) N  O
        x++;
    ! R0 a6 r* \4 S  if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)7 Q& g8 K, S* f! i6 q6 T2 n
        y--;
    - j" h$ x; o; ~' Z! x+ _* w  if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)
    : K; D! Q  Y% q6 ^( k8 H- s' E    y++;                                    /*输入ESC退出并输出"YOU LOST"*/. n  n* m! T# m1 E
      if(iKey==ESC)3 A" i. }( U( ~0 @; {
      {
    0 z% J& j4 v' Y* B; e  clrscr();# F9 O( x3 X/ |# H
      printf("You Lost");
    4 C  Q) l$ \$ z; D$ P' U  break;
    & k- Z' s3 I6 u" r' J. ~/ ?6 x  }
    + K1 w: A% k, P; l  for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/2 g7 A8 x% ?( H- T0 M  w/ k  P6 d
        if(Box.x==x&&Box.y==y)8 a1 {: y. u% T
          {! o+ a( t- P$ v7 s' L" t. |$ [# q4 _; f
          Box.x+=(x-tx);0 s3 m4 V) f3 G1 E3 W
          Box.y+=(y-ty);
    8 j* [3 _4 |* Q3 Z. H: J    if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
    4 b/ ?6 O$ ?$ \+ ]) \. Q+ x" V      {
    ; _4 X$ i! t- W" a. @7 H5 }      Box.x-=(x-tx);
    9 H3 h0 }3 {, g+ |3 Q      Box.y-=(y-ty);$ J" \3 ?: N3 b: M, m
          x=tx;
    ) E' d; a1 H+ j. O8 S, F: o: }  e      y=ty;  u0 g3 ^' h; t3 y
          }* f0 f; ^- @. l7 D' ~
          break;  C5 u* W1 p$ y8 m- p' V! p5 C
          }
    & }! i! a6 j/ _9 T  |  clrscr();; z; T$ y* X; b( H& P! }% [& e
      }% m# ]+ ^" I; g1 C' |* I1 ?
    getch();
    % L9 ~- d/ G1 P4 P: E7 ~}7 V- o0 x% u$ g: N* b
    $ _3 T, w1 u8 C3 l; V# X
    6 t( ?: {- p, m( N

    0 F' [/ G9 L" h/ y' a$ {………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩 转发到微博

    本版积分规则

    关闭

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

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