【2004年软中华价格】2004年11月软考模拟试题(程序员下午试题)(1)

计算机技术 2020-12-31 网络整理 可可

【shitiku.jxxyjl.com--计算机技术】

试题一  阅读下列说明、流程图和算法,将应填入 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();

}

 

 

 


本文来源:https://shitiku.jxxyjl.com/jisuanjijishu/488.html

Copyright @ 2011- 考试题库网 All Rights Reserved. 版权所有

免责声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

 站长统计