软考真题
第27题
【说明】
规定整型数组a中的元素取值范围为[0, N),函数usrSort(int n, int a[])对非负整型数组a的前n个元素进行计数排序排序时,用temp_arr[i]表示i在数组a中出现的次数,因此可以从0开始按顺序统计每个非负整数在a中的出现次数,然后对这些非负整数按照从小到大的顺序,结合其出现次数依次排列
例如,对含有10个元素{0,8,5,2,0,1,4,2,0,1}的数组a[]排序时,先计算出有3个0、2 个1、2个2、1个4、1个5和1个8,然后可确定排序后a的内容为{0,0,0,1,1,2,2,4,5,8}。
下面代码中用到的memset函数的原型如下,其功能是将p所指内存区的n个字节都设置为ch的值。
void * memset(void*p,int ch, size_t n);
【c代码】
#include
#include
#include

#define N 101

void printArr(int a[],int n);
void usrSort(int n,int a[]);

int main( )
{
int a[10]={0,8,5,2,0,1,4,2,0,1};
printArr(a,sizeof(a)/sizeof(int));
( ) ; //调用usrSort ( )数组a进行升序排序
printArr(a,sizeof(a)/sizeof(int));
return 0;
}
void printArr(int a[],int n)
{
int i;
for(i=0;i printf("%d ”,a[i]);
printf(”/n”);
}
void usrSort (int n, int a [])
{
int i, k;
int *temp_arr; //用temp_arr [i]表示i在a中出现的次数
temp_arr=(int *)malloc(N * sizeof(int));
if (!temp_arr)return;
//将所申请并由temp_arr指向的内存区域清零
memset ( ( ));
for(i=0; i temp_arr [ ( ) ] ++;
k=0;
for (i=0; i int cnt; //cnt表示i在数组a中的出现次数
( );
while(cnt > 0){
a[k]=i; //将i放入数组a的适当位置
( );
cnt-;
}
}
free(temp_arr);
}
(共15分)
阅读以下说明和C代码,填写程序中的空缺,将解答写入答题纸的对应栏内。
第9章C程序设计
正确答案:
你的答案:
请先在App中激活(应用市场搜“软考真题”)
知识点:
试卷:
2019年 下半年 下午试卷 案例

笔记

Crossea

请先在App中激活(应用市场搜“软考真题”)

2023-09-13


deng

请先在App中激活(应用市场搜“软考真题”)

2023-10-31


答题卡
加油