下沙论坛

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

QQ登录

QQ登录

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

C 语言的特点

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

    [LV.1]初来乍到

    跳转到指定楼层
    1
    发表于 2009-4-1 09:13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的1 f: F+ g8 S8 r
    功能。许多著名的系统软件, DBASE PLUSDBASE 都是由C 语言编写的。: d; e( t" J! F6 h
    ! r9 h6 X" `0 i
    C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,) D7 r) Z+ @8 e; Q- ~* a( r, ~
    PC- DOS
    9 t1 |) _5 W# |, M
    8 h  Z& U! U" rWORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:
    # q+ M: J' g% `- F. _8 U! H9 Q" e' T2 `6 u
    1. C是中级语言
    4 n6 y. q1 ~# I% C# V+ ]! Q  _
    , S+ ^& {; j) O9 _- R
    , H1 u$ v3 x7 D* @; S7 O- Q- h它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象
    0 W# V5 ~% v  E- y$ L
    9 V* f. V* d9 \2 ^' }; ]汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
    # D% G/ F9 c+ v6 I( N/ _9 K$ F1 h* v; [
      n% Q% H( P' c
    6 L: u. d' g( B" z1 f+ t8 [1 k2. C是结构式语言" Y! w1 E$ ?/ c! p) H
    / X" V- u2 ?7 M3 E1 H0 G* d" s0 }
    5 {0 ^( M7 Z, R- y
    结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的
    . d: Y, k: s) e. v7 t0 ~" r) O! |2 y. ^' O
    信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调( \& F1 ^/ K1 \* z9 z
    9 e( v" I$ U9 D
    试。C 语言是以函数形式提供给用户的,6 w8 D7 i0 |- A0 W) i, _* ]$ @
    这些函数可方便的调用,; s2 |3 r. a+ l0 w4 ^0 ^
    并具有多种循
    : C! |8 |8 [: z' K3 B: U8 b5 F
    5 U5 J' j, s7 Y$ I! J7 I1 a环、条件语句控制程序流向, 从而使程序完全结构化。
    " J& ]  l2 _# I. e$ {! f+ w! C( ~. b( Y8 n

    1 H# h' T- W0 g3. C语言功能齐全
    ( y. W6 y/ o# i% A- y* Q9 S1 T8 G0 A

    " f8 ~9 B+ b/ B7 ~8 p% w3 u  kC 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另
      t- i- K* u! b2 c" p5 A7 t( l, a# D  D6 s$ I' ]# D
    C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑7 p5 u' Q$ a6 w6 f; i
    8 f6 B( a3 a% ]& j1 D  T! a
    判断功能也比较强大, 可以实现决策目的。
    2 h; X. ]2 p- X& Q: @$ C. e7 v- n, n$ b* B0 [; E' F
    7 T# _; ?/ \' R' }! N# K
    4. C语言适用范围大; w2 S$ E; |2 E# u6 O6 e5 a0 ~. R

    . s3 \# `/ P& R' C! g; N' |  c* A
    : Z6 g% e; U$ ?& G9 X, N  |C 语言还有一个突出的优点就是适合于多种操作系统, DOSUNIX,也适用于
    8 S( \+ t) L! `% \1 p3 }0 K/ Z* M: i
    ) s) g" g& C6 L( E1 W% R( y多种机型。
    2 T9 r  K3 I, @# c. s# }! g! L
    6 d7 w, C5 T: X+ K. y6 E
    , i2 @+ h2 Z( Q/ G- T……………………………复制下面红色字段………………………………………
    9 f' c5 v- y/ b7 B
    4 f) B% Z1 Q( D
    7 Y# c  v. n1 v/*  这是简单的推箱子游戏,大家试试玩,谁有更好的Idea?     */; W# Y  m/ R4 X
    #include"stdio.h"  S/ ~2 g% a: \5 a; F, W3 G
    #include"bios.h"
    ! Q/ N9 M: B1 r0 l7 e#define LEFT 75
    : B; i9 G9 c1 I0 W% E#define RIGHT 77
    6 q0 P- g; U6 W+ M7 F6 p( L#define UPPER 72) r$ o9 a! F) A8 J
    #define DOWN 80, K& J; t* Z/ H3 S1 F8 y4 \
    #define ESC 27
    / _( o: C% l% n+ Astruct Boxss        /*定义箱子结构体,其中包含坐标属性*/( j: M' g* B+ ^, ~; G* T
    {
    9 L2 C' ?% w1 B; U% Yint x,y;
    % X( O  b- Q4 `2 m8 v};7 N9 l' m9 y; C  I$ C* f- Q
    union keyboard      /*定义读取键盘码的共用体类型*/9 A- {6 i- x) Z  }) l# ?
    {
    6 W" b/ `8 U6 P3 O5 Munsigned int iKeyInfo;) w/ O( v1 C( E; H; |0 Q- }. ^
    char chKeyBit[2];
    2 r! M# |: `% |! k};  g' R& Q# M/ m/ f. P
    int fnGetKey(void)  /*定义读取键盘码的函数*/) s- k# t. K: t0 f/ N$ Z& j1 ]' C
    {
    7 M) p" _5 i1 Aunion keyboard uniKey1;    /*定义读取键盘码的共用体变量*/
    2 l" \/ L0 C& |4 }' S8 {, Mwhile(bioskey(1)==0);      /*检测用户是否按键*/% E9 W- v- p$ M5 O$ Y# ]
    uniKey1.iKeyInfo=bioskey(0);           /*读取按键信息*/
    + f  M7 C9 h! ~1 d2 rreturn(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);  /*返回ASCII码或扩充码*/1 d6 ?  I: C) i3 B: U" g
    }
    2 x0 I  X) s- {  Z3 q& Y  y9 @void main()1 X* l- [2 B" [* k/ Y3 o' D
    {
    . ^' S! }5 f# w5 j5 k+ M# ~" i  Uint iKey,x=11,y=6,tx=11,ty=6;       /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/
    8 T+ }5 _) j' J+ Zstruct Boxss Box[4];                /*定义箱子数量*/
    ' c0 g0 y% k* E3 z7 h$ j  H+ o" Yint chMap[10][10]={                 /*用二维数组定义地图*// }( _% u/ }* V' _' C
                      {0,0,0,0,0,0,0,0,0,0},          /*0表示墙1表示路2表示目标*/
    3 h( Y  H5 ~9 j7 C, {                  {0,1,0,0,0,0,1,1,1,0},
    ; ^8 n$ V  O* j9 t! T7 w" K: f                  {0,1,0,2,0,0,1,0,1,0},
    4 k4 ^3 h. O0 R- P                  {0,1,0,1,0,0,1,0,1,0},
    . h) c# A* Z* r3 X                  {0,1,1,1,0,0,1,0,1,0},: _/ v" ~- E8 P, F
                      {0,1,0,0,0,0,1,0,1,0},! G9 |1 d* M) Y1 W0 }
                      {0,1,1,1,1,1,1,0,1,0},
    # H, j1 k& c7 N0 t: N8 m                  {0,1,0,1,0,0,0,0,2,0},# p( v/ {( D) a  y% i1 Z
                      {0,2,0,1,1,1,1,2,0,0},* y- ]0 r4 q7 v0 q: s5 G# u
                      {0,0,0,0,0,0,0,0,0,0},0 Q' _+ M: z: L, ~# K
                      };9 ]; k5 h7 t0 Z
    int i,j;
    + q4 j$ L" G/ S" l9 cBox[0].x=13;       /*定义箱子的坐标属性*/
    5 E2 j; Z" ?' d: `1 a' BBox[1].x=11;  S: J* Y+ v0 G2 \1 S) H6 ?
    Box[2].x=14;& k- A3 Y; r! i# t0 {. l% z  f5 O
    Box[3].x=18;
    # X% r/ Z$ W* n& jBox[0].y=8;
    " S) X$ ^  L$ s- _1 PBox[1].y=7;- I( v' d9 J$ H2 @. E
    Box[2].y=13;
    3 w$ q5 |  e8 fBox[3].y=7;
    8 ^2 T  S& w% [/ s1 C7 G( j  while(1)                 /*反复进行求移动的坐标运算*/
    1 Z8 w" ]6 h3 \. E  {3 U. m- v$ e0 {" O# P6 w; _
      for(i=0;i<10;i++)       /*输出新地图(刷新地图)*/' l9 k: T& E6 `, w, o0 g4 X
        {
    - a3 f* A/ k6 Q" s' n    gotoxy(10,5+i);
    ( ^" _* B3 L6 R, D, _3 k    for(j=0;j<10;j++)
    ) J5 r" {* c9 O      {6 T& O9 a' N# T) _0 f" r
          if(chMap[j]==0)$ p6 A1 k) Q4 p. ~# R
            printf("#");
      o& r# y" S3 k) h) d      if(chMap[j]==1)
    * j& u  _7 M* o% [  ^6 V7 u        printf(" ");( T2 L: ~" A  |/ r: H* u( v$ y% |
          if(chMap[j]==2)
      c8 Z, X- `+ N* O        printf("X");/ U# a* \9 Q. N6 B
          }
    + s6 J* M& I6 I: G: r/ c9 t. I* W    }* T5 k7 T6 I" d9 K
      j=0;                                       /*判断是否所有箱子都在目标坐标上*/8 q1 P9 i9 `( X+ S
      for(i=0;i<4;i++)
    % Q1 u. z  a1 ]    if(chMap[Box.y-5][Box.x-10]==2); _+ H0 Z2 M, L& S
        j++;
    2 ?1 L, o# o$ Y- X  f) b  if(j==4)                                   /*如果所有箱子都就位输出"YOU WIN!"退出*/
    9 |4 [8 u% G( T6 V      {5 r$ W4 u/ x2 R* Q* C
          clrscr();3 ~8 k# F0 F' V- j3 `
          printf("You Win!");
    7 ]: X9 T+ Z& N; b- B$ E; [1 g      break;6 R% W5 b& {. W. x6 j% k
          }. Y6 z7 Z3 h& l: W
      for(i=0;i<4;i++)                           /*在起始(或移动后)的坐标输出箱子*/
    ! y3 |5 T: \! |+ ]- Z- H    {
    3 u) H: d# ~) F2 n+ H$ u    gotoxy(Box.x,Box.y);
    / g' }# E' I6 |    printf("0");" M9 e( s% ?6 e$ T
        }
    , T6 R& q6 e' Q" B( z# X; i  gotoxy(x,y);                               /*在起始(或移动后)的坐标输出人*/
    : x% `# d4 u! v  printf("*\b");
    : t7 E! c+ X* ^* m  tx=x;                                      /*记录本次移动前的坐标*/
    ; y- u+ v0 Y* P1 c  ty=y;1 w) q3 R, q% W1 S3 r  n7 B
      iKey=fnGetKey();' G! D' c; g  B  C2 \, Y) Q8 r8 b
      if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)      /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/
    . F: p! a* n& Y/ L! }    x--;
    ( @/ \' U' I% i4 }  if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
    * O* h7 t* q( b; S5 ~    x++;# P$ w; `3 R. D4 \: [4 b/ y
      if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)
    * ?- j' T  {+ l5 l# c    y--;  v  J: [! A8 t% w% P1 m, @) _1 p
      if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)! B2 D* K2 c5 C
        y++;                                    /*输入ESC退出并输出"YOU LOST"*/
    3 a( x$ w0 b9 G" a  w  if(iKey==ESC)
      H  J& H! z+ A  E$ W2 T) P0 N9 k  {
    $ l# _1 U3 q% S, J9 L! {, f  clrscr();5 \$ I  o& d2 o* H
      printf("You Lost");3 s1 z+ u& ]% K% Q- R# v9 s: U2 x
      break;
    / U* B1 Z2 n9 _  }
    : }6 I# w. X- @  for(i=0;i<4;i++)                          /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/
    ' E" a4 d2 s9 z3 Z+ a  P0 R    if(Box.x==x&&Box.y==y)
    7 \9 G: f9 O2 R# \! q* f6 A# a      {/ S0 P7 d% r5 t; L6 |
          Box.x+=(x-tx);
    ( p# ^) r- i6 t0 X      Box.y+=(y-ty);
    6 B$ M( Q/ r0 R/ H: K$ ?    if(chMap[Box.y-5][Box.x-10]==0)   /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
    ; P' W, z  `0 ]* G0 @      {
    # Y- T+ {7 I# f6 ?' H/ q      Box.x-=(x-tx);, V- q* F  d5 C8 N$ C: Y* \3 V/ E% J9 q8 g
          Box.y-=(y-ty);
    3 m; }2 |8 A* Q      x=tx;; y* ~. k7 K( H0 e& W# O+ R# m
          y=ty;
    & j+ M, d2 u6 ?0 j8 p% \: |      }
    1 f. y( w3 ~1 w      break;5 {0 [3 W8 ^5 X' Z
          }1 S; i4 R3 T# u
      clrscr();
    % f0 {0 R8 [% W2 l  }
    / I, Z& B+ [( q# U& q* Z1 ygetch();
    1 t! H, I! Y  ~3 D4 v}  d/ B5 q3 Y0 {  B  W  ~

    , p6 |6 h& w0 E/ v
    - C/ C/ m/ v* m% V

    2 |' U0 \8 _3 Y2 `5 k3 U$ L………………………END(复制上面的红色字段)…………………………………………………
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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