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

試題一是必答題

試題一

  閱讀下列說(shuō)明、流程圖和算法,將應(yīng)填入__(n)__處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi).

[流程圖說(shuō)明]

  下面的流程圖用N—S盒圖形式描述了數(shù)組A中的元素被劃分的過(guò)程.其劃分方法是:

  以數(shù)組中的第一個(gè)元素作為基準(zhǔn)數(shù),將小于基準(zhǔn)數(shù)的元素向低下標(biāo)端移動(dòng),而大于基準(zhǔn)數(shù)的元素向高下標(biāo)端移動(dòng).當(dāng)劃分結(jié)束時(shí),基準(zhǔn)數(shù)定位于A[i],并且數(shù)組中下標(biāo)小于i的元素的值均小于基準(zhǔn)數(shù),下標(biāo)大子i的元素的值均大于基準(zhǔn)數(shù)。設(shè)數(shù)組A的下界為low,上界為high,數(shù)組中的元素互不相同。例如,對(duì)數(shù)組(4,2,8,3,6),以4為基準(zhǔn)數(shù)的劃分過(guò)程如下:

[流程圖]
  
[算法說(shuō)明]

  將上述劃分的思想進(jìn)一步用于被劃分出的數(shù)組的兩部分,就可以對(duì)整個(gè)數(shù)組實(shí)現(xiàn)遞增排序。設(shè)函數(shù)int p(int A[],int low,int high)實(shí)現(xiàn)了上述流程圖的劃分過(guò)程并返回基準(zhǔn)數(shù)在數(shù)組A中的下標(biāo)。遞歸函數(shù)void sort(int A[],iht L,int H)的功能是實(shí)現(xiàn)數(shù)組A中元素的遞增排序。

[算法]

 void sort(int A[],iht l,int H) {
 if ( L < H ) {
  k=p(A,L,R);     //p()返回基準(zhǔn)數(shù)在數(shù)組A中的下標(biāo)
  sort(__ (4)__;     //小于基準(zhǔn)數(shù)的元素排序
  sortl__ (5)__);    //大于基準(zhǔn)數(shù)的元素排序
  }
 }

  從下列的2道試題(試題二至試題三)中任選1道解答。如果解答的試題數(shù)超過(guò)1道,則題號(hào)小的1道解答有效。


試題二

  閱讀下列函數(shù)說(shuō)明和C函數(shù),將應(yīng)填入__(n)__處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。

[函數(shù)2.1說(shuō)明]

  函數(shù)palindrome(chars[])的功能是:判斷字符串s是否為回文字符串,若是,則返回0,否則返回-1。若一個(gè)字符串順讀和倒讀都一樣時(shí),稱該字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。

[函數(shù)2.1]

 int palindrome(char S[])
 { char *pi,*pj;
  pi=S;pj=s+strlen(S)-1:
  while ( pi<pj && __(1)__){
   pi++; pj--;
  }
  if(__ (2)__)return-1;
  else return 0;
 }

[函數(shù)2.2說(shuō)明]

  函數(shù)f(char *str,char del)的功能是;將非空字符串str分割成若干個(gè)子字符串并輸出,del表示分割時(shí)的標(biāo)志字符。

  例如若str的值為“33123333435”,del的值為‘3’,調(diào)用此函數(shù)后,將輸出三個(gè)子字符串,分別為“12”、“4”和“5”。

[函數(shù)2.2]

 void f(char*str,char del)
 { int i,j,len;
  len = strlen(str);
  i = 0;
  while (i<len){
   while (__(3)__) i++;    /*忽略連續(xù)的標(biāo)志字符*/
  /*尋找從str[i]開(kāi)始直到標(biāo)志字符出現(xiàn)的一個(gè)子字符串*/
   j = i + 1;
  while (str[j] !=del && str[j] !='\0') j++;
  __ (4)__="\0";         /*給找到的字符序列置字符串結(jié)束標(biāo)志*/
  printf(" %s\t",&str[i]): ’
  __ (5)__;
  }
 }

試題三

  以下是與Visual Basic開(kāi)發(fā)應(yīng)用有關(guān)的5個(gè)問(wèn)題.對(duì)每一個(gè)問(wèn)題,請(qǐng)將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。

  (1)在Visual Basic中,工程文件、窗體文件和標(biāo)準(zhǔn)模塊文件的擴(kuò)展名是什么?

  請(qǐng)從下列選項(xiàng)中選擇:

  prg、prj、exe、vbp、rom、frm、win、fra,std、bas、vbs、Vbm

  (2)設(shè)某窗體上有一個(gè)命令按鈕,其名稱為 CmdSave,運(yùn)行時(shí)該按鈕上顯示有“保存(S)”字樣的信息。為使熱鍵 ALT+S 與該命令按鈕相關(guān)聯(lián),應(yīng)該對(duì)按鈕 CmdSave 的 Caption屬性設(shè)置什么樣的屬性值?

  (3)設(shè)某窗口內(nèi)有一個(gè)圖像框 Image1,以及兩個(gè)命令按鈕“放大”和“縮小”。單擊“放大”按鈕就會(huì)使該圖像框的長(zhǎng)和寬都放大10%;單擊“縮小”按鈕就會(huì)使該圖像框的長(zhǎng)和寬都縮小10%(該圖像框的左上角不動(dòng))。請(qǐng)分別寫(xiě)出這兩個(gè)命令按鈕的單擊事件過(guò)程中的程序代碼。

  (4)為使某個(gè)單選按鈕初始時(shí)默認(rèn)被選中,在開(kāi)發(fā)時(shí)應(yīng)怎樣做?

  (5)若有語(yǔ)句 Tmpval=MsgBox(非法操作!,ybOKCancel+vbCritical,"提示"),請(qǐng)簡(jiǎn)要描述程序運(yùn)行時(shí)彈出的消息框的主要特征。

  從下列的2道試題(試題四至試題五)中任選1道解答,如果解答的試題數(shù)超過(guò)1道,則題號(hào)小的1道解咎有效。

試題四

  閱讀以下說(shuō)明和C代碼,將應(yīng)填入__(n)__處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。

[說(shuō)明]

  函數(shù) MultibaseOutput(long n,int B)的功能是:將一個(gè)無(wú)符號(hào)十進(jìn)制整數(shù) n 轉(zhuǎn)換成 B(2≤B≤16)進(jìn)制數(shù)并輸出。該函數(shù)先將轉(zhuǎn)換過(guò)程中得到的各位數(shù)字入棧,轉(zhuǎn)換結(jié)束后再把 B 進(jìn)制數(shù)從棧中輸出。有關(guān)棧操作的諸函數(shù)功能見(jiàn)相應(yīng)函數(shù)中的注釋。C代碼中的符號(hào)常量及棧的類型定義如下:

 #define KAXSIZE 32
 typedef struct{
  int *elem;  /* 棧的存儲(chǔ)區(qū) */
  int max;   /* 棧的容量,即找中最多能存放的元素個(gè)數(shù) */
  int top;   /* 棧頂指針 */ 
 }Stack;
[C代碼]
 int lnitStack(Stack *S,int n)  /* 創(chuàng)建容量為n的空棧 */
 { S->elem = (int *)matloc(n * sizeof(int));
  if (S->elem == NULL) return -1;
  S->max = n;__(1)__= 0;return 0;
 }
 int Push(Stack*S,int item)   /* 將整數(shù)item壓入棧頂 */
 { if(S->top == S->max){ printf("Stack is full!\n");return -1;}
  __(2)__;item;return 0;
 }
 int StackEmpty(Stack S){ return(!S.top) ? 1;0;) /* 判斷棧是否為空 */
 int Pop(Stack*S)        /* 棧頂元素出棧 */
 { if (!S->top){ printf("Pop an empty stack!\n");return -1;)
  return __(3)__;
 }
 void MultibaseOutput(long n,int B)
 { int m;Stack S;
  if (init Stack(&S,MAXSIZE)) { printf("Failure!\n");return;}
  do {
   if (Push(&s,__(4)__)) { printf("Failure!\n");return;}
   n = __(5)__:
  } while (n != 0);
  while (!StackEmpty(S)) {     /* 輸出B進(jìn)制的數(shù) */
   m = Pop(&S);
   if (m < 10) printf("Kd",m);  /* 小于10,輸出數(shù)字 */
   else printf("%c,m + 55);    /* 大于或等于10,輸出相應(yīng)的字符 */
  }
  printf("\n");
 }

試題五

  閱讀以下應(yīng)用說(shuō)明及Visual Basic程序代碼,將應(yīng)填入__(n)__處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。

[應(yīng)用說(shuō)明5.1]

  本應(yīng)用程序的窗體中有一個(gè)下拉式列表框(名稱為Combol)和兩個(gè)文本框(名稱分別為T(mén)xtl和Txt2)。運(yùn)行時(shí),用戶從Combol的列表中進(jìn)行選擇,程序就會(huì)將選中條目的內(nèi)容以及編號(hào)(從0開(kāi)始)分別在文本框 Txt1 和 Txt2 中顯示出來(lái)。

[程序代碼5.1]

 Private Sub Combol_C1ick()
  Txtl.Text = Combol.__(1)__
  Txt2.Text = Combol.__(2)__
 End Sub

  (注:可供(2)處選擇的選項(xiàng):List,Index,Listlndex,ListCount,Number)

[應(yīng)用說(shuō)明5.2]

  本應(yīng)用程序的運(yùn)行窗口如下圖所示:

  當(dāng)用戶在輸入框(名為T(mén)xtln)中輸入數(shù)值數(shù)據(jù),并從下拉式列表框(名為CmbOp)中選擇所需的運(yùn)算后,輸出框(名為T(mén)xtOut)中就會(huì)顯示運(yùn)算的結(jié)果。用戶單擊“清除”按鈕(名為CmdClear)后,輸入框和輸出框都清空。

開(kāi)發(fā)該應(yīng)用的部分程序代碼如下:

[程序代碼5.2]

 Private Sub CmbOp_Click()
  Dim DataIn As Double,DataOut as Double
  DataIn = __(3)__
  Select Case __(4)__
   Case "取整數(shù)部分"
    DataOut = Int(Dataln)
   Case "求平方根"
    If Dataln < O Then
     MsgBox$("負(fù)數(shù)不能開(kāi)平方!")
    Else
     DataOut = Sqr(Dataln)
    End If
   Case "取絕對(duì)值"
    DataOut = Abs(Dataln)
    (TxtOut.Text = str$(DataOut)
    __5)__
 End Sub

  從下列的2道試題(試題六至試題七)中任選1道解答。如果解答的試題數(shù)超過(guò)1道,則題號(hào)小的1道解答有效。

試題六

  閱讀下列函數(shù)說(shuō)明和 C 函數(shù),將應(yīng)填入__(n)__處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。

[函數(shù)6說(shuō)明]

  函數(shù)DelAInsB(LinkedList La,LinkedList lb,int key1,int key2,int len)的功能是,將線性表A中關(guān)鍵碼為keyl的結(jié)點(diǎn)開(kāi)始的len個(gè)結(jié)點(diǎn),按原順序移至線性表B中關(guān)鍵碼為key2的結(jié)點(diǎn)之前,若移動(dòng)成功,則返回0;否則返回-1。線性表的存儲(chǔ)結(jié)構(gòu)為帶頭結(jié)點(diǎn)的單鏈表,La為表A的頭指針,Lb為表B的頭指針。單鏈表結(jié)點(diǎn)的類型定義為:

 typedef struct node{
  int key;
  struct node*next;
 }*Linkedhist;

[函數(shù)6]

 int DelllnsB(LinkedLiSt La,LinkedList Lb,int keyl,int key2,int len)
 { LinkedList p,q,S,prep,pres;
  int k;
  if (!La->next || !Lb->next || len<=0) return-1;
  p = La->next; prep = La;
  while (p && p->key != keyl){   /* 查找表A中鍵值為key1的結(jié)點(diǎn) */
   prep = p; p = p->next;
  }
  if (!p) return -1;        /* 表A中不存在鍵值為key1的結(jié)點(diǎn) */
  q = p; k = 1;
  while (q && __(1)__){       /* 在表A中找出待刪除的len個(gè)結(jié)點(diǎn) */
   __(2)__: k++;
  }
  if (!q) return -1;        /* 表A中不存在要被刪除的len個(gè)結(jié)點(diǎn) */ ·
  S = Lb->next;__ (3)__;
  while (s && s->key != key2){   /* 查找表B中鍵值為key2的結(jié)點(diǎn) */
  pres = s; s = s->next;
  }
  if (!s)return -1;        /* 表B中不存在鍵值為key2的結(jié)點(diǎn) */
  __(4)__q->next;         /* 將表A中的len個(gè)結(jié)點(diǎn)刪除 */
  q->next:__(5)__
  pres->next = p;         /* 將len個(gè)結(jié)點(diǎn)移至表B */
  return 0;
 }

[1] [2] 下一頁(yè)

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