【正文】
單利率存款單取款單密碼存款單取款單密碼利息清單存單密碼存款單存單利率利率利息單 據(jù) 輸 出存單利息清單 ②機票預(yù)訂系統(tǒng) 機 票 預(yù) 定 系統(tǒng)機 票 預(yù) 定 子系 統(tǒng)機 票 發(fā) 放 子系 統(tǒng)預(yù) 定 信 息 處理安 排 航 班錄 入 預(yù) 定 信息設(shè) 置 航 班打 印 取 票 單據(jù)取 票 憑 證 處理錄 入 取 票 憑證核 對 取 票 憑證交 款打 印 及 發(fā) 放機 票航班信息預(yù)定信息航班信息預(yù)定信息機票信息通知單賬單機票信息機票信息通知單賬單通知單通知單有效通知賬單有效通知賬單機票③患者監(jiān)護系統(tǒng) 美國某大學(xué)有 200 名教師,校方與教師工會剛剛簽訂一項協(xié)議。 教師工資檔案存儲在行政辦公室的磁帶上,檔案 中有目前的年工資、贍養(yǎng)的人 數(shù)、雇傭日期等信息。 要求:( 1)畫出此系統(tǒng)的數(shù)據(jù)流圖;( 2)寫出需求說明; ( 3)設(shè)計上述的工資調(diào)整程序 (要求用 HIPO 圖描繪設(shè)計結(jié)果 ),設(shè)計時分別采 用兩種算法,并比較兩種算法的優(yōu)缺點: ( a)搜索工資檔案數(shù)據(jù),找出年工資少于 $26000 的人,計算新工資,校核是 否超過 $26000,存儲新工資,印出新舊工資對照表; ( b)把工資檔案數(shù)據(jù)按工資從最低到最高的次序排序,當(dāng)工資數(shù)額超過 $26000 時即停止排序,計算 新工資,校核是否超過限額,存儲新工資,印出結(jié)果。 ( 2)確定贏者和贏牌的類型。要求用 HIPO 圖描繪設(shè)計結(jié)果并且畫出高層控制流程圖。 ( 2)一副撲克牌有 52張牌, 4種花色(黑桃、紅桃、梅花、方塊),每種花色的牌的點數(shù)按升序排列有 2, 3,4, ........., 10, J,Q,K,A 等 13種。 ( 4)最高等級的一手牌成為同花,即 3張牌均為同一種花色,最大的同花是同一種花色的 Q,K,A。 ( 7)第四等級的牌是對子,即 3張牌中有兩張點數(shù)相同,最大的對子是 A,A,K。 ( 9)若兩個人的牌類型不同,則等級高者勝;若等級相同,則點數(shù)高者勝;若點數(shù)也相同,則為平局。 k=ba+1。 while(i=1) { k=k+k+k+k+k。 l=k/4+a。i=i+1。 return(p)。 if(T[0][0]T[1][0]) t=T[0][0]。 if(tT[2][0]) t=T[2][0]。 } int E1(int T[10][10]) { if(T[0][1]==T[1][1]amp。T[1][1]==T[2][1]) return 1。 } int E2(int T[10][10]) { int q=0。amp。 else return 0。 else return 0。amp。 else if(T[0][0]==T[2][0]amp。T[0][0]!=T[1][0]) return 1。amp。 else return 0。 int A[10][10],B[10][10]。 printf(請輸入游戲的次數(shù) \n)。times)。jtimes。i3。r1)。r2)。r1)。r2)。 printf(A 贏,同花順 \n)。 printf(B 贏,同花順 \n)。amp。 if(max(A[][10])max(B[][10])) printf(A 贏,同花順 \n)。 } else if(E2(A[][10])E2(B[][10])) { e2++。 } else if(E2(A[][10])E2(B[][10])) { e2++。 } else if(E2(A[][10])==E2(B[][10])amp。E2(B[][10])==1) { e2++。 else printf(B 贏,順子 \n)。 printf(A 贏,同點 \n)。 printf(B 贏,同點 \n)。amp。 if(max(A[][10])max(B[][10])) printf(A 贏,同點 \n)。 } else if(E4(A[][10])E4(B[][10])) { e4++。 } else if(E4(A[][10])E4(B[][10])) { e4++。 } else if(E4(A[][10])==E4(B[][10])amp。E4(B[][10])==1) 。 if(max(A[][10])max(B[][10])) printf(A 贏,對子 \n)。 } else { if(max(A[][10])max(B[][10])) printf(A 贏,雜牌 \n)。 } } printf(同花順贏牌概率為 %d,順子贏牌概率為 %d,同點贏牌概率為 %d,對子贏牌概率為 %d,雜牌贏牌概率為 %d,e1/times,e2/times,e3/times,e4/times,e5/times)。 第六章 假設(shè)只有 SEQUENCE 和 DO_WHILE 兩種控制結(jié)構(gòu),怎么利用它們完成IF_THEN_ELSE 操作? 解:轉(zhuǎn)化如下: K = 1 DO WHILE (條件 .AND. ) 程序塊 1 K=K+1 END DO DO WHILE ( (.NOT. 條件 ) .AND. ) 程序塊 2 K=K+1 END DO 假設(shè)只有 SEQUENCE 和 IF_THEN_ELSE 兩種控制結(jié)構(gòu),怎么利用它們完成 DO_WHILE 操作? 解:轉(zhuǎn)化如下; label: IF (條件 ) THEN 程序塊 GOTO label ELSE 程序塊 END IF 畫出下列偽代碼程序的流程圖和盒圖: START IF p THEN WHILE q DO f END DO ELSE BLOCK g n END BLOCK END IF STOP 解:流程圖: MTF(h)1015 τ(月)12 盒圖: τ ( 月 )1 3 . 56 01 0M T T F ( h ) 圖 給出的程序流程圖代表一個非結(jié)構(gòu)化的程序,問: ( 1) 為什么說它是非結(jié)構(gòu)化的? ( 2) 設(shè)計一個等價的結(jié)構(gòu)化程序。 解:( 1)通常所說的結(jié)構(gòu)化程序,是按照狹義的結(jié)構(gòu)程序的 定義衡量,符合定義規(guī)定的程序,每個代碼塊只有一個入口 和一個出口。 ( 2)使用附加的標(biāo)志變量 flag,至少有兩種方法可以把該 程序改造為等價的結(jié)構(gòu)化程序,圖示盒圖描繪了等價的結(jié)構(gòu) 化程序。 ( N O T q ) O R ( N O T f l a g )F Tpg 研究下面的偽碼程序: LOOP:Set I to(START+FINISH)/2 IF TABLE(I)=ITME goto FOUND IF TABLE(I)ITME Set START to (I+1) IF TABLE(I)TME Set FINSH to (I1) IF (FINSHSTART)1 goto LOOP IF TABLE(START)=ITEM goto FOUND IF TABLE(FINSH)=ITEM goto FOUND Set FLAG to 0 Goto DONE FOUND: Set FLAG to 1 DONE: EXIT 要求: ( 1) 畫出流程圖。 ( 3) 若此程序是非結(jié)構(gòu)化,設(shè)計一個等價的結(jié)構(gòu)化程序并畫出流程圖。 ( 3)等價的結(jié)構(gòu)化程序的流程圖如下: F l a g = 0開 始( F S ) 1amp。 f l a g = = 0I = ( F + S ) / 2T a b l e ( I ) = = i t e mT a b l e ( I ) i t e mF l a g = 1結(jié) 束TTFFS = I + 1 F = I 1FT ( 4) 此程序有二分查找的功能,它完成預(yù)定功能的隱含前提條件是現(xiàn)有序列為從小到大順序排好的有序序列。 (1)能否從這個例子總結(jié)出 Ashcroft_Manna 技術(shù)的一些基本方法? (2)進一步簡化 (b)給出的結(jié)構(gòu)化設(shè)計。 最外層的 IF語句在 I=1 時執(zhí)行 , 執(zhí)行完這個 IF語句后把 I賦值為隨后應(yīng)該執(zhí)行的內(nèi)層 IF語句所對應(yīng)的CASE標(biāo)號值 。 當(dāng)執(zhí)行完最內(nèi)層的 IF語句之后 , 把 I賦值為可執(zhí)行的最大標(biāo)號值加 1, 而DOUNTIL 循環(huán)的結(jié)束條件就是 I等于這個值 。 開始 I=1 DO CASE=1 d c e A I=4 C D D E I=3 B I=2 I=4 I=4 I=4 I=4 停止 TCCCCCCC TCCCCCCC TCCCCCCC TCCCCCCC FCCCCCCC FCCCCCCC FCCCCCCC FCCCCCCC 開 始cA Bd cC D D E停 止FFFTTT 某交易所規(guī)定給經(jīng)紀(jì)人的手續(xù)費計算方法如下:總手續(xù)費等于基本手續(xù)費加上與交易中的每股價格和股數(shù)有關(guān)的附加手續(xù)費。當(dāng)每股售價低于 14元時,附加手續(xù)費為基本手續(xù)費的 5%,除非買進、賣出的股數(shù)不是 100 的倍數(shù),在這種情況下附加手續(xù)費的 9%。當(dāng)每股售價超過 25 元時,如果交易的股數(shù)(即不是 100 的倍數(shù)),則附加手續(xù)費為基本手續(xù)費的 4%,否則附加手續(xù)費為基本手續(xù)費的 1%。 ( 2) 用判定數(shù)表示手續(xù)費的計算方法。 ( 1)表示手續(xù)費計算方法的判定表如圖所示 ( 2) 表示手續(xù)費計算方法的判定樹 畫出下列偽碼程序的流圖,計算它的環(huán)形復(fù)雜度。 把統(tǒng)計空格程序的 Jackson 圖 (圖 )該畫為等價的程序流程圖和盒圖。假設(shè)一段對話總是由操作員信息開始以系統(tǒng)信息結(jié)束,用 Jackson 圖描繪這樣的人機對話過程。請仔細閱讀這段偽碼,說明該偽碼的語法特點,找出并改正偽碼中的錯誤。 (2) 它是結(jié)構(gòu)化的還是非結(jié)構(gòu)化的 ?說明理由。 (4) 找出并改正程序邏輯中的錯誤。 (1) 給出這些變量的不合理值的例子。 ( 2) 答:無法打印出任何信息。 其特點是:主要應(yīng)用白盒測試的技術(shù),對多個模塊的測試可以并發(fā)的進行。 特點是:可能發(fā)生接口問題。假設(shè)測試之前每 1000 條指令中有 10 個錯誤,則估計對它進行測試期間將發(fā)現(xiàn)的錯誤數(shù)為: 5000*10/1000=50。 語句覆蓋測試用例 語句覆蓋的含義是,選擇足夠多的測試數(shù)據(jù),使被測試程序中的每個語句至少 30 20 10 60 40 20 T T T 2 3 2 1 1 1 1 F F F 1 Z Y X C B A 3 2 1 預(yù)期的輸出 輸入 判定 序號 執(zhí)行一次。 針對若干個不同的 KEYWORD 重復(fù)執(zhí)行上述命令序列。 針對若干個不同的 NAME 重復(fù)執(zhí)行上述命