• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    一九九八年度高級程序員級 下午試卷

    發布: 2007-5-26 13:59 | 作者: 未知 | 來源: 互聯網 | 查看: 32次 | 進入軟件測試論壇討論

    領測軟件測試網

    試題一

      閱讀以下說明和流程圖,回答問題 1至問題3,將解答寫在答卷的對應欄

    [說明]

      本流程圖描述某超市銷售數據的部分處理流程。超市中有若干臺收款機和若干名收款員。這

    里,我們把一個收款員開始使用一臺收款機到離開這臺收款機稱為該收款員的一次作業。作業開始時,收款員先在收款機上輸入收款員號和作業前金額。作業前金額是為了銷售時的找零而在作業前預先放入錢箱的金額數。作業結束時,收款員要找開錢柜,取走全部現金,并把這些現金的金額數(稱為作業后金額)輸入收款機。當

        作業前金額+本次作業售貨總金額-本次作業退貨總金額≠作業后金額

    時,表示這次作業存在金額差錯。

      本流程圖已作簡化,并作以下假定;該超市只有現金交易(不用信用卡和禮券);一個收款員因某種原因(如吃飯)在一天中可以有多個作業;銷售方式只有售貨和退貨兩種。

      整個超市分成若干部門(如食品部、服裝部),系統按部門統計一個月中各類貨物的銷售數量和金額,最后根據月銷售計劃文件分析各部門完成銷售計劃的情況。系統還統計每個收款員的差錯情況和退貨情況。

      圖中處理4和處理8每月的最后一天執行一次(營業結束后),其它處理每天執行一次。

      圖中部分數據、文件的記錄格式如下:

      日銷售數據:收款機號十收款員號十作業前金額十

            {(售貨標記|退貨標記)十貨號十數量十單價十金額}+作業后金額

      日銷售文件記錄:(作業開始標記十收款機號十收款員號十作業前金額 )

              |(售貨標記|退貨標記)十貨號十數量十金額) )

              |(作業結束標記十收款機號十收款員號十作業后金額

      部門日銷售文件記錄:部門號十(售貨標記|退貨標記)十貨號十數量+金額

      部門月銷售計劃文件記錄;部門號十月計劃金額

      收款員差錯月報:月份十收款員號十差錯作業數十差錯總金額

      收款員退貨月報..月份十收款員號十退貨次數十退貨總金額

      其中 {w}表示 w重復出現多次; a|b 表示 a或b; a+b表示 a與b。

    [問題1]

      分別寫出收款員日銷售文件、商品文件、部門日銷售匯總文件至少應包含哪些數據項。

    [問題2]

      處理1能檢查出日銷售數據中的哪些錯誤。

    [問題3]

      處理4對收款員月銷售文件作何種操作。

    試題二

      閱讀以下說明和流程圖,回答問題,將解答寫在答卷的對應欄內。

    [說明

      本流程圖描述了某子程序的處理流程,現要求用白盒測試法為該子程序設計測度數據

    [問題]

      根據判定覆蓋、條件覆蓋、判定一條件覆蓋、條件組合覆蓋(即多重條件覆蓋)、路徑覆蓋等五種覆蓋標準,從供選擇的答案中分別找出滿足相應覆蓋標準的最小測試數據組(用①~12回答)。 供選擇的答案

         、賦=90,y=90 、趚=90,y=70 、踴=90,y=90 、躼=90,y=75

           x=70,y=70   x=70,y=90   x=90,y=75   x=75,y=90

                            x=75,v=90   x=70,y=70

         、輝=90,y=90 、辺=80,y=80 、選=80,y=80 、鄕=80,y=80

           x=90,y=75   x=90,y=70   x=90,y=75   x=90,y=70

           x=75,y=90   x=70,y=90   x=90,y=90   x=70,y=90

           x=70,y=70   x=70,y=70   x=75,y=90   x=70,y=70

                            x=70,y=70   x=70,y=75

         、醲=80,y=80 、鈞=90,y=90  11. x=80,y=80 12. x=80,y=80

           x=90,y=75   x=90,y=75   x=90,y=75   x=80,y=70

           x=90,y=70   x=90,y=70   x=90,y=70   x=70,y=80

           x=70,y=80   x=75,y=90   x=70,y=80   x=70,y=70

           x=70,y=75   x=70,y=70   x=70,y=75   x=90,y=75

           x=70,y=70   x=70,y=90   x=70,y=70   x=90,y=70

                            x=70,y=90   x=70,y=75

                                     x=75,y=90

                                     x=75,y=80

                                     x=70,y=90

    試題三

      閱讀以下說明和流程圖,回答問題1至問題2,將解答寫在答卷的對應欄內。

    [說明]

      本流程圖描述了某種字符序列的變換過程。變換前的字符序列以字符“!苯Y尾,它存放在數組old中,變換后的字符序列存放在數組new中,它不包含結束標志“!。流程圖按下列規則進行變換:

     1.刪除字符序列中的注解。注解用一對“!”字符分隔,注解中可出現除“!蓖獾娜魏巫址。

     2.字符常數完整地保留。字符常數用一對“&”字符分隔,字符常數中可出現、外的任何字符。

      值得注意的是:當字符“&”需要出現在字符常數中時,通常用二個連續的“&”表示,在

      保留字符常數時,這二個連續的“&”都被保留。此外,作為字符常數分隔符的一對“&”

      也被保留。

     3.除字符常數和注解外,出現在其它地方的連續多個空格壓縮成一個空格,但字符序列中先導

      的空格則全部刪除。

     4.注解和字符常數之外的非空格字符均保持不變。

      本流程圖對原字符序列從左到右掃描,根據遇到的當前字符來搜索連續空格、注解或字符常

      數,然后按上述變換規則變換。若遇到的當前字符是“!”,則尋找下一個“!”字符(若

      找不到則作出錯處理),這二個“!”間的字符全部看作為注解。若當前字符是“&”字符

      則尋找與之配對的下一個“&”字符(若找不到則作出錯處理),其間的字符全部看作為字

      符常數。

      例如:

      原字符序列:

      └┘└┘a└┘└┘└┘b&cd&&└┘└┘!e&f└┘└┘ g!h& └┘└┘!└┘└┘j#

      變換后的字符序列:a└┘bdcd&&└┘└┘!e&f└┘g└┘j

      本流程圖假定在數組old中一定存在“!弊址。

    [問題1]

      填充流程圖中的①~⑤,把解答寫在答卷的相應位置上。

    [問題2]

      當原字符序列中汪解的前后均是連續空格時,本流程圖將注解前后的連續空格分別壓縮成一個空格,刪除注解后,將導致變換后的新字符序列出現二個連續的空格。如;

               g└┘└┘!h&└┘└┘i!└┘└┘j

    本流程圖將變換成g└┘└┘j。

      為使變換后的新序列中除字符常數外沒有連續的空格,圖中的虛線框需作何改動(只需畫出修改后的流程圖)

    試題四

      在COMET型計算機上可以使用試卷上所附的CASL匯編語言。閱讀以下程序說明和CASL程序,將應填入_(n)_處的字句,寫在答卷的對應欄內。

    [程序說明]

      本程序是統計字符串中數字字符“0”至“9”的出現次數。

      字符串中的每個字符是用ASCII碼存貯。一個存貯單元存放兩個字符,每個字符占8位二進位。

      程序中,被統計的字符串從左至右存放在STR開始的連續單元中,并假定其長度不超過200,字符串以‘·’符作為結束。NCH開始的10個單元存放統計結果。

       START MIN

    MIN  LEA GR2,9

       LEA GR0,0

    L1  _(1)_

       LEA GR2,-1,GR2

       LEA GR4,0

       LEA GR1,0

    L2  LD GR2,STR,GR1

       EOR GR4,C1

       JNZ RL

       _(2)_

    RL  SRL GR2,8

       LEA GR3,0,GR2

       SUB BR3,C9

       JNZ L4

    L3  LEA GR3,0,GR2

       SUB GR3,CO

       JM1 L5

       LEA GR2,1

       _(3)_

       _(4)_

    L4  GR4 0,GR4

       JNZ L2

       _(5)_

       JMP L2

    L5  SUB GR2,C

       JNZ L4

       EXIT

    C1  DC 1

    C   DC '·'

    C0  DC '0'

    C9  DC 9

    STR  DS 200

    NCH  DS 10

       END

    試題五

      閱讀以下程序說明和C程序,將應填入_(n)_處的字句,寫在答卷的對應欄內。

    [程序說明]

      這里給出的程序逐一從指走課程成績文件中讀入學生的學號和成績,對同一學生匯總他的總成績,并按以下格式輸出名次(按總成績由高到低的順序)、總成績、同一名次的學生人數、同一名次學生的學號(按學號由小到大的順序)。

      程序約定學生學習課程不超過30種,課程成績文件的第一個數字就是課程號,統計過程中,同一課程號的成績文件不能重復輸入。

      程序采用鏈表結構存儲學生有關信息,鏈表中的每個表元對應一位學生。程序在數據輸入過程中,形成一個按學生學號從小到大順序鏈接的有序鏈表。當數據輸入結束后,程序按總成績從高到低,學號從小到大的順序對鏈表排序。程序最后按指定格式輸出鏈表中的信息。程序的輸出格式如下例所示:

    名 次 總成績 人 數 學 號    
    1 470 2 12 25  
    3 450 3 15 24 50
    6 430 1 14    
    7 401 3 13 18 45
             

    [程序]

    #include 〈stdio.h〉

    #define M 30

    #define NLEN 10

    typedef struct node {int cur_s/*最近輸入成績的科目 */

              char no[NLEN];int score;

              stuction node *next;

              。齆ODE;

    N0DE*bubblesort(N0DE*head)

    {NODE *q,*tail,*p=(MODE*)malloc(sizeof(NODE);

     p→next=head;head=p;tail=NULL;

     while (tail!=___(1)___)

     {p=head;q=p→next;

      while (q→enxt!=tail)

      {if (p→next→score→〈q→next→score||

         p→next→scor==q→next→score&&

         strcmp(p→next→no,q→next→no)〉0)

       {p→next=_(2)_,/*兩相鄰表元鏈接關系前后顛倒*/

        _(3)_=q→next→next;p→next→next=q;

       }

       p=p→next;/*調整p和q*/ q=_(4)_;

      }

      tail=q;

     }

     p=head→next;free(head);return p;

    }

    int s[M],sp;

    main()

    {FILE*fp;

     NODE*h,*u,*v*p;

     int ss,,mark,order,c;

     char fname[80],no[NLEN],ans;

     for(h=NULL,sp=0;;)

     {print(''輸入科目成績文件名(輸入aaaa表示強行結束)。\n");

      while (1)

      {scanf("%s",fname);

       if(strcmp(fname,"aaaa")==0)break;

       if((fp=fopen(fname,"r"))==NULL)

        printf("不能打開文件%s,請重新輸入科目文件名。\n,fname);

       else break;

      }

      if(strcmp(fname,"aaaa")==0)break;

      fscanf(fp,"%d",&ss);/·輸入科目號·/s[sp]=ss;

      for(i=0;s[i]。絪s;i++);

      if(i<sp)

      {printf("該科目的成績已輸入,請輸入別的科目成績文件。\n");

       continue;

      }

      sp++;

      while(fscanf(fp,"%s%d",no,&mark)==2)

      {/*在鏈表中尋找最近輸入的學號*/

       for(v=h;v!=NULL,&& strcmp(v→no,no)<0;u=v,v=v→next);

       if(v。絅ULL && strcmp(v→no,no)==0)

       {if (v→cur_s。剑絪s)

        {v→score+=mark;v→cur_s=ss;

        }/*同一科目成績的重復輸入,后輸入成績被忽略*/

       }else {p=(NODE*)malloc(sizeof(node);/*一位新的學生*/

           strcpy(p→no,no);p→score=mark;p→cur_s=ss;

           p→next=v;

           if(v==h) h=p;else u→next=p;

          }

      } fclose(fp);

      printf("還有科目成績文件要輸入嗎?(Y/N)");scanf("%c",&ans);

      if(anns=='N'||ans=='n')break;

     }

     h=bubblesort(h);

     printf("名次 總成績 人數 學號\n");/*以下按格式要求輸出*/

     v=h;order=1;

     while(v。絅ULL)

     {for (c=1,u=v→next;u!NULL &&u→score==v→score;c++,u=u→next);

      printf("%4d%7d%8d ",order,v→score,c);

      for(order+=c,i=1;_(5)_;v=v→next,i++)

      {if (i>1 && i%5==1) printf("\n%23c",'');

       printf("%s",v→no);

      }printf("\n");

     }

    }

    試題六

      閱讀以下程序說明和FORTRAN程序,將應填入_(n)_處的字句,寫在答卷的對應欄內。

    [程序說明]

      本程序用以將m+n個元素的數組A中的前m個元素(A(1)-A(m))與后n個元素(A(m+l)-A(m+n))互換位置,并保持其各自原有的內部順序。

      程序中把數組的各元素看成首尾相連的序列,并將數組元素分成G組(G為m和n的最大公因子),每組中的元素序列是從數組某元素起由間隔為m的元素組成,再將每組元素依次循環向左傳送,即得所需結果。

      例如原數組A為:

                 

      由m=4,n=2,求得 G=2,將A中的元數分成兩組。按上述說明,第一組元素序列依次為A(1)、A(5)、A(3),將它們循環向左傳送后的結果為

    8 9 7 2 6 4

      第二組元素序列依次為以A(2)、A(6)、A(4),將它們循環向左傳送后的結果為

    8 4 7 9 6 2

    即得所需結果。

       INTEGET A(1000), G,H

       READ(*,*)M,N

       READ(*,*)(A(1),1=1,M+N)

       G=M

       H=N

    20  IF (G,NE,H)THEN

        IF(G,GT,T)THEN

         G=G-H

        ELSE

         H=H-G

        ENDIF

        GOTO 20

       ENDIF

       DO 100 I=_(1)_

        TEMP=A(1)

        K=1

    30   J=_(2)_

        IF(J,NE,1)THEN

         A(K)=_(3)_

         K=J

         _(4)_

        ELSE

         A=K=_(5)_

        ENDIF

    100  CONTINUE

       WRITE(*,200)(A(I),I=1,M+N)

    200  FORMANT(1016)

       END

    試題七

      閱讀以下程序說明和C程序,將應填入_(n)_處的字句,寫在答卷的對應欄內。

    [程序說明]

      本程序的函數

         sum(int,i int total,int sigma,int rear,int d[],int n)

    用來從已知數組d的前n個元素中找出所有部分元素序列之和等于total的元素序列,約定數組d的元素都是正整數,且都小于等于total。

      函數sum使用遞歸方法找出全部解答。參數i表示遞歸函數當前考慮元素d[i],參數sigma是調用前已選取的部分序列的元素和,參數rear是后面還未考慮的那部分元素的元素和。

      函數對元素d[i]有兩種可能的選擇方案:

      1.考慮元素d[i]被包含在新的部分元素序列中的可能性。如果在當前部分元素序列之后接上d[i],新序列的元素和不超過total,則函數將d[i]包含在當前部分元素序列中。如果新的部分元素序列的元素和等于total時,新的部分元素序列就是一個解答,函數將其輸出;否則,若繼續考慮后面的元素還有可能找到解答時,函數就遞歸去考慮后面的元素,尋找解答。最后,函烽就恢復原來部分元素序列中不包含d[i]的狀態。

      2.考慮元素d[i]不被包含在新的部分元素序列中的可能性。如果繼續向d[i]之后考慮還是有希望能得到和為total的部分元素序列時,函數將新序列不包含d[i]也作為一種可能的選擇,并遞歸去考慮后面的元素,尋找解答。

    #include 〈stdio.h〉

    #define N 100

    int a[N];

    int flg[N];

    sum (int i,int total,int sigma,int rear,int d[],int t)

    {int j;

     /*考慮元素d[i]被包含在新的部分元素序列中的可能性 */

     if(sigma+d[i] total/*如果d[i]與當前序列的和不超過total*/

    。鹒lg[i]=1;/*d[i]被考慮在被部分元素序列中 */

      if(_(1)_==total)

      {/*輸出解*/

       for (j=0;flg[j]==0;j++);

       printf("%4d=%d",total,d[j]);

       for(j++;<=i;j++)

         if (flg[j])

           printf("+%d",d[j]);

       printf("\");

      }

      else /*并且繼續考慮后面的元素有可能找到解答時 */

      if(i<n-1 &&rear-d[i]+sigma>=total)

        sum(i+1,total,_(2)_,rear-d[i],d,n);

      _(3)_;

     /*考慮元素d[i]不被包含在新的部分元素序列中的可能性。*/

     if (i<n-1&&rear-d[i]+tigma>=total)

         sum(i+1,total,_(4),rear-d[i],d,n);

    }

    main()

    {int i,j,n,total,s,d;

     printf("輸入total!/n");scanf("%d",&total);

     printf("輸入n!/n"); scanf("%d",&n);

     for (s=i=0;i<n;)

     {printf ("輸入第%d個元素>0且<=%d)\n",i+1,total);

      scanf ("%d",&d);

      if( d<1||d>total)

       {printf("出錯,請重新輸入!\n");

         contnue;

       }

       s+=a[i++]=d;

     }

     sum(0,total,0,_(5)_,a,n);

     printf ("\n\n");

    }

    試題八

      閱讀以下程序說明和FORTRAN程序,將應填入_(n)_處的字句,寫在答卷的對應欄內。

    [程序說明]

      本程序用以查找給定數組A的第K小元素。程序執行后,第K小元素存放在數組元素A(K)中。

      設給定的數組中各元素A(i)=(i=1,2…N)互為不相等。它的第K(1≤k≤N)小元素是指這樣的元素;它大于N個元素中的K-1個元素,而小于其余的N-K個元素。假如,假設N=8,數組A為:

    44 94 12 50 55 6 18 67

    它的第5小元素(即K=5)是50。

      本程序的處理過程如下:

      將A(K)的值(此例為A(5),此時值為55)存入X,從左向右掃描,直至遇以第一個不小于X的元素(此時為94),再從右向左掃描,直到遇見第一個不大于X的元素(此時為18),然后交換這兩個元素,數且A成為:

    44 18 12 50 55 6 94 67

    繼續這一“掃描與交換”的過程,直到兩個方向的掃描在數組中間的某處匯合。此時數組被分成兩段,匯合點左邊的元素均小于匯合點右邊的元素。然后選取存在第K小元素的一段,重復上述掃描、交換和調整掃描范圍的處理過程。程序中采用L、R來表示掃描的范圍的左右邊界。開始時L為1,R為N,以后逐次調整。當變成為L值不小于R值時,A[K]即是第K小元素。

       SUBROUTINT FIND(A,N,K)

       INTEGET A(N),R,X,W

       L=1

       R=N

    20  IF (L,LT,R)THEN

        X=A(K)

        I=L

        J=R

    30   IF(A(1),LT,X)THEN

         I=I+1

         GOTO 30

        ENDIF

    40   IF(___(1)___)THEN

         ___(2)___

         GOTO 40

        ENDIF

        IF(I,LE,J)THEN

         W=A(I)

         ___(3)___

         I=I+1

         ___(4)___

        IF(I,LE,J)___(5)___

        ENDIF

        IF(J,LT,K)L=I

        IF(___(6)___) R=___(7)___

        GOTO 20

       ENDIF

       RETURN

       END

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>