查看全部128種考試
軟件水平考試
 考試動態(tài) 報考指南 歷年真題 模擬試題 復(fù)習(xí)資料 心得技巧 專業(yè)英語 技術(shù)文章 軟考論壇 考試用書
 程序員 軟件設(shè)計師 網(wǎng)絡(luò)管理員 網(wǎng)絡(luò)工程師 系統(tǒng)分析師 數(shù)據(jù)庫系統(tǒng)工程師
1
2
3
4
5
6
7
8
9
10
admin  
【字體: 1996年高級程序員下午試題及答案
1996年高級程序員下午試題及答案
spks.exam8.com 來源:考試吧(m.1glr.cn) 更新:2005-4-13 0:37:00 軟件水平考試 考試論壇

[程序]

START
OFFSET PUSH 0,GR2
PUSH 0,GR3
LD GR0,0,GR1
LEA GR2,0
ST GR2,LOW
___(1)___
___(2)___
ST GR2,UP
LOOP ADD GR2,LOW
SRL GR2,1
LEA GR3,0,GR2
___(3)___
___(4)___
JZE FOUND
JPZ INCLOW
LEA GR2,-1,GR2 ;M<NTABLE(K)
ST GR2,UP
JMP CMPLU
INCLOW LEA GR2,1,GR2 ;M> NTABLE(K)
ST GR2,LOW ;K+1→LOW
___(5)___
CMPLU CPL GR2,LOW
___(6)___
___(7)___
FOUND LEA GR0,1,GR2
POP GR3
POP GR2
RET
LOW DS 1
UP DS 1
END

 

從下列的 2 道試題(試題五至試題六)中任選 1 道解答。如果解答的試題數(shù)超過 1 道,則解答的前 1 道有效。

試題五

    閱讀以下程序說明和 C 程序,將應(yīng)填入程序中__?__處的字句,寫在答卷的對應(yīng)欄內(nèi)。

【程序說明】

    本程序是一個簡單的計算器模擬程序。對任意給定的正確四則運算表達式,程序計算其結(jié)果值并輸出。表達式中運算分量為無正負(fù)號整數(shù),運算符為 +、_、*、/,圓括號按常規(guī)配對,表達式以字符 "=" 結(jié)束。

    函數(shù) getach() 為獲取表達式的一個合法字符,并將字符存入變量 curch;函數(shù)指針數(shù)組 func[] 是為了統(tǒng)一加減乘除計算而設(shè)置的。

【程序】

#include <stdio.h>

int add(int x,int y){return x+y;}

int sub(int x,int y){return x-y;}

int mul(int x,int y){return x*y;}

int div(int x,int y){return x/y;}

int (*func[])()={add,sub,mul,div};

int num,curch;

char chtbl[]="+-*/()=";

char corch[]="+-*/()=0123456789";

int getach()

{ int i;

while(1)

{ curch = getchar();

if(curch == EOF) return -1;

for (i = 0;corch[i] && curch != corch[i];i++);

if (i<strlen(corch)) break;

}

return curch;

}

int getid()

{ int i;

if(curch >= '0' && curch <= '9')

{ for(num = 0;curch >= '0' && curch <= '9';getach())

num = __①__;

return -1;

}

else { for( i = 0;chtbl[i];i++)

if (chtbl[i] == curch) break;

if ( i <= 5) getach();

return i;

}

}

int cal()

{ int x1,x2,x3,op1,op2,i;

i = getid();

if ( i == 4) x1 = cal(); else x1 = um;

op1 = getid();

if ( op1 >= 5) return x1;

i = getid();

if ( i == 4) x2 = cal(); else x2 = num;

op2 = getid();

while (__②__)

{ i = getid();

if ( i == 4) x3 = cal(); else x3 = num;

if (( op1/2 == 0) && (op2/2 == 1))

x2 = ( *func[op2](x2,x3));

else { x1 = __③__;

x2 = x3;

__④__;

}

op2=getid();

}

return __⑤__(x1,x2);

}

void main()

{ int value;

printf("Please input an expression:\n");

getach();

while (curch != '=')

{ value = cal();

printf("The result is : %d\n",value);

printf("Please input an expression:\n");

getach();

}

}

 

試題六

閱讀下列程序說明和 FORTRAN 程序,將應(yīng)填入程序中__?__處的字句,寫在答卷紙的對應(yīng)欄內(nèi)。
【程序說明】

子程序 SUM 計算數(shù)列

1,1/2,1/3,…,1/n,…

的前 n 項和,并以 M 位小數(shù)形式輸出(M≤60)。

為提高計算結(jié)果的精度,用分?jǐn)?shù)形式計算并存放數(shù)列的部分和,求和結(jié)果記為

A+U/V

其中 U/V 是不可約真分?jǐn)?shù),A 為整數(shù)。

例如:n = 5,M = 10 時,子程序輸出為

1+1/2+1/3+1/4+1/5 = 2+17/60

2.283333333

整型函數(shù) GCD 用輾轉(zhuǎn)相除法計算 U 和 V 的最大公約數(shù)。

【程序】

SUBROUTINE SUM(N,M)

INTEGER A,U,V,G,D(60),GCD

A=1

U=0

V=1

DO 20 K=2,N

U=__①__

V=__②__

A=__③__

U=MOD(U,V)

__④__

U=U/G

V=V/G

20   CONTINUE

WRITE(*,100)N,A,U,V

100  FORMAT(1X,'1+1/2+1/3+…+1/',I2,'=',I2,'+'I10,'/',I10)

DO 40 I=1,M

D(I)=__⑤__

__⑥__

40   CONTINUE

WRITE(*,200)A,(D(I),I=1,M)

200  FORMAT(1X,I2,'.',60I1)

END

INTEGER FUNCTION GCD(U,V)

INTEGER U,V

K=V

L=U

10  IF(MOD(K,L).GT.0) THEN

J=MOD(K,L)

K=L

L=J

GOTO 10

ENDIF

__⑦__

END

 

上一頁  [1] [2] [3] 下一頁

轉(zhuǎn)帖于:軟件水平考試_考試吧
文章搜索  
看了本文的網(wǎng)友還看了:
網(wǎng)友評論
昵 稱: *  評 分: 1分 2分 3分 4分 5分
標(biāo)題:   匿名發(fā)表    (共有條評論)查看全部評論>>
版權(quán)聲明 -------------------------------------------------------------------------------------
  如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  付款方式  站內(nèi)導(dǎo)航  客服中心  友情鏈接  考試論壇  網(wǎng)站地圖
Copyright © 2004-2008 考試吧軟件水平考試網(wǎng) All Rights Reserved    
中國科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699
百度大聯(lián)盟黃金認(rèn)證  十佳網(wǎng)絡(luò)教育機構(gòu)  經(jīng)營許可證號:京ICP060677