国产18禁黄网站免费观看,99爱在线精品免费观看,粉嫩metart人体欣赏,99久久99精品久久久久久,6080亚洲人久久精品

歷年計算機的軟考程序員筆試部分真題

時間:2016-05-23 15:50:00   來源:無憂考網(wǎng)     [字體: ]

試題二

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

[函數(shù)2.1說明]

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

[函數(shù)2.1]

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

[函數(shù)2.2說明]

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

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

[函數(shù)2.2]

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

試題三

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

  (1)在Visual Basic中,工程文件、窗體文件和標準模塊文件的擴展名是什么?

  請從下列選項中選擇:

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

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

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

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

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

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

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

[說明]

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

 #define KAXSIZE 32
 typedef struct{
  int *elem;  /* 棧的存儲區(qū) */
  int max;   /* 棧的容量,即找中最多能存放的元素個數(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進制的數(shù) */
   m = Pop(&S);
   if (m < 10) printf("Kd",m);  /* 小于10,輸出數(shù)字 */
   else printf("%c,m + 55);    /* 大于或等于10,輸出相應(yīng)的字符 */
  }
  printf("\n");
 }


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

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

[函數(shù)6說明]

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

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

試題八

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

[程序8說明]

  程序8用于計算某公司每個職工應(yīng)繳納的個人所得稅額和全體職工繳納的個人所得稅總額。職工的當月收入(工資或薪金)通過鍵盤輸入,每次輸入一個職工的工號和工資(或薪金)。由于該公司的工資或薪金是不定時發(fā)放的,所以輸入過程中每個職工的收入會出現(xiàn)多次輸入,整個輸入以工號小于等于0結(jié)束。

  假設(shè)個人所得稅法規(guī)定;個人收入所得,按月計稅,以每月收入總額減除免稅金額800元后的余額作為該月的月應(yīng)納稅所得額,適用稅率如下表所示。

  上表表明,個人收入所得稅是按照超額累進的稅率來征收的。

  設(shè)一個人的月應(yīng)納稅所得額為K(元),用下面的公式計算其應(yīng)繳納的個人所得稅額S(元):

  若0

  若500

  若2000

  若5000

  例如,某人某月工資總額為4100元,減去800元后,應(yīng)納稅所得額為3300元,其應(yīng)繳納的個人所得稅額為500*5%+1500*10%+1300*15%=370元。

[程序8]

 #include 
 #define MaxNum 50
 #define BASE 800     /*免稅金額基數(shù)*/
 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的職工在數(shù)組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)__;         /*計算月應(yīng)納稅所得額*/
   S=0;             /*月應(yīng)納稅額賦初值*/
   if (K > 0) {
    for (j=1;j<=9;j++)
     if(__(4)__)        /*月應(yīng)納稅所得額超過第j級*/
      S=S+(paylevel[j]-paylevel[j-1])*taxPrate[j-1]/100;
     else{ S=S+(__ (5)__)*taxPrate[j-1]/100;break;}
   }
   printf("職工%d應(yīng)繳納的個人所得稅額:%10.21f\n",employee[i].Id,S);
   sum += S;
  }
  printf("全體職工個人所得稅總額:%10,21f\n",sum);
 }