软题库 移动APP 扫码下载APP 随时随地移动学习 培训课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷名称 2013年下半年程序员考试下午真题试题(案例分析)
考试中心《2013年下半年程序员考试下午真题试题(案例分析)》在线考试
试卷年份2013年下半年
试题题型【分析简答题】
试题内容

阅读以下说明和 C   函数,填充函数中的主缺,将解答填入答题纸的对应栏内。
【说明】
下面的函数 sort(int n,int a[])对保存在数在a中的整数序列进行非递减排序。由于该序列中的元素在一定范围内重复取值,因此排序方法是先计算出每个元素出现的次数并记录在数组b中,再从小到大顺序地排列各元素即可得到一个非递减有序序列。例如, 对于序列 6,5,6,9,6,4,8,6,5.  其元素在整数区间 [4,9]内取值,因此使数组元素 b[0] ~b[5]的下标。0~5分别对应数值4~9. 顺序地扫描序列的每一个元素并累计其出现的次数,即将 4的个数记入b[0],5的个数记b[1],依此类推,9的个数记入b[5]最后依次判断数组b的每个元素值,并将相应个数的数值顺序地写入结果序列即可。
对于上例,所得数组 b 的各个元素值如下:

那么在输出序列中写入 1 个 4、2个 5、4个 6、1 个 8、1 个 9,即得4,5,5,6,6,6,6,8,9,从而完成排序处理。
【C 函数】
void sort(int n ,int a[ ])
{    int  *b;
     int i ,k ,number;
int minimum  = a[0] , maximum = a[0];
/* minimum 和 maximum 分别表示数组a的最小、最大元素值*/

     for(i=1;i<n;i++){
         if(  (1) ) minimum=a[j];
         Else
             if( (2) ) maximum=a[i];
     }

     number = maximum - minimum + 1;
     if  (number<=1)   return;
b =  (int *)calloc (number ,sizeof(int)) ;
     if (!b) return;

     for(i=0;i<n;i++){  /*      计算数组a元素值出现的次数并计入数组b */
          k=a[i]-minimum; ++b[k];
}
/*按次序在数组 a 中写入排好的序列*/
     i=(3)  ;
     for( k=0;  k<number;  k++  )
           for(;  (4)   ; --b[k]   )
                 a [i++]  = minimum  +(5);
}


相关试题

推荐文章
合作网站内容