首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
會計從業(yè)資格考試會計證) | 經(jīng)濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產(chǎn)評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內(nèi)審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 復習資料 > 軟件設(shè)計師 > 正文

軟考軟件設(shè)計師課后練習題:第五章習題及解答

來源:考試吧Exam8.com) 2006-12-11 8:03:46 考試吧:中國教育培訓第一門戶 模擬考場

        3.閱讀下列程序,寫出程序運行的輸出結(jié)果。
     char s[]="ABCD";
  main()
    { char * p;
     for( p=s;p< s+4;p++) printf("%s\n", p);
    }
      【解]程序定義了一個字符數(shù)組s,由給它所賦的字符串初值知,該數(shù)組只有五個元素。程序另定義了字符指針變量p。循環(huán)開始時,先讓p指向數(shù)組的首元素。循環(huán)每次輸出以p所指字符為首字符的字符串,并讓它指向下一個字符。如此反復循環(huán)四次,所以程序輸出以下內(nèi)容:
       ABCD
       BCD
       CD
       D

        4.閱讀下列程序,試寫出程序運行的結(jié)果。
     main()
     {int i,b,c,a[]={1,10,-3,-21,7,13},*p_b,*p_c;
     b=C=1;p_b=p_C= a;
     for(i=0;i<6; i++)
    { if(b<*(a+i)) {b=*(a+i); p_b=&a[i]; }
      if(c>*(a+i)) {c=*(a+i); p_c=&a[i]; }
    }
   i=*a;*a=*p_b;*p_b=i;i=*(a+5);*(a+5)=*p_c;*p_c=i;
    printf("%d,%d,%d,%d,%d,%d\n", a[O],a[1],a[2],a[3],   a[4], a[5]);
    }
      【解]程序定義了一個整型數(shù)組。,由給它所賦的初值知,該數(shù)組有六個元素。程序另定義了三個整型變量i.b、C和兩個指針變量p_b.p_c。程序首先置變量b和C都為1,p_b和p_c都指向數(shù)組a 的首元素a[0]。接著執(zhí)行六次循環(huán),循環(huán)體由兩個if語句。第一個if語句是當 b的值小于*(a+i)(就是a[i])時,將*(a+i)的值復制到b,并讓p_b指向a[i]。這是在a中找最大值,將最大值存于b,最大值元素的指針存于指針變量p_b。第二個if語句是當c的值大于*(a+i)(就是a[i])時,將*(a+i) 的值復制到c,并讓p_c指向a[i]。這是在a中找最小值,將最小值存于c,最小值元素的指針存于指針變量p_c。循環(huán)結(jié)束后的前三個語句實現(xiàn)最大元素與a[0]交換。接著三個語句是在已經(jīng)過前面交換的基礎(chǔ)上,將最小元與a[5]交換。最后程序順序輸出數(shù)組a的六個元素。所以程序輸出內(nèi)容是:
             13, 10,-3, l, 7,-21。
    若數(shù)組a的初值由輸入任意指定,上述程序?qū)σ环N特殊情況不能完成功能的要求,即最小元素若是a[0],p_c所指元素已被移到p_b指針所指位置,實際與a[5]交換的不再是數(shù)組中的最小元素,而是最大元素。

    5.4  程序設(shè)計題 
  
      1.輸人3個整數(shù),按從大到小順序輸出。
     【解】存儲輸入的三個整數(shù)可用三個簡單變量,也可用數(shù)組。設(shè)用三個簡單變量x,y,z存儲輸入的三個整數(shù)。另設(shè)若干個指針變量指向存儲輸入數(shù)據(jù)的變量。實現(xiàn)從大到小輸出三個整數(shù)有多種方案,如通過比較交換變量的值,多次比較交換使變量滿足條件x>=y>=z。這樣,變量的輸入值可能會與它的輸出值不一樣。如通過比較交換指針變量,當比較后發(fā)現(xiàn)要交換時,就交換變量的指針,而不交換變量的值,則在比較結(jié)束后,變量的值沒有改變,但從指針方向來看,它們的值是從大到小排列的。下面的程序就采用這種方案。
      # include 
        main()
       { int x,y,z;
    int *big=&x,*mid=&y,*sma=&z,/*置三個指針變量分別指向x,y, z*/
    *temp;
     printf("Enter x,y,z.\n");
     scanf("%d%d%d", big,mid,sma);/*順序為變量x,y,z輸入值*/
  if(*big< *mid) {temp=big;big=mid; mid=temp; }/*使*big>=*mid*/
  if(*big<*sma) { temp=big;big=sma;sma=temp; }/*使*big>=*sma*/
  if(*mid<*sma){temp=mid;mid=sma;sma=temp; }/*使*mid>=*sma*/
  printf("%d\t%d\t%d\n", x,y,z);/*按輸入順序輸出x,y,z*/
  printf("%d\t%d\t%d\n",*big,*mid,*sma);/*按從大到小的順序輸出*/
   }

          2.編一個程序,輸入15個整數(shù)存入一維數(shù)組,再按逆序重新存放后再輸出。
       【解】輸入數(shù)組的元素,并重新顛倒存放后輸出。將存儲于數(shù)組中的元素顛倒存儲,只要首尾相對應的元素兩兩交換即可。若用指針實現(xiàn),可讓一個指針p指向前端的元素,另一個指針q指向與前端元素對應的后端的元素。循環(huán)前,讓p指向數(shù)組的首元素,讓q指向數(shù)組的末元素。循環(huán)時,讓p和q所指兩個元素交換,并讓p增1,q減l。循環(huán)條件是p所指元素在前,q所指元素在后,即p<q。程序如下:
        # include 
        main()
      { int a[15],*p,*q, temp;
       printf("Enter 15 numbers.\n");
       for(p=a;p<a+15;p++) 
       scanf("%d", p);
       for(p=a,q=a+14;p<q;P++,q--) { 
       temp=*p; *p=*q;*q=temp;
      }
      for(p=a;p      printf("%d\t",*p);
   printf("\n");
     }

          3.輸入一個字符串,按相反的次序輸出其中的全部字符。
      【解】要相反的次序輸出字符串的全部字符,可用一個字符指針變量,從指向字符串的本字符開始,逆序遍歷字符串,輸出指針所指字符即可。但為了讓字符指針指向字符串的末字符,若不用字符串處理庫函數(shù),得用一個循環(huán),讓它從字符串的首字符開始,順序移至字符串的結(jié)束標記符,然后倒退一個字符,就能讓它指向字符串的末字符。程序如下:
      # include
      # define N 200
      main()
     { char s[N],*p;
     printf("Enter a string.\n");
     scanf("%s", s);
     for(p=s;*p; p++);
     for(p--; p>=s; p--)
     printf("%c",*p);
     printf("\n");
     } 

          4.輸入一個一維實型數(shù)組,輸出其中的最大值、最小值和平均值。
      【解】設(shè)實型數(shù)組的元素個數(shù)n不超過20。程序輸入n,并用循環(huán)輸入數(shù)組的元素,再用循環(huán)遍歷數(shù)組,求出數(shù)組的最大值和最小值、數(shù)組元素的和。然后求出數(shù)組元素的平均值,最后輸出結(jié)果。程序如下:
        # include
       # define N 20
      main()
    { double a[N],max,min,ave,*p, t;
      int n;
      printf("Enter n(0<n<20).\n");
      do{
     scanf("%d",&n);
    if(n>0 && n<20) break;
    printf("n值不合要求,請重新輸入!\n");
    } while(l);
    printf("輸入%d個實數(shù)\n", n);
    for(n=a;n    scanf("%lf",&t);*p=t;
   } 
   max=min=ave=*a;
   for(p=p+l;p   if(max<*p) max=*p;
if(min>*p) min=*p;
 ave+=*p;
 }
 ave/=n;
  printf("最大值:%f\t最小值:%f\t平均值:%f\n",max,min,ave);
  }

           5.輸入一個3×6的二維整型數(shù)組,輸出其中的最大值、最小值及其所在的行列下標。
   【解】找出其最大值和最小值,及它們的行列位置。采用按行按列順序遍歷數(shù)組的方法找出數(shù)組的最大值、最小值,以及它們在數(shù)組中的位置指針。輸出時,將位置指針轉(zhuǎn)換成行下標和列下標。程序如下:
    # include 
    # define N 3
    # define M 6
    main()
   { int a[N][M],*maxp,*minp,*q,t;
   printf("輸入%d個整數(shù)\n", N*M);
   for(q=a[0];q<*a+N*M;q++) {
   scanf("%d",&t);*q=t;
   }
   maxp=minp=*a; 
   for(q=a[0];q<*a+ N*M; q++) {
  if(*maxp<*q) maxp=q;
  if(*minp>*q) minp=q;
  }
   printf("最大值:%d它的行下標是%d它的列下標是%d\n",
  *maxp,(maxp-*a)/M,(maxp-*a)%M);
   printf("最小值:%d它的行下標是%d它的列下標是%d\n",
   *minp,(minp-*a)/M,(minp-*a)%M;
   }

更多軟考資料請訪問:考試吧軟件水平考試欄目

上一頁  1 2 3 4 5 下一頁
文章搜索
軟件水平考試欄目導航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。