久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      二維數(shù)組

      5.2.1 二維數(shù)組的一般形式
      C語言允許使用多維數(shù)組,最簡單的多維數(shù)組是二維數(shù)組。實際上,二維數(shù)組是以一維數(shù)組為元素構(gòu)成的數(shù)組,要將d說明成大小為(1 0,2 0)的二維整型數(shù)組,可以寫成:
      int d[10][20]
      請留心上面的說明語句, C不像其它大多數(shù)計算機語言那樣使用逗號區(qū)分下標(biāo),而是用方
      括號將各維下標(biāo)括起,并且,數(shù)組的二維下標(biāo)均從0計算。
      與此相似,要存取數(shù)組d中下標(biāo)為( 3,5)的元素可以寫成:
      d [ 3 ] [ 5 ]
      在例5 – 3中,整數(shù)1到1 2被裝入一個二維數(shù)組。
      [例5 – 3 ]
      main ( )
      {
      int t,i,n u m [ 3 ] [ 4 ]
      for (t=0; t<3; ++t)
      for (i=0;i<4;++i)
      n u m [ t ] [ i ] = ( t * 4 ) + i + 1 ;
      }
      在此例中, n u m [ 0 ] [ 0 ]的值為1,n u m [ 0 ] [ 2 ]的值為3, . . . . . .,n u m [ 2 ] [ 3 ]的值為1 2??梢詫?br /> 該數(shù)組想象為如下表格:
      二維數(shù)組
      二維數(shù)組以行—列矩陣的形式存儲。第一個下標(biāo)代表行,第二個下標(biāo)代表列,這意味著
      按照在內(nèi)存中的實際存儲順序訪問數(shù)組元素時,右邊的下標(biāo)比左邊的下標(biāo)的變化快一些。圖
      5 – 2是一個二維數(shù)組在內(nèi)存中的情形,實際上,第一下標(biāo)可以認為是行的指針。
      記住,一旦數(shù)組被證明,所有的數(shù)組元素都將分配相應(yīng)的存儲空間。對于二維數(shù)組可用
      下列公式計算所需的內(nèi)存字節(jié)數(shù):
      行數(shù)×列數(shù)×類型字節(jié)數(shù)=總字節(jié)數(shù)
      因而,假定為雙字節(jié)整型,大小為( 1 0,5)的整型數(shù)組將需要:1 0×5×2=100 字節(jié)
      當(dāng)二維數(shù)組用作函數(shù)的參數(shù)時,實際上傳遞的是第一個元素(如[ 0 ] [ 0 ])的指針。不過該
      函數(shù)至少得定義第二維的長度,這是因為C編譯程序若要使得對數(shù)組的檢索正確無誤,就需要
      知道每一行的長度。例如,將要接收大小為( 1 0,1 0)的二維數(shù)組的函數(shù),可以說明如下:
      func1 (x)
      int x[ ][10]
      {
      .
      .
      .
      }
      二維數(shù)組
      第一維的長度也可指明,但沒有必要。
      C編譯程序?qū)瘮?shù)中的如下語句:
      X [ 2 ] [ 4 ]
      處理時,需要知道二維的長度。若行長度沒定義,那么它就不可能知道第三行從哪兒開
      始。
      [例5-4] 用一個二維數(shù)組存放某一教師任教的各班學(xué)生的分數(shù)。假定教師有三個班,每班
      最多有三十名學(xué)生。注意各函數(shù)存取數(shù)組的方法。
      #define classes 3
      #define grades 30
      #include <stdio.h>
      main( )
      {
      void enter_grades();
      void disp_grades( );
      int get_grade( );
      int a[classes] [grades];定/*義二維數(shù)組,每行存放一個班學(xué)生成績*/
      char ch;
      for( ; ??
      {
      do { /*菜單顯示* /
      printf(“(E)nter gradesn”);
      printf(“(R)eport gradesn”);
      p r i n t f ( ” ( Q ) u i t n ” ) ;
      ch=toupper(getchar()); /將*鍵盤輸入字符轉(zhuǎn)換為大寫*/
      } while(ch!=’E’ && ch!=’R’ && ch!=’Q’);
      switch(ch)
      {
      case ‘E’:
      enter_grades( );
      b r e a k ;
      case ‘R’:
      d i s p _ g r a d e s ( g r a d e ) ;
      b r e a k ;
      case ‘Q’:
      e x i t ( 0 ) ;
      }
      }
      }
      void enter_grades(a)
      int a[][grades];
      {
      int t, i;
      for (t=0;t<classes;t++)
      {
      printf (” class #%d:n”,t+1);
      for (i=0; i<grades; i++)
      a [ t ] [ i ] = g e t _ g r a d e ( i ) ;
      }
      }
      int get_grades(num)
      int num;
      {
      char s[80];
      printf(“enter grade for student # %d:,nn”u m + 1 ) ;
      g e t s ( s ) ;/ *輸入成績* /
      r e t u r n ( a t o i ( s ) ) ;
      }
      void disp_grades(g) /*顯示學(xué)生成績* /
      int g[ ][grades];
      {
      int t,i ;
      for(t=0; t<classes; ++t) {
      printf(“class # %d:n,”t+ 1 ) ;
      f o r ( i = 0 ; i < g r a d e s ; + + i )
      printf(“grade for student #%d is %d,ni”+ 1 ,g[ t ] [ i ] ) ;
      }
      }
      我們將實際問題簡化為共有2個班,每班兩個學(xué)生,即將程序中的常量定義修改如下:
      #define classes 2
      #define grades 2
      運行程序:
      R U N
      (E)nter grades
      (R)eport grades
      ( Q ) u i t : e
      class #1:
      enter grade for student #17:8
      enter grade for student #289: ?
      class #2
      enter grade for student #19:8 ?
      enter grade for student #29:0 ?
      (E)nter grades
      (R)eport grades
      ( Q ) u i t : r?
      class #1
      grade for student #1 is 78
      grade for student #2 is 89
      class #2
      grade for student #1 is 98
      grade for student #2 is 90
      (E)nter grades
      (R)eport grades
      (Q)uit :q
      運行程序,我們首先看到一個菜單,選擇“ e”輸入成績,選擇“ r”顯示成績,選擇“q”
      退出。a t o i ( )函數(shù)用于將實參字符串轉(zhuǎn)換為整型。
      5.2.2 字符串?dāng)?shù)組
      程序設(shè)計中經(jīng)常要用到字符串?dāng)?shù)組。例如,數(shù)據(jù)庫的輸入處理程序就要將用戶輸入的命
      令與存在字符串?dāng)?shù)組中的有效命令相比較,檢驗其有效性。可用二維字符數(shù)組的形式建立字
      符串?dāng)?shù)組,左下標(biāo)決定字符串的個數(shù),右下標(biāo)說明串的最大長度。例如,下面的語句定義了
      一個字符串?dāng)?shù)組,它可存放3 0個字符串,串的最大長度為8 0個字符:
      char str_array[30][80];
      要訪問單獨的字符串是很容易的,只需標(biāo)明左下標(biāo)就可以了。例如,下面的語句以數(shù)組
      s t r _ a r r a y中的第三個字符串為參數(shù)調(diào)用函數(shù)gets( )。
      g e t s ( s t r _ a r r a y [ 2 ] ) ;
      該語句在功能上等價于:
      g e t s ( & s t r _ a r r a y [ 2 ] [ 0 ] ) ;
      但第一種形式在專業(yè)程序員編制的C語言程序中更為常見。
      為幫助理解字符串?dāng)?shù)組的用法,研究例5 – 5。它以一個字符串?dāng)?shù)組為基礎(chǔ)做簡單的文本編輯。
      [例5 – 5 ]
      #include <s t d i o . h >
      #define MAX 100
      #define LEN 80
      char text [MAX][LEN]
      /* 一個非常簡單的文本編輯器* /
      main( )
      {
      register int t,i,j ;
      for(t=0;t<MAX; t++) /*逐行輸入字符串* /
      {
      p r i n t f ( ” % d : ” ,t ) ;
      g e t s ( t e x t [ t ] ) ;
      if(! text[t][0])
      break; /* 空行退出*/
      }
      f o r ( i = 0 ; i < t ,i++) /*按行,逐個字符輸出字符串* /
      {
      for(j=0; text [i][j];j++)
      putchar(text [i][j]);
      putchar( ‘n’);
      }
      }
      該程序輸入文本行直至遇到一個空行為止,而后每次一個字符地重新顯示各行。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號