試題 2
在 COMET 型計算機上可以使用試卷上所附的 CASL 匯編語言。閱讀下列程序說明和 CASL 程序,把應填入程序中__(n)__ 處的字句,寫在答卷的對應欄內。
[程序說明]
本程序是一個除法程序。
(1)被除數、除數均是正整數,分別存放在標號為A,B的存貯字內。
(2)商存貯在標號為ANS的存貯字內,對商的小數點后第一位進行舍入,結果為整數。
(3)假定除法過程不會產生溢出。
本程序在除法中實現四舍五入的方法是:將被除數乘以 10,除以除數,對商作適當處理,再將處理后的結果除以 10。
[問題]
在程序中的①~⑧處各填入一條正確的指令,以完成此程序。除非必要,標號欄不要填寫。
[程序]
標號 | 操作碼 | 操作數 | |
START | DGN | ||
DGN | LD | GR0,A | |
__①__ | |||
__②__ | |||
ADD | GR0,A | ||
LD | GRl,B | ||
CALL | DIV | ||
L1 | __③__ | ||
LEA | GRl,10 | ||
CALL | DIV | ||
ST | GR2,ANS | ||
EXIT | |||
A | DS | 1 | |
B | DS | 1 | |
ANS | DS | 1 | |
DIV | ST | GRl,WORK | |
__④__ | |||
DIV1 | CPA | GR0,WORK | |
JMI | DIV2 | ||
__⑤__ | |||
__⑥__ | |||
JMP | DIV1 | ||
DIV2 | RET | ||
WORK | DS | 1 | |
END |
試題 3
閱讀下列程序說明和 C 程序,將應填入程序中__(n)__處的字句寫在答卷紙的對應欄內。
[程序說明]
已知某數的前二項為2和3,其后繼項根據當前最后二項的乘積按下列規則生成
。ǎ保┤舫朔e為一位數,則該乘積即為數列的后繼項;
(2)若乘積為二位數,則該乘積的十位數和個位數依次作為數列的兩個后繼項。
本程序輸出該數列的前n項以及它們的和。其中,函數sum(n,pa)返回數列的前n項之和,并將生成的前n項存放于首指針為pa的數組中。程序中規定輸入的n值必須大于2并且不超過給定的常數值MAXNUM。
例如:若輸入n值為10,則程序輸出如下內容:
sum(10)=44
2 3 6 1 8 8 6 4 2 4
[程序]
#include <stdio.h>
#define MAXNUM 100
int sum( n,pa )
int n, *pa;
{ int count,total,temp;
*pa=2;
__(1)__ = 3;
total = 5; count = 2;
while (count++<n)
{ temp=.(pa-1)..pa;
if (temp<10)
{ total+=temp;
*(++pa)=temp;
}
else
{
__(2)__ = temp/10;
total += *pa;
if ( count<n)
{ count++;pa++;
__(3)__ = temp%10;
total += *pa;
}
}
}
__(4)__;
}
main ()
{ int n,.p,.q,num[MAXNUM];
do { printf( "Input N=? (2<N<%d):",MAXNUM+1 );
scanf( "%d",&n );
} while ( __(5)__ );
printf( "\nsum(%d)=%d\n",n,sum(n,num) );
for ( p=num, q = __(6)__ ;p<q;p++) printf("%4d",*p );
printf("\n");
}
試題 7
在 COMET 型計算機上可以使用試卷上所附的 CASL 匯編語言,閱讀下列程序說明和 CASL 程序,把應填入程序中__(n)__處的字句,寫在答卷的對應欄內。
[程序說明]
本程序用來復原被壓縮過的數據。
原始數據的壓縮規則如下:
(1)在原始數據中連續出現 N( N≥2 ) 個相同的數 X,則在壓縮數據中相繼存放 N 和 X 兩個數。
(2)在原始數據中,對于不屬于上述情況的數據段,即相鄰而又不相等的 M 個數據,則在壓縮數據中先存放 -M,再存放這 M 個數。
(3)壓縮數據中數的存放次序與原始數據中數的出現次序相一致,并在壓縮數據的最后加上 0,作為結束標記。
例: 原始數據中有以下數:
-15 11 11 11 11 11 11 11 11 -2 14 9 9 9 9 9
則壓縮后的數據為
-1 -15 -8 11 -2 -2 14 5 9 0
程序中標號為PACKED開始的存貯字中存放了上述壓縮后的數據;程序執行后,在標號為 UNPACK 開始的 16 個存貯字中生成原始數據。
[問題]
在程序中的①~⑧處各填入一條正確的指令,以完成此程序。除非必要,標號欄不要填寫。
[程序]
標號 | 指令碼 | 操作數 | |
START | BEGIN | ||
BEGIN | __(1)__ | ||
LEA | GR2,0 | ||
LOOP0 | __(2)__ | ||
LD | GR3,PACKED,GR1 | ||
LEA | GR3,0,GR3 | ||
__(3)__ | |||
__(4)__ | |||
LEA | GRl,1,GRl | ||
LD | GR0,PACKED,GRl | ||
LOOP1 | __(5)__ | ||
LEA | GR2,1,GR2 | ||
LEA | GR3,-1,GR3 | ||
JNZ | LOOP1 | ||
JMP | LOOP0 | ||
ONEONE | __(6)__ | ||
LOOP2 | LEA | GRl,l,GRl | |
LD | GR0,PACKED,GRl | ||
__(7)__ | |||
LEA | GR2,l,GR2 | ||
LEA | GR3,-1,GR3 | ||
__(8)__ | |||
JMP | LOOP0 | ||
ENDPGM | EXIT | ||
UNPACK | DS | 16 | |
HXFFFF | DC | #FFFF | |
PACKED | DC | -1 | |
DC | -15 | ||
DC | 8 | ||
DC | 11 | ||
DC | -2 | ||
DC | -2 | ||
DC | 14 | ||
DC | 5 | ||
DC | 9 | ||
DC | 0 | ||
END |
試題 8
閱讀下列程序說明和 C 程序,將應填入程序中__(n)__ 處的字句,寫在答卷紙的對應欄內。
[程序說明]
本程序對某電碼文(原文)進行加密形成密碼文.其加密算法如下:
假定原文為C1C2C3...Cn,加密后形成的密文為S1S2S3...Sn,首先讀入正整數Key
(Key>1)作為加密鑰匙,并將密文字符位置按順時針方向連成一個環,如下圖所示:
加密時從 S1 位置起順時針計數,當數到第 Key 個字符位置時,將原文中的字符放入該密文字符位置中,同時從環中除去該字符位置;接著從環中下一個字符位置起繼續計數,當再次數到第 Key 個字符位置時,將原文中字符 C2 放入其中,并從環中除去該字符位置;依次類推,直至 n 個原文字符全部放入密文環中.由此產生的 S1S2...Sn 即為原文的密文。
例如,當 Key=3 時,原文: THIS IS AN DECODING SYSTEM 的密文為:
AOTGNHEDI YS D IMIETSNC SS
當Key=4時,該原文的密文為:
SSDTYD HTEGIASISCNM E ION
本程序將電碼的原文存放在字符數組 old 中,加密鑰匙存放在整數 Key 中.函數 decode 用于將原文 old 加密并返回密文字符數組的首指針。其中函數采用一個雙向循環鏈表 CODE 來表示密文環.函數 strlen 用于計算一個字符串中的字符個數( 不包括字符串結尾符 '\0' )。為了簡單起見,程序中假設內存容量足以滿足動態存貯單元分配的要求。
[程序]
#include <stdio.h>
#include <alloc.h>
#define CR 13
typedef struct node
{ char ch;
struct node *forward; /* Link to next node. */
struct node *backward;/* Link to previous node.*/
} CODE;
main()
{ char __(1)__ ,old[256];
int strlen() , key , num=0;
printf("\nPlease input the telegraph: \n")l
while ( num<255 && ( old[num++] = getch()) != CR );
old [ __(2)__ ] = '\0';
do { printf( "\nPlease input Key=?( Key>1 ):" );
scanf("%d",&key);
} while ( key<=1 );
printf( "\nThe decode of telegraph:'%s' is:\n'%s'\n",old,decode( old,key ) );
}
char *decode(old,key)
char *old; int key;
{ char *new; int length,count,i;
CODE *loop,*p;
length=strlen(old);
loop=( __(3)__ ) malloc( length.sizeof(CODE) );
for ( i = 1;i<length-1;i++ )
{ loop[i].forward = &loop[i+1];
loop[i].backward = &loop[i-1];
}
loop[0].backward = &loop[length-1];
loop[0].forward = &loop[1];
loop[length-1].forward = loop;
loop[length-1].backward = &loop[length-2];
for ( p = loop,i = 0;i<length;i++ )
{ for ( count = 1;count<key;count++ )
p= __(4)__ ;
p->ch=.old++;
p->backward->forward = __(5)__ ;
p->forward->backward = __(6)__ ;
p=p->forward;
}
new = ( char *)malloc( ( length+1 ) *sizeof(char) );
for ( i=0;i<length;i++ ) new[i] =l oop[i] *ch;
new[length]='\0';
return (new);
}
int strlen(s)
char *s;
{ int len = 0;
while ( __(7)__ != '\0' ) len++;
return( len );
}
轉帖于:軟件水平考試_考試吧
- 推薦給朋友
- 收藏此頁
·2008年下半年軟考信息系統項目管理師試題(下午II) (2008-12-21 22:39:30)
·2008年下半年計算機軟考網絡工程師試題(下午) (2008-12-21 22:26:13)
·2008下半年軟考系統分析師考試試題(下午)II (2008-12-21 22:20:49)
·2008年下半年計算機軟考程序員試題(下午) (2008-12-21 22:18:18)
·2008年下半年計算機軟考程序員試題(上午) (2008-12-21 22:11:38)
Copyright © 2004-2008 考試吧軟件水平考試網 All Rights Reserved |