- 試題排行
- 最新熱點(diǎn)
- 最新推薦
2
3
4
5
6
7
8
9
10
2008年上半年軟考軟件設(shè)計(jì)師考試試題(上午)
2008年上半年軟考網(wǎng)絡(luò)工程師考試試題(下午)
2008年上半年軟考軟件設(shè)計(jì)師考試試題(下午)
2008年上半年軟件水平考試程序員考試試題(上
2008年下半年軟考網(wǎng)絡(luò)工程師預(yù)測試題及答案
2008年上半年軟件水平考試程序員考試試題(下
2008下半年軟件水平考試軟件設(shè)計(jì)師押題試卷
08年上半年軟考數(shù)據(jù)庫系統(tǒng)工程師考試試題(上
2008下半年軟件水平考試程序員模擬試題及答
試題一(15分,每空3分)
閱讀下列說明和流程圖,將應(yīng)填入__(n)__的字句寫在答題紙的對應(yīng)欄內(nèi)。
【流程圖說明]
下面的流程圖描述了對8位二進(jìn)制整數(shù)求補(bǔ)的算法。
該算法的計(jì)算過程如下:從二進(jìn)制數(shù)的低位(最右位)開始,依次向高位逐位查看,直到首次遇到“1”時,停止查看。然后,對該“1”位左面的更高位(如果有的話),逐位求反,所得的結(jié)果就是對原二進(jìn)制數(shù)求補(bǔ)的結(jié)果。
例如:對二進(jìn)制整數(shù)10101000求補(bǔ)的結(jié)果時01011000。
設(shè)8位二進(jìn)制整數(shù)中的各位,從低位到高位,依次存放在整型數(shù)組BIT的BIT[1]~BIT[8]中。例如,二進(jìn)制整數(shù)10101000存放在數(shù)組BIT后,就有BIT[1]=0,BIT[2]=0,…,BIT[7]=0,BIT[8]=1。若流程圖中存在空操作,則用NOP表示。
流程圖中__(1)__處按“循環(huán)變量名:循環(huán)初值,增量,循環(huán)終值”格式描述。
試題二(15分,每空3分)
閱讀下列說明和流程圖,將應(yīng)填入__(n)__的字句寫在答題紙的對應(yīng)欄內(nèi)。
【函數(shù)說明】
函數(shù)sort(int a[],int n)的功能時對數(shù)組a中的a[0]~a[n-1]這n個元素進(jìn)行排序。排序過程如下:第一趟對所有的偶數(shù)下標(biāo)p,比較a和a[p+1],若a>a[p+1],則將兩者交換;第二趟對所有的奇數(shù)下標(biāo)q,比較a[q]和a[q+1],若a[q]>a[q+1],則將兩者交換;第三趟對偶數(shù)下標(biāo),第四趟對奇數(shù)下標(biāo),…,依次類推,直至整個數(shù)組元素有序排列為止。
【函數(shù)]
void sort (int a[],int n)
{
int I ,j,t,tag=1;
for(j=0;j<n;j++= {
for (I=__(1)__;i<n-1;__(2)__= {
if (a>a[I+1]) {t=a;a=a[I+1];a[I+1]=t;tag=0;}
}
tag++
if (__(3)__) break;
}
}
對包含十個元素的數(shù)組a采用上述方法排序時,元素間的比較次數(shù)最少為__(4)__次,最多為__(5)__次。
試題三(15分,每空3分)
閱讀下列說明和流程圖,將應(yīng)填入__(n)__的字句寫在答題紙的對應(yīng)欄內(nèi)。
【函數(shù)說明]
函數(shù)movetoend(LinkedList La int i)的功能時:將線性表示A的第I個元素移到表尾。若移動成功,則返回0,否則返回-1。線性表A采用帶頭結(jié)點(diǎn)的單鏈表表示,La為表A的頭指針,如下圖所示。
鏈表結(jié)點(diǎn)的類型定義為:
typedef struct node {
int key;
struct node *next;
}*LinkedList
【函數(shù)]
int movetoend(LinkedList La,int i)
{
LinkedList p ,q,prep;
Int k=1;
P=La->next;prep=La;
While(__(1)__){ /*查找第I個元素并使指針p指向該結(jié)點(diǎn)*/
Prep=p; p=->next;k++
}
if (!p||k>i)return -1;
if (__(2)__) /*第I個元素結(jié)點(diǎn)已經(jīng)是表尾結(jié)點(diǎn),則無需移動*/
return 0;
q=p;
while(__(3)__)q=q-﹥next; /*查找表尾并使q指向表尾結(jié)點(diǎn)*/
__(4)__=p->next;
p->next=NULL;
__(5)__;
return 0;
}
從下列的2道試題(試題四至試題五)中任選1道解答。如果解答的試題數(shù)超過1道,則題號小的1道解答有效。 |
試題四(15分,每空3分)
閱讀下列說明和流程圖,將應(yīng)填入__(n)__的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明]
某單位舉辦了一場知識競賽,參加競賽的選手為300名,依次從1~300進(jìn)行編號。競賽時間為9:00~11:00。8道競賽題目依次從‘A’~‘H’編號,選手可按任意次序答題,每完成一道題目,可立即提交答案。若答題正確(Y),則選擇其他題目進(jìn)行解答,否則,可繼續(xù)做該題目或選擇其他題目進(jìn)行解答,直至競賽結(jié)束。
選手提交答案的情況及判定結(jié)果由專人即時錄入,錄入的數(shù)據(jù)如下表1所示,對競賽情況進(jìn)行統(tǒng)計(jì)和排名的結(jié)果如表2所示。
表1:輸入數(shù)據(jù)
提交時間 | 選手編號 | 題目編號 | 是否正確 |
09:37 | 14 | A | N |
09:50 | 8 | A | Y |
09:51 | 9 | B | N |
09:52 | 14 | A | N |
10:14 | 5 | A | N |
10:16 | 9 | B | N |
10:23 | 5 | A | Y |
10:23 | 8 | B | Y |
10:27 | 14 | A | Y |
表2:輸出結(jié)果
名次 | 選手編號 | 完成題目數(shù)量 | 總用時(分鐘) |
1 | 8 | 2 | 133 |
2 | 5 | 1 | 103 |
3 | 14 | 1 | 127 |
統(tǒng)計(jì)和排名的規(guī)則如下:
1. 若選手X在競賽時提交的題目P解答正確,2. 則解答該題目所用時間如下計(jì)算:
解答題目P的用時=提交題目P正確的時間-競賽的開始時間+罰時
罰時=提交題目P錯誤解答的次數(shù)×20
例如:表1中14號選手在10:27提交了題目A的正確解答,因此該選手正確解答該題目所用時間為87分鐘,由于之前的兩次提交錯誤解答,罰時為2×20=40分鐘,所以14號選手解答題目A的用時=87+40=127(分鐘)。
2.已經(jīng)提交正確答案的題目再次提交時不再計(jì)算。
3.競賽結(jié)束時,選手的總用時為所有解答正確的題目用時累加所得,解答不正確的題目不計(jì)時。
4.排名時,完成題目數(shù)量多者排名靠前;若完成的題目數(shù)相同,則用時少者排名靠前;若完成的題目數(shù)和所用時間均相等,則名次相同;完成題目數(shù)為0的選手不參加排名。
函數(shù)void Statistic()的功能是:讀取輸入數(shù)據(jù),進(jìn)行統(tǒng)計(jì)、排名并輸出結(jié)果。
。efine MAXN 300
typedef struct {
int no; /*選手編號*/
int num; /*完成的題目數(shù)量*/
int time; /*完成題目的總用時*/
int d[8]; /*d用于記錄提交第I個題目錯誤答案的次數(shù)*/
int a[8]; /*a用于記錄第I個題目是否已經(jīng)提交正確答案*/
}Info;
【函數(shù)】
void Statistic () {
char ch,pass;
int I,j,k,h,m,t,time,MaxIndex;
Info R[MAXN+1];
For(I=1;I<=MAXN;I++){ /*數(shù)組R的元素置初值0*/
R no=0; R num=0; R time=0;
For(j=0;j<8;j++){R.d[j]=0;R.a[j]=0;}
}/*for*/
MaxIndex=0;
While(1) {
/*錄入一名選手提交答案的信息(小時:分鐘,選手編號,題目號,是否正確)*/
scanf(”%d:%d,%d,%c”,&h,&m,&k,&ch,&pass);
if (h= =0) break;
R[k] no=k;
Time=__(1)__;
If (isupper(ch)) ch=’a’+ch-‘A’;
If (pass !=’Y’&& pass !=’Y’) { R[k] d[ch-‘a(chǎn)’]++;continue;}
If (R[k] a[ch-‘a(chǎn)’]= =1) continue;
R[k] a[ch-‘a(chǎn)’]=1;
R[k] num++;
R[k] time+=__(2)__;
if (k>MaxIndex) MaxIndex=k;
} /*while*/
for (I=1;I<MaxIndex;I++) { /*選擇排序*/
for(t=I,j=I+1;j<=MaxIndex;j++)
if (R[t] num<R[j] num || __(3)__ t=j;)
if(__(4)__) { R[0]=R[t];R[t]=R;R=R[0];}
} /*for*/
k=1;R[0]=R[1];
for(I=1;I<=MaxIndex;I++) /*輸出排名情況*/
if(R[i].num>0){
if (R num!=R[0] num || R time!=R[0] time) k++;
R[0]=__(5)__;
Printf(“%d: %3d %4d %5d ”,k,R no,R num R time);
} /*if*/
} /*Statistic*/
[NextPage]
試題五(15分,每空3分)
閱讀下列說明及Visual Basic程序代碼,將應(yīng)填入__(n)__的字句寫在答題紙的對應(yīng)欄內(nèi)。
【應(yīng)用說明]
某單位舉辦了一場知識競賽,參加競賽的選手為300名,依次從1~300進(jìn)行編號。競賽時間為9:00~ 11:00。8道競賽題目依次從‘A’~‘H’編號,選手可按任意次序答題,每完成一道題目,可立即提交答案。若答題正確(Y),則選擇其他題目進(jìn)行解答,否則,可繼續(xù)做該題目或選擇其他題目進(jìn)行解答,直至競賽結(jié)束。
選手提交答案的情況及判定結(jié)果由專人即時錄入,錄入數(shù)據(jù)包括提交答案的時間、選手編號、題目編號(A~H)、是否正確(Y/N)。
對競賽情況進(jìn)行統(tǒng)計(jì)和排名的規(guī)則如下:
1.若選手X在競賽時提交的題目P解答正確,則解答該題目所用時間如下計(jì)算:
解答題目P的用時=提交題目P正確的時間-競賽的開始時間+罰時
罰時=提交題目P錯誤解答的次數(shù)×20
例如:表1中14號選手在10:27提交了題目A的正確解答,因此該選手正確解答該題目所用時間為87分鐘,由于他在09:37和09:52兩次提交了題目A的錯誤解答,因此罰時為2×20=40分鐘,所以14號選手解答題目A的用時=87+40=127(分鐘)。
2.已經(jīng)提交正確答案的題目再次提交時不再計(jì)算。
3.競賽結(jié)束時,選手的總用時為所有解答正確的題目用時累加所得,解答不正確的題目不計(jì)時。
4.排名時,完成題目數(shù)量多者排名靠前;若完成的題目數(shù)相同,則用時少者排名靠前;若完成的題目數(shù)和所用時間均相等,則名次相同;完成題目數(shù)為0的選手不參加排名。
本應(yīng)用程序的運(yùn)行窗口如下圖所示:
窗口中的兩個文本框?yàn)門xt_time和Txt_player,分別用于錄入提交答案的時間和選手編號。組合列表框Combol提供題目編號(A~H),錄入時從中選擇。檢查框Chk_yn用于輸入解答是否正確信息。當(dāng)單擊“確定”按鈕(Cmd_comfirm)時,錄入的提交信息加入列表框List1中,排名情況在列表框List2輸出。單擊“關(guān)閉”按鈕時退出應(yīng)用程序。
在開發(fā)過程中,需要編寫的部分程序代碼如下:
【程序代碼]
Private Type Info
No as integer ’選手編號
Num as Integer ’完成題目數(shù)量
Time as integer ’完成題目的總用時
D(8) as integer ’d用于記錄提交第i個題目錯誤答案的次數(shù)
A(8) as Boolean ’a用于記錄第i個題目是否已經(jīng)提交正確答案
End type
Dim R(301) as info ’R[j]用于統(tǒng)計(jì)編號為j的選手提交答案的情況
Dim MaxIndex as Integer ’MaxIndex記錄提交答案的選手中編號最大者
Private Sub From_Load ()
For i=1 to 8
Combo1.additem chr(__(1)__)
Next
Combol.text = combol.list(0): txt_time .text=””: txt_player.text=””
For i=1 to 300
R(i).num=0: R(i).time=0: R(i).no=i
For j=1 to 8
R(i).d(j)=0: R(i).a(j)=false
Next j,i
End Sub
Private sub cmd_confirm_click()
Dim h, m,k, time as integer,ch ,pass,s1 as string
K= Instr(txt _time .text,”:”):if k<2 then goto error1
H=val(left(txt_time.text,k-1)):m=val(mid(txt_time.text,k+1))
If h>11 or h=11 and m>0 or m>=60 then goto error1
Time =__(2)__ ’計(jì)算答題時間,以分鐘為單位
If txt_plater.text<1 or txt_player .text>300 then goto error1
Ch= __(3)__
Pass=IIf(chk_yn.__(4)__ =0,”N”,”Y”)
S1=txt_time.text+space(4)+txt_player.text
S1=s1+space(10-len(txt_player.text))+ch+space(8)+pass
List1.additem s1
K= val(txt_player.text) 'k為選手編號
R(k).no=k '編號為k的選手的提交信息記錄在下標(biāo)為k的數(shù)組元素中
If k >maxindex then maxindex=k
M = asc(ch)-asc(“a”)
If pass <>”Y” then '編號為k的選手提交第m個題目的解答不正確
R(k).d(m)=R(k).d(m)+1
Else if R(k).a(m)<>true then '已經(jīng)提交正確的題目的解答不再計(jì)算
R(k).a(m)=true:R(k).num=R(k).num+1
R(k).time=R(k).time + __(5)__
Call statistic '調(diào)用過程statistic進(jìn)行實(shí)時排名和輸出
End if
Exit sub
Error1:msgbox”錄入信息有錯誤!”,vbOKOnly
End sub
從下列的3道試題(試題六至試題八)中任選1道解答。如果解答的試題數(shù)超過1道,則題號小的1道解答有效。 |
試題六(15分,每空3分)
閱讀以下說明和C++程序,將應(yīng)填入 __(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)
【說明】
以下程序的功能是計(jì)算三角形、矩形和正方形的面積并輸出。
程序由4個類組成:類Triangle,Rectangle和Square分別表示三角形、矩形和正方形;抽象類Finure提供了一個純虛擬函數(shù)getArea(),作為計(jì)算上述三種圖形面積的通用接口。
【C++程序】
#include<iostream.h>
#include<math.h>
class Figure{
public:
virtual double getArea()=0; //純虛擬函數(shù)
};
class Rectangle:__(1)__ {
protected:
double height;
double width;
public:
Rectangle(){};
Rectangle(double height,double width){
This->height=height;
This->width=width;
}
double getarea(){
return __(2)__ ;
}
};
class Square:__(3)__ {
public:
square(double width){
__(4)__ ;
}
};
class triangle:__(5)__ {
double la;
double lb;
double lc;
public:
triangle(double la ,double lb,double lc){
this ->la=la; this->lb; this->lc;
}
double getArea(){
double s=(la +lb+lc)/2.0;
return sqrt(s*(s-la)**(s-lb) *(s-lc));
}
};
viod main(){
figure* figures[3]={
new triangle(2,3,3),new Rectangle(5,8),new Square(5)};
for (int i=0;i<3;i++){
cout<<”figures[“<<i<<”]area= “<<(figures)->getarea()<<endl;
}
}
};
[NextPage]
第七題(15分,每空3分)
閱讀以下應(yīng)用說明及VB部分的程序代碼,將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)
【應(yīng)用說明]
設(shè)一個簡單的“通訊錄”存儲在一個Access類型的數(shù)據(jù)庫表中,包括姓名、電話和email三個字段。下面的應(yīng)用程序?qū)崿F(xiàn)對“通訊錄”數(shù)據(jù)庫表中的記錄進(jìn)行增加、刪除及修改處理,其運(yùn)行界面如下:
。1)數(shù)據(jù)控件(data1)與"通訊錄"數(shù)據(jù)庫表相連接,用戶可通過"》"和"《"按鈕指定表中的當(dāng)前記錄。
(2)文本框txt_name,txt_phone和txt_email 分別與數(shù)據(jù)庫中的姓名、電話和email字段綁定,用于顯示當(dāng)前記錄的內(nèi)容。
。3)應(yīng)用程序啟動時,"確定"按鈕(cmd_ok)和"取消"按鈕(cmd_cancel)不可操作,文本框中顯示表中的第一條記錄,這時文本框處于不可操作狀態(tài)。
。4)單擊"增加"按鈕(cmd_add)或"修改"按鈕(cmd_modify)后,方可以編輯記錄內(nèi)容,同時增加、刪除、修改和退出按鈕變?yōu)椴豢刹僮鳡顟B(tài)。增加和修改操作需通過確定和取消按鈕確認(rèn)。
(5)單擊刪除按鈕(cmd_del)后,彈出對話框,再單擊確定按鈕,當(dāng)前記錄被刪除。
【程序代碼】
private sub enableop(isenabled as Boolean)
txt_name.enabled=isenabled :txt _phone.enabled=isenabled
txt_email.enabled=isenabled
cmd_ok.enabled= isenabled: cmd_cancel.enabled= isenabled
cmd_add.enabled= not isenabled: cmd_del.enabled= not isenabled
cmd_end.enabled= not isenabled: cmd_modify.enabled= not isenabled
end sub
private sub form_load()
call enableop(false)
detal.refresh
if data1.recordset.recordcount=0 then
cmd_del.enabled= false: cmd_modify.enabled= __(1)__
end if
end sub
private sub cmd_add_click() '單擊“增加”按鈕的代碼
call enableop( __(2)__ )
data1.recordset.addnew '在數(shù)據(jù)庫表中添加一個新記錄
txt_name.__(3)__
end sub
private sub cmd_del_click() '單擊“刪除”按鈕的代碼
on error goto error3
ans=msgbox(“確定刪除嗎?”,vbYesNo+vbInformation,” 操作提示!”)
if (ans=vbyes) then
data1.recordset.__(4)__
data1.recordset.movenext
if data1.recordset.Eof then data1.refresh
end if
exit sub
error3:
msgbox err.description,vbokonly,”錯誤提示!”
end sub
private sub cmd_ok_click() '單擊確定按鈕的代碼
on error goto error1
data1.recordset.__(5)__
call enableop(false)
exit sub
error1:
msgbox err.description,vbokonly,”錯誤提示!”
data1,updatecontrols
call enableop(false)
end sub
'修改和取消按鈕的程序代碼略
試題八(15分,每空3分)
閱讀以下說明和Java程序,將應(yīng)填入__(n)__處的字句寫在答題紙的對應(yīng)欄內(nèi)
【說明】
以下程序的功能時三角形、矩形和正方形的面積輸出。
程序由5個類組成:areatest是主類,類Triangle,Rectangle和Square分別表示三角形、矩形和正方形,抽象類Figure提供了一個計(jì)算面積的抽象方法。
【程序】
public class areatest{
public static viod main(string args[]){
Figure[]Figures={
New Triangle(2,3,3),new rectangle(5,8),new square(5)
};
for (int i= 0;i< Figures.length;i++){
system.out.println(Figures+”area=”+ Figures.getarea());
}
}
}
public abstract class figure{
public abstract double getarea();
}
public class rectangle extends __(1)__ {
double height;
double width;
public rectangle (double height, double width){
this.height= height;
this. width = width;
}
public string tostring(){
return”rectangle: height=”+ height +”, width=”+ width +”:”;
}
public double getarea(){
return __(2)__
}
}
public class square exends __(3)__
{
public square(double width) {
__(4)__ ;
}
public string tostring(){
return” square:width=”+width”:”;
}
}
public class rectangle entend __(5)__
{
double la;
double lb;
double lc;
public triangle(double la ,double lb,double lc){
this.la=la; this.lb=lb; this.lc=lc;
}
public string tostring(){
return” triangle:sides=”+la+”, ”+lb+”, ”+lc+”:”;
}
public double get area(){
double s=(la+lb+lc)/2.0;
return math.sqrt(s*(s-la) *(s-lb) *(s-lc));
}
}
(1)i:1,1,8
(2)1→sw
(3) 0→BIT[i]
(4)NOP,或空操作
(5)1→BIT[i]
試題二
(1)j%2,及其等價形式
(2)i+=2,及其等價形式
(3)tag>2,或tag==3或tag>=3,及其等價形式
(4)9
(5)45
試題三
(1)p && k<i,及其等價形式
(2)!p->next,及其等價形式
(3)q->next
(4)prep->next
(5)q->next=p
試題四
(1)(h-9)*60+m,及其等價形式
(2)time + R[k].d[ch-'a']*20 其中ch-'a'可以表示為ch-97,R[k]可以表示為R[R[k].no]
(3)R[t].num == R[j].num && R[t].time > R[j].time,及其等價形式
(4)t!=i,及其等價形式,表達(dá)式的值為真也正確
(5)R[i],及其等價形式
試題五
(1)Asc("A")+i-1,或64+i,及其等價形式
(2)(h-9)*60+m,及其等價形式
(3)Combol.Text
(4)Value
(5)Time+R(k).d(m)*20 其中m可表示為Asc(ch)-Asc("A")或Asc(ch)-65,k可表示為R(R(k).no)
試題六 (C++)
(1)public Figure
(2)height*width
(3)public Rectangle
(4)this->height=this->width=width
(5)public Figure 若填public Rectangle只給1分
試題七
(1)False
(2)True
(3)SetFocus
(4)Delete
(5)Update
試題八 (Java)
(1)Figure
(2)height*width
(3)Rectangle
(4)super(width,width)
(5)Figure
- 推薦給朋友
- 收藏此頁
·2008年下半年軟考信息系統(tǒng)項(xiàng)目管理師試題(下午II) (2008-12-21 22:39:30)
·2008年下半年計(jì)算機(jī)軟考網(wǎng)絡(luò)工程師試題(下午) (2008-12-21 22:26:13)
·2008下半年軟考系統(tǒng)分析師考試試題(下午)II (2008-12-21 22:20:49)
·2008年下半年計(jì)算機(jī)軟考程序員試題(下午) (2008-12-21 22:18:18)
·2008年下半年計(jì)算機(jī)軟考程序員試題(上午) (2008-12-21 22:11:38)
如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。