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

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

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

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

    1.求一个链表的所有元素的平均值
  typedef struct { int num;
    float ave;
  }Back;
  typedef struct node{ float data;
    struct node *next;
  } Node;
  Back *aveage(Node *head)
  { Back *p,*q;
    p=(Back *)malloc(sizeof(Back));
    if (head==NULL)
    { p->num=0;
     p->ave=0; }
    else
    { (1) ;
     p->num=q->num+1;
     (2) ; }
    retuen p;
  }
  main()
  { Node *h; Back *p;
    h=create(); /*建立以h为头指针的链表*/
    if (h==NULL) printf("没有元素");
    else { p=aveage(h);
     printf("链表元素的均值为:%6f",p->ave);
    }
  }
  答案:(1)q=aveage(head->next)
  (2)p->ave=(head->data+q->ave*q->num)/p->num

    2.希尔排序
  已知待排序序列data[n];希尔排序的增量序列为d[m],其中d[]序列降序排列,且d[m-1]=1。其方法是对序列进行m趟排序,在第i趟排序中,按增量d把整个序列分成d个子序列,并按直接插入排序的方法对每个子序列进行排序。
  希尔排序的程序为:
  void shellsort(int *data,int *d,int n,int m)
  { int i,j;
    for (i=0;i<m;i++)
    for (j=0; (1) ;j++)
    shell( (2) );
  }
  void shell(int *data,int d,int num,int n)
  { int i,j,k,temp;
    for (i=1; (3) ;i++)
    { j=0;
     temp=data[j+i*d];
     while ((j<i)&&( (4) ))
     j++;
     for (k=j;k<i;k++)
      data[k+1]=data[k];
     (5) ;
     (6) }
  }
  答案:(1)j<d
  (2)data,d,j,n
  (3)num+i*d<n
  (4)data[j+i*d]<temp
  (5)data[j]=temp

 

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

热点排行