当前所在位置:珠峰网资讯 >> 计算机 >> IT教育 >> 正文
04年11月软考模拟程序员下午试题
发布时间:2008/2/25 8:40:51 来源:xue.net 编辑:城市教育在线
试题一 阅读下列说明、流程图和算法,将应填入 n 处的字句写在答题纸的对应栏内。
[流程图说明]
    下面的流程图用N-S盒图形式描述了在一棵排序二叉树中查找元素的过程,节点有三个成员:data,left,right。其查找的方法是:首先与树的根节点的元素值进行比较:若相等则找到,返回此结点的地址;若要查找的元素小于根节点的元素值,则指针指向此结点的左子树,继续查找;若要查找的元素大于根节点的元素值,则指针指向此结点的游子树,继续查找。直到指针为空,表示此树中不存在所要查找的元素。
 
[算法说明]
       将上题的排序二叉树中查找元素的过程用递归的方法实现。其中NODE是自定义类型:
       typedef struct node {
              int data;
              struct node *left;
              struct node *right;
       } NODE;
[算法]
       NODE *SearchSortTree(NODE *tree,int e) {
              if(tree != NULL)
{     if (tree->data < e)
  (4)  ; //小于查找左子树
    else if (tree->data < e)
                                (5)  ;//大于查找左子树
                     else return tree;
              }
              return tree;
       }
试题二
阅读下列函数说明和C函数,将应填入 n 处的字句写在答题纸的对应栏内。
[函数2.1说明]
函数strcat(char s[], char t[])的功能是:将字符串t复制连接字符串s的尾部,并返回新字符串的首地址作为函数值。例如:若s=“abcd”,t=“efg”,则新字符串应该是“abcdefg”。
[函数2.1]
char *strcat(char s[], char t[])
{     char *p;
       p = s + strlen(s)-1
       while(   (1)     ) {
                 (2)   ;
       }
       *p = ‘\0’;
       return s;
}
[函数2.2说明]
       函数f(char *str, char del)的功能是:将非空字符串str中的指定字符del删除,形成一个新字符串仍存放在str所指内存单元中。
       例如若str的值为“33123333435”,del的值为‘3’,调用此函数后,新字符串为:“1245”。
[函数2.2]
void f(char *str, char del)
{
       int i, j, len;
       len=strlen(str);
       i=j=0;
       while(i<len) {
              if (    (3)    )
    (4)     = str[i];
              i++;
       }
            (5)    ;
}
试题三
       阅读以下说明和C代码,将应填入 n 处的字句写在答题纸的对应栏内。
[说明]
下面程序中函数fun的功能是:在含有10 个元素的s数组中查找最大数,及最大数所在位置(即,下标值),最大数可能不止一个。最大数作为函数值返回,最大数的个数通过指针变量n传回,所在位置由数组pos传回。
   例如:
        若输入 2 8 5 7 8 4 5 3 2 8
   则应输出:
          The max: 8
          Total: 3 //最大数出现次数
          The positions 1 4 9     
#include<stdio.h>
   #define M 10
   int fun(int *a, int *n, int pos[])
{   int i, k, max=-32767;
         (1)     
         for(i=0; i<M; i++)
         if(    (2)   ) max=a[i];
         for(i=0; i<M; i++)
                     if(   (3)   ) pos[k++]=i;
           *n=k;
      return max;
        }
     main()
 { int a[M], pos[M], i=0, j, n;
        printf("Enter 10 number :");
       for(i=0; i<M; i++)scanf("%d", 4);
          j=fun(     (5)     );
       printf("The max: %d\n", j);
       printf("Total: %d",n);
       printf("The position:");
        for(i=0; i<n; i++ ) printf("%4d", pos[i]);
       printf("\n");
        }
 
试题四  (试题四和试题五选做一题)
    阅读下列函数说明和C函数,将应填入   n    处的字句写在答题纸的对应栏内。
[函数说明]
  函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组dat(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组dat中,最后调用函数WriteDat()把结果dat输出到文件out.dat中。
  条件:从字符串中间一分为二,右边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
例如:位置                 0 1 2 3 4 5 6 7
源字符串               h g f e a b c d
则处理后字符串       d c b a h g f e
  部分源程序已给出。
  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include<stdio.h>
#include<string.h>
char dat[20][80];
void jsSort()
{     int i,j,k,strl;
       char ch;
       for(i=0;i<20;i++)
       {     strl=strlen(dat[i]);
              for(j=   (1)   ;j<strl;j++)//处理后半部分的字符串
                 for(k=j+1;k<strl;k++)
                  if(    (2)    )
                   {
                         ch=dat[i][j];
                         dat[i][j]=dat[i][k];
                         dat[i][k]=ch;
                   }
              for(j=0;     (3)     ;j++)
              {
                     ch=dat[i][j];
                     dat[i][j]=dat[i][(strl+1)/2+j];
                     dat[i][(strl+1)/2+j]=ch;
              }
       }
}
readDat()
{     FILE *in;
       int i=0;
       char *p;
            (4)     ;
       while(i<20&&fgets(dat[i],80,in)!=NULL)
       {     p=strchr(dat[i],’\n’);
              if(p)*p=0;
              i++;
       }
       fclose(in);
}
writeDat()
{     FILE *out;
       int i;
       out=fopen(“out.dat”,”w”);
       for(i=0;i<20;i++)
       {     printf(“%s\n” ,dat[i]);
              fprintf(    (5)    );
       }
       fclose(out);
}
void main()
{     readDat();
       jsSort();
       writeDat();
}
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved