黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

查看全部128種考試
軟件水平考試
 考試動態 報考指南 歷年真題 模擬試題 復習資料 心得技巧 專業英語 技術文章 軟考論壇 考試用書
 程序員 軟件設計師 網絡管理員 網絡工程師 系統分析師 數據庫系統工程師
1
2
3
4
5
6
7
8
9
10
xihuyu2000  
【字體: 2004年上半年程序員下午試題及答案
2004年上半年程序員下午試題及答案

試題一是必答題

試題一

  閱讀下列說明、流程圖和算法,將應填入__(n)__處的字句寫在答題紙的對應欄內.
[流程圖說明]
  下面的流程圖用N—S盒圖形式描述了數組A中的元素被劃分的過程.其劃分方法是:
  以數組中的第一個元素作為基準數,將小于基準數的元素向低下標端移動,而大于基準數的元素向高下標端移動.當劃分結束時,基準數定位于A[i],并且數組中下標小于i的元素的值均小于基準數,下標大子i的元素的值均大于基準數。設數組A的下界為low,上界為high,數組中的元素互不相同。例如,對數組(4,2,8,3,6),以4為基準數的劃分過程如下:
[流程圖]
  
[算法說明]
  將上述劃分的思想進一步用于被劃分出的數組的兩部分,就可以對整個數組實現遞增排序。設函數int p(int A[],int low,int high)實現了上述流程圖的劃分過程并返回基準數在數組A中的下標。遞歸函數void sort(int A[],iht L,int H)的功能是實現數組A中元素的遞增排序。
[算法]
 void sort(int A[],iht l,int H) {
 if ( L < H ) {
  k=p(A,L,R);     //p()返回基準數在數組A中的下標
  sort(__ (4)__;     //小于基準數的元素排序
  sortl__ (5)__);    //大于基準數的元素排序
  }
 }

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


試題二

  閱讀下列函數說明和C函數,將應填入__(n)__處的字句寫在答題紙的對應欄內。
[函數2.1說明]
  函數palindrome(chars[])的功能是:判斷字符串s是否為回文字符串,若是,則返回0,否則返回-1。若一個字符串順讀和倒讀都一樣時,稱該字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。
[函數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;
 }
[函數2.2說明]
  函數f(char *str,char del)的功能是;將非空字符串str分割成若干個子字符串并輸出,del表示分割時的標志字符。
  例如若str的值為“33123333435”,del的值為‘3’,調用此函數后,將輸出三個子字符串,分別為“12”、“4”和“5”。
[函數2.2]
 void f(char*str,char del)
 { int i,j,len;
  len = strlen(str);
  i = 0;
  while (i<len){
   while (__(3)__) i++;    /*忽略連續的標志字符*/
  /*尋找從str[i]開始直到標志字符出現的一個子字符串*/
   j = i + 1;
  while (str[j] !=del && str[j] !='\0') j++;
  __ (4)__="\0";         /*給找到的字符序列置字符串結束標志*/
  printf(" %s\t",&str[i]): ’
  __ (5)__;
  }
 }

試題三

  以下是與Visual Basic開發應用有關的5個問題.對每一個問題,請將解答填入答題紙的對應欄內。
  (1)在Visual Basic中,工程文件、窗體文件和標準模塊文件的擴展名是什么?
  請從下列選項中選擇:
  prg、prj、exe、vbp、rom、frm、win、fra,std、bas、vbs、Vbm

  (2)設某窗體上有一個命令按鈕,其名稱為 CmdSave,運行時該按鈕上顯示有“保存(S)”字樣的信息。為使熱鍵 ALT+S 與該命令按鈕相關聯,應該對按鈕 CmdSave 的 Caption屬性設置什么樣的屬性值?

  (3)設某窗口內有一個圖像框 Image1,以及兩個命令按鈕“放大”和“縮小”。單擊“放大”按鈕就會使該圖像框的長和寬都放大10%;單擊“縮小”按鈕就會使該圖像框的長和寬都縮小10%(該圖像框的左上角不動)。請分別寫出這兩個命令按鈕的單擊事件過程中的程序代碼。

  (4)為使某個單選按鈕初始時默認被選中,在開發時應怎樣做?

  (5)若有語句 Tmpval=MsgBox(非法操作!,ybOKCancel+vbCritical,"提示"),請簡要描述程序運行時彈出的消息框的主要特征。

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

試題四

  閱讀以下說明和C代碼,將應填入__(n)__處的字句寫在答題紙的對應欄內。
[說明]
  函數 MultibaseOutput(long n,int B)的功能是:將一個無符號十進制整數 n 轉換成 B(2≤B≤16)進制數并輸出。該函數先將轉換過程中得到的各位數字入棧,轉換結束后再把 B 進制數從棧中輸出。有關棧操作的諸函數功能見相應函數中的注釋。C代碼中的符號常量及棧的類型定義如下:
 #define KAXSIZE 32
 typedef struct{
  int *elem;  /* 棧的存儲區 */
  int max;   /* 棧的容量,即找中最多能存放的元素個數 */
  int top;   /* 棧頂指針 */ 
 }Stack;
[C代碼]
 int lnitStack(Stack *S,int n)  /* 創建容量為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)   /* 將整數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進制的數 */
   m = Pop(&S);
   if (m < 10) printf("Kd",m);  /* 小于10,輸出數字 */
   else printf("%c,m + 55);    /* 大于或等于10,輸出相應的字符 */
  }
  printf("\n");
 }

試題五

  閱讀以下應用說明及Visual Basic程序代碼,將應填入__(n)__處的字句寫在答題紙的對應欄內。
[應用說明5.1]
  本應用程序的窗體中有一個下拉式列表框(名稱為Combol)和兩個文本框(名稱分別為Txtl和Txt2)。運行時,用戶從Combol的列表中進行選擇,程序就會將選中條目的內容以及編號(從0開始)分別在文本框 Txt1 和 Txt2 中顯示出來。
[程序代碼5.1]
 Private Sub Combol_C1ick()
  Txtl.Text = Combol.__(1)__
  Txt2.Text = Combol.__(2)__
 End Sub
  (注:可供(2)處選擇的選項:List,Index,Listlndex,ListCount,Number)
[應用說明5.2]
  本應用程序的運行窗口如下圖所示:

  當用戶在輸入框(名為Txtln)中輸入數值數據,并從下拉式列表框(名為CmbOp)中選擇所需的運算后,輸出框(名為TxtOut)中就會顯示運算的結果。用戶單擊“清除”按鈕(名為CmdClear)后,輸入框和輸出框都清空。
開發該應用的部分程序代碼如下:
[程序代碼5.2]
 Private Sub CmbOp_Click()
  Dim DataIn As Double,DataOut as Double
  DataIn = __(3)__
  Select Case __(4)__
   Case "取整數部分"
    DataOut = Int(Dataln)
   Case "求平方根"
    If Dataln < O Then
     MsgBox$("負數不能開平方!")
    Else
     DataOut = Sqr(Dataln)
    End If
   Case "取絕對值"
    DataOut = Abs(Dataln)
    (TxtOut.Text = str$(DataOut)
    __5)__
 End Sub

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

試題六

  閱讀下列函數說明和 C 函數,將應填入__(n)__處的字句寫在答題紙的對應欄內。
[函數6說明]
  函數DelAInsB(LinkedList La,LinkedList lb,int key1,int key2,int len)的功能是,將線性表A中關鍵碼為keyl的結點開始的len個結點,按原順序移至線性表B中關鍵碼為key2的結點之前,若移動成功,則返回0;否則返回-1。線性表的存儲結構為帶頭結點的單鏈表,La為表A的頭指針,Lb為表B的頭指針。單鏈表結點的類型定義為:
 typedef struct node{
  int key;
  struct node*next;
 }*Linkedhist;
[函數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的結點 */
   prep = p; p = p->next;
  }
  if (!p) return -1;        /* 表A中不存在鍵值為key1的結點 */
  q = p; k = 1;
  while (q && __(1)__){       /* 在表A中找出待刪除的len個結點 */
   __(2)__: k++;
  }
  if (!q) return -1;        /* 表A中不存在要被刪除的len個結點 */ ·
  S = Lb->next;__ (3)__;
  while (s && s->key != key2){   /* 查找表B中鍵值為key2的結點 */
  pres = s; s = s->next;
  }
  if (!s)return -1;        /* 表B中不存在鍵值為key2的結點 */
  __(4)__q->next;         /* 將表A中的len個結點刪除 */
  q->next:__(5)__
  pres->next = p;         /* 將len個結點移至表B */
  return 0;
 }

[NextPage]


試題七

  閱讀以下應用說明、屬性設置及VisualBasic程序代碼,將應填入__(n)__處的字句寫在答題紙的對應欄內。
[應用說明7]
  本應用程序的運行窗口如下圖所示:

  只要用戶單擊“閃爍”按鈕,文字“歡迎光臨”就會以0.3秒消失、0.3秒顯示反復進行閃爍;單擊“停止”按鈕時,閃爍停止,恢復圖示的初態。
  在開發過程中,需要設置的屬性如下:
[屬性設置7]

對象 對象名 屬性名 屬性值
窗體 Frm1 Caption 閃爍顯示演示
標簽 Labe1 Caption 歡迎光臨
命令按鈕 CmdF Caption 閃爍
命令按鈕 CmdT Caption 停止
定時器 Timer1 Enabled __(1)__
    Interval __(2)__

  在開發過程中,需要編寫的程序代碼如下;
[程序代碼7]
 Private Sub CmdF Click()
  Timerl.__(3)__ = True
  Label.Visible = False
 End Sub
 Private Sub Timerl_ Timer()
  __(4)__ = not Label.Visible
 End Sub
 Private Sub CmdT Click()
  Timerl.Enabled = __(5)__
   Label.Visible = true
 End Sub

從下列的2道試題(試題八至試題九)中任選1道解答,如果解答的試題數超過1道,則題號小的1道解答有效。

試題八

  閱讀下列程序說明和C程序,將應填入__(n)__處的字句寫在答題紙的對應欄內。
[程序8說明]
  程序8用于計算某公司每個職工應繳納的個人所得稅額和全體職工繳納的個人所得稅總額。職工的當月收入(工資或薪金)通過鍵盤輸入,每次輸入一個職工的工號和工資(或薪金)。由于該公司的工資或薪金是不定時發放的,所以輸入過程中每個職工的收入會出現多次輸入,整個輸入以工號小于等于0結束。
  假設個人所得稅法規定;個人收入所得,按月計稅,以每月收入總額減除免稅金額800元后的余額作為該月的月應納稅所得額,適用稅率如下表所示。

級數 月應納稅所得額 適用稅率(%)
1
2
3
4
5
6
7
8
9

 不超過500元的部分
 501元~2000元的部分
 2001元~5000元的部分
 5001元~20000元的部分
 20001元~40000元的部分
 40001元~60000元的部分
 60001元~80000元的部分
 80001元~100000元的部分
 超過100000元的部分

5
10
15
20
25
30
35
40
45

  上表表明,個人收入所得稅是按照超額累進的稅率來征收的。
  設一個人的月應納稅所得額為K(元),用下面的公式計算其應繳納的個人所得稅額S(元):
  若0<K≤500,則S=K×5%;
  若500<K≤2000,則S=500×5%+(K—500)×10%:
  若2000<K≤5000,則S=500×5%+1500×10%+(K-2000)×15%:
  若5000<K≤20000,則S=500×5%+1500×10%+3000×15%+(K-5000)×20%:
  例如,某人某月工資總額為4100元,減去800元后,應納稅所得額為3300元,其應繳納的個人所得稅額為500*5%+1500*10%+1300*15%=370元。
[程序8]
 #include <stdio.h>
 #define MaxNum 50
 #define BASE 800     /*免稅金額基數*/
 int paylevel[]={0,500,2000,5000,20000,40000,60000,80000,100000,100000¨:
 int taxPrate[]={5,10,15,20,25,30,35,40,45): /*稅率表*/
 typedef struct{
  int ld;    /*職工的工號*/ .
  long Salary;  /*職工的工資*/
 }Info;
 /* 查找工號為Id的職工在數組employee中的下標,返回值為0表示沒有 */
 int find(int ld,Info employee[],int m){
  int j;
  employee[0].Id=Id;
  for(j=m;__(1)__;j--);
   return j;
 }
 void main(void)
 { Info employeeCHaxNum+1];
  long Wage;
  double sum s 0,K,S:
  int i,j,N=0,Code;
  scanf("M%ld",&Code,&Wage);   /*讀入職工號、工資或薪金*/
  while(Code>0) {
   i=find(Code,employee,N);
   if (i>0)employee[i].Salary += Wage:
   else{ __ (2)__;
   employee[N].Id=Code;employee[N].Salary=Wage;
   }
   scanf("%d%ld",&Code,&Wage):
  }
  for (i=1;i<=N;i++){
   K = __(3)__;         /*計算月應納稅所得額*/
   S=0;             /*月應納稅額賦初值*/
   if (K > 0) {
    for (j=1;j<=9;j++)
     if(__(4)__)        /*月應納稅所得額超過第j級*/
      S=S+(paylevel[j]-paylevel[j-1])*taxPrate[j-1]/100;
     else{ S=S+(__ (5)__)*taxPrate[j-1]/100;break;}
   }
   printf("職工%d應繳納的個人所得稅額:%10.21f\n",employee[i].Id,S);
   sum += S;
  }
  printf("全體職工個人所得稅總額:%10,21f\n",sum);
 }

試題九

  閱讀以下應用說明及VisualBasic程序代碼,將應填入__(n)__處的字句寫在答題紙的對應欄內.
[應用說明9]
  本應用程序的運行窗口如下圖所示:

  窗口中的三個文本框和兩個按鈕名稱分別為Txt_salary、Txt_base、ht_tax、Cmd compute和Cmd_quit.運行時,文本框Txt_base中存放的是免稅金額基數(應扣除的基本費用)。當用戶在文本框ht_salary中輸入月收入(工資或薪金)并單擊“計算”按鈕Crud_compute后,Txt_tax框中就顯示計算所得的應納稅額。文本框Txt_base和Txt_tax在運行時不接受用戶輸入,Txt_base的內容以灰色顯示。
  個人工資(或薪金)所得稅是按照超額累進的稅率來征收的,方法是:以每月收入總額減去免稅金額基數后的余額作為該月的月應納稅所得額,再將應納稅所得額按相應級數采用相應的稅率進行累進計算.目前的免稅金額基數為800元,稅率如下表所示:
  個人工資(或薪金)所得稅是按照超額累進的稅率來征收的,方法是:以每月收入總額減去免稅金額基數后的余額作為該月的月應納稅所得額,再將應納稅所得額按相應級數采用相應的稅率進行累進計算.目前的免稅金額基數為800元,稅率如下表所示:

級數 月應納稅所得額 適用稅率(%)
1
2
3
4
5
6
7
8
9

  不超過500元的部分
  501元~2000元的部分
  2001元~5000元的部分
  5001元~20000元的部分
  20001元~40000元的部分
  40001元~60000元的部分
  60001元~80000元的部分
  80001元~100000元的部分
  超過100000元的部分

5
10
15
20
25
30
35
40
45

  設一個人的月應納稅所得額為K(元),用下面的公式計算其應繳納的個人所得稅額S(元):
  若0<K≤500,則S=K×5%;
  若500<K≤2000,則S=500×5%+(K—500)×10%:
  若2000<K≤5000,則S=500×5%+1500×10%+(K-2000)×15%:
  若5000<K≤20000,則S=500×5%+1500×10%+3000×15%+(K-5000)×20%:
  例如,某人某月工資總額為4100元,減去800元后,應納稅所得額為3300元,其應繳納的個人所得稅額為500*5%+1500*10%+1300*15%=370元。
  在開發過程中,需要編寫的程序代碼如下:
[程序代碼]
 Option Base 0
 Private Sub Cmd compute-C1ick()
  Dim paylevel,taxPrate
  paylevel=Array(0,500,2000,5000,20000,40000,60000,80000,100000,1000001)
  taxPrate=Array(5,10,15,20,25,30,35,40,45)
  K=__(1)__
  S = 0
  If (K>0) Then
   For j=1 To 9
    If __(2)__ Then
     S=S+(paylevel(j)-paylevel(j-1))*taxPrate(j-1)/100
    Else
     S=S+(__(3)__)*taxPrate(j-1)/100
     Exit For
    End lf
   Next j
  End lf
  __(4)__=Str$(S)
 End Sub

 Private Sub Cmd_quit_C1ick()
 End
 End Sub

 Private Sub Form_Load()
  Txt_tax.Text = " "
  Txt_salary.Text = " "
  Txt_base.Text = 800
  Txt_tax.Locked = True
  Txt_base.Enabled =__(5)__
 End Sub

                                    答案

試題一      

(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,及其等價形式,表達式的值為真也正確
(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)
  
試題六

(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

轉帖于:軟件水平考試_考試吧
文章搜索  
看了本文的網友還看了:
軟件水平考試權威輔導教材: 訂書電話:010-62168566  更多>>>
網友評論
昵 稱: *  評 分: 1分 2分 3分 4分 5分
標題:   匿名發表    (共有條評論)查看全部評論>>
版權聲明 -------------------------------------------------------------------------------------
  如果軟件水平考試網所轉載內容不慎侵犯了您的權益,請與我們聯系,我們將會及時處理。如轉載本軟件水平考試網內容,請注明出處。
關于本站  網站聲明  廣告服務  聯系方式  付款方式  站內導航  客服中心  友情鏈接  考試論壇  網站地圖
Copyright © 2004-2008 考試吧軟件水平考試網 All Rights Reserved    
中國科學院研究生院權威支持(北京) 電 話:010-62168566 傳 真:010-62192699
百度大聯盟黃金認證  十佳網絡教育機構  經營許可證號:京ICP060677
主站蜘蛛池模板: 澳门一级毛片手机在线看 | 成人在线视频在线观看 | 极品美女啪啪无套 | 国产福利在线观看 | 很黄很黄很刺激的视频免费 | 欧美日韩不卡视频一区二区三区 | 日韩狠狠操 | 日本宅男午夜免费永久网站 | 乡村乱肉情欲小说 | 黄色丝袜网站 | 日韩小片 | 免费一级a毛片在线播 | 亚洲第一成年网 | 亚洲免费a | 欧美成人在线免费 | 最近的2019中文字幕免费一页 | 韩国免费一级成人毛片 | 高清一级做a爱过程不卡视频 | 99视频有精品 | 无遮羞禁黄动漫在线观看 | 欧美亚洲另类一区中文字幕 | 亚洲欧美中文日韩在线v日本 | 一个人在线视频免费观看www | 免费网站成人亚洲 | 午夜综合网 | 五月综合激情久久婷婷 | 国产无套在线观看视频 | 可以在线看黄的网站 | 天堂中文字幕在线 | 黄色成人在线 | 欧美中文字幕 | 午夜婷婷网 | 天天插天天干 | 欧美激情人成日本在线视频 | 日批在线观看 | h小视频在线| 日韩中文字幕在线免费观看 | 国产精品黄在线观看免费网站 | 天堂成人精品视频在线观 | 天天操天天干天天拍 | 欧美青青草 |