首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 软件考试 > 考试试题 >

2008年12月程序员笔试考前练习(6)

2008-12-01 
程序员笔试考前练习

    2008年下半年软件考试因故推迟了,这未尝不是一件好事,对于那些准备还不够充分的考生来说,现在正是查漏补缺的好时机,本站为您整理了考前练习题,希望对您有所帮助,祝您考出好成绩!

    1.阅读下列函数说明和C函数,将应填入__(n)__处的字句写在答题纸的对应栏内。
  [函数1.1说明]
  函数palindrome(chars[])的功能是:判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。
  [函数1.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;
  }
  [函数1.2说明]
  函数f(char *str,char del)的功能是;将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。
  例如若str的值为“33123333435”,del的值为‘3’,调用此函数后,将输出三个子字符串,分别为“12”、“4”和“5”。
  [函数1.2]
  void f(char*str,char del)
  { int i,j,len;
  len = strlen(str);
  i = 0;
  while (i<len){
  while (__(3)__) i++;    /*忽略连续的标志字符*/
  /*寻找从str开始直到标志字符出现的一个子字符串*/
  j = i + 1;
  while (str[j] !=del && str[j] !=’\0’) j++;
  __ (4)__="\0";         /*给找到的字符序列置字符串结束标志*/
  printf(" %s\t",&str): ’
  __ (5)__;
  }
  }
  答案:
  (1)*pi == *pj
  (2)pi<pj 或 *pi != *pj
  (3)str== del
  (4)str[j]
  (5) i = j+1
  首先看第一题 条件:pi=S;pj=s+strlen(S)-1:pi就是首地址啦,pj就是末地址啦,我们需要把第一个和最后一个比较,第二和倒二比···....OK,那while ( pi<pj && __(1)__)很明显,pi要小于pj不然你咋比较?别问偶等怎么不比哦,偶K你!然后呢?看看如果条件成立会执行啥?pi++; pj--;哦,一目了然,分别往前往后移动,所以这里填写*pj==*pi,只有等才继续比、继续移动指针,不等肯定就不用比较啦!后面那个问,*pi != *pj,题目说了,不是就返回-1!
  第二题,有注释哦·不懂就提出来·不过偶想大家都会滴·

    2.试题
  阅读以下说明和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");
  }
  答案:
  (1)S->top
  (2)S->elem[S->top++]·
  (3)S->elem[-S->top]
  (4)n % B
  (5)n / B

 

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/

热点排行