亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      考試首頁 | 考試用書 | 培訓(xùn)課程 | 模擬考場(chǎng) | 考試論壇  
      全國(guó)  |             |          |          |          |          |         
        當(dāng)前位置:計(jì)算機(jī)等級(jí) > 二級(jí)考試 > C語言程序設(shè)計(jì) > C語言輔導(dǎo) > 文章內(nèi)容
        

      全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語言入門教程(99)

      中華IT學(xué)院   【 】  [ 2016年5月5日 ]

      指針數(shù)組作指針型函數(shù)的參數(shù)


      main(){
      static char *name[]={ "Illegal day",
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday",
      "Saturday",
      "Sunday"};
      char *ps;



      int i;
      char *day name(char *name[],int n);
      printf("input Day No:\n");
      scanf("%d",&i);
      if(i<0) exit(1);
      ps=day name(name,i);
      printf("Day No:--->%s\n",i,ps);
      }
      char *day name(char *name[],int n)
      {
      char *pp1,*pp2;
      pp1=*name;
      pp2=*(name+n);
      return((n<1||n>7)? pp1:pp2);
      }


      下例要求輸入 5個(gè)國(guó)名并按字母順序排列后輸出。在以前的例子中采用了普通的排序方法,逐個(gè)比較之后交換字符串
      的位置。交換字符串的物理位置是通過字符串復(fù)制函數(shù)完成的。 反復(fù)的交換將使程序執(zhí)行的速度很慢,同時(shí)由于各字
      符串(國(guó)名) 的長(zhǎng)度不同,又增加了存儲(chǔ)管理的負(fù)擔(dān)。 用指針數(shù)組能很好地解決這些問題。把所有的字符串存放在一
      個(gè)數(shù)組中, 把這些字符數(shù)組的首地址放在一個(gè)指針數(shù)組中,當(dāng)需要交換兩個(gè)字符串時(shí), 只須交換指針數(shù)組相應(yīng)兩元
      素的內(nèi)容(地址)即可,而不必交換字符串本身。程序中定義了兩個(gè)函數(shù),一個(gè)名為 sort完成排序, 其形參為指
      針數(shù)組name,即為待排序的各字符串?dāng)?shù)組的指針。形參 n為字符串的個(gè)數(shù)。另一個(gè)函數(shù)名為 print,用于排序后字符
      串的輸出,其形參與sort的形參相同。主函數(shù)main中,定義了指針數(shù)組name 并作了初始化賦值。然后分別調(diào)用sort
      函數(shù)和print函數(shù)完成排序和輸出。值得說明的是在sort函數(shù)中,對(duì)兩個(gè)字符串比較,采用了strcmp 函數(shù),strcmp
      函數(shù)允許參與比較的串以指針方式出現(xiàn)。name[k]和name[j]均為指針,因此是合法的。字符串比較后需要交換時(shí), 只
      交換指針數(shù)組元素的值,而不交換具體的字符串, 這樣將大大減少時(shí)間的開銷,提高了運(yùn)行效率。
      現(xiàn)編程如下:


      #include"string.h"
      main(){
      void sort(char *name[],int n);
      void print(char *name[],int n);
      static char *name[]={ "CHINA","AMERICA","AUSTRALIA",
      "FRANCE","GERMAN"};
      int n=5;
      sort(name,n);
      print(name,n);
      }
      void sort(char *name[],int n){
      char *pt;
      int i,j,k;
      for(i=0;ik=i;
      for(j=i+1;jif(strcmp(name[k],name[j])>0) k=j;
      if(k!=i){
      pt=name[i];
      name[i]=name[k];
      name[k]=pt;
      }
      }
      }
      void print(char *name[],int n){
      int i;
      for (i=0;i}

      分享到:
      本文糾錯(cuò)】【告訴好友】【打印此文】【返回頂部
      將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動(dòng)訪問考試網(wǎng) | 復(fù)制本頁地址,傳給QQ/MSN上的好友 | 申請(qǐng)鏈接 | 意見留言 TOP
      關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
      Copyright © 2006-2017 中華考試網(wǎng)(Examw.com) All Rights Reserved  營(yíng)業(yè)執(zhí)照