首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C代码,填写程序中的空缺,将解答写入答题纸的对应栏内。 【说明】 规定整型数组a中的元素取值范围为[0,N),函数usrSort(int n,int a[])对非负整型数组a的前n个元素进行计数排序。排序时,用temp_arr[i]表
阅读以下说明和C代码,填写程序中的空缺,将解答写入答题纸的对应栏内。 【说明】 规定整型数组a中的元素取值范围为[0,N),函数usrSort(int n,int a[])对非负整型数组a的前n个元素进行计数排序。排序时,用temp_arr[i]表
admin
2021-03-24
41
问题
阅读以下说明和C代码,填写程序中的空缺,将解答写入答题纸的对应栏内。
【说明】
规定整型数组a中的元素取值范围为[0,N),函数usrSort(int n,int a[])对非负整型数组a的前n个元素进行计数排序。排序时,用temp_arr
表示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<stdio.h>
#include<stdlib.h>
#include<string.h>
#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));
(1)
; //调用usrSort()对数组a进行升序排序
printArr(a,sizeof(a)/sizeof(int));
return 0;
}
void printArr(int a[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%d",a
);
printf("in");
}
void usrSort(int n,int a[])
{
int i,k;
int
*
temp_arr; //用temp_arr
表示i在a中出现的次数
temp_art=(int
*
)malloc(N
*
sizeof(int));
if(!temp_arr)return;
//将所申请并由temp_art指向的内存区域清零
memset(
(2)
);
for(i=0;i<n;i++)
temp_err[
(3)
]++;
k=0;
for(i=0;i<N; i++){
int cnt; //cnt表示i在数组a中的出现次数
(4)
;
while(cnt>0){
a[k]=i; //将i放入数组a的适当位置
(5)
;
cnt-;
}
}
free(temp_arr);
}
选项
答案
(1)usrSort(10,a)或等效形式,a可替换为&a,&a[0]。 (2)temp_art,0,N
*
sizeof(int)或等效形式,其中N和sizeof(int)可替换为101、4。 (3)a[i]或
*
(a+i)或等效形式。 (4)cnt=temp_arr[i]或cnt=
*
(temp_arr+i)或等效形式。 (5)k++或++k或k=k+1或k+=1或等效形式。
解析
本题考查考生对C程序基本结构、函数定义及调用和运算逻辑的理解和应用
根据空(1)所在语句的注释,明确是对函数usrSort进行调用。usrSort的原型声明为“void usrSort(int n,int a[]”,调用时第一个参数为一般的传值调用,实参需给出需要排序的数组元素个数,为10个,第二个参数是数组参数,需要将数组空间的首地址作为实参,用数组名或下标为0的数组元素取地址都可以,因此空(1)应填入“usrSort(10,a)”或其等效形式。
空(2)所在语句是调用memset对申请的存储区域进行初始化。根据注释,要求将temp_arr指向的内存区域清零,根据声明memset时的形参要求,结合调用malloc的实参值N
*
sizeof(int),可知函数调用为memset(temp_arr 0,N
*
sizeof(int))。
空(3)所在的循环语句遍历数组a[]的所有元素,将元素a
作为temp_arr的下标,从而使得temp_arr[a
]表示了a
表示的值在数组a中出现的次数。
在数组a中安排最后排序的元素时,for循环控制需要排列的元素i(即出现个数大于0者),根据注释“cnt表示i在数组a中的出现次数”,可知空(4)处应设置cnt的初始值,为“temp_arr
”。接下来通过while循环,根据i出现的次数将i逐个放入数组中,每放入1个i,cnt自减,相应地,k需要自增,以给出下一个i要放入的数组元素,因此空(5)处应填入“k++”或其等效形式。
转载请注明原文地址:https://kaotiyun.com/show/y2jZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
计算机病毒是一段程序,一般隐藏在______中。
若在Excel的A1单元格中输入函数“=SUM(1,12,false)”,按回车键后,则A1单元格中显示的值为________。
在Excel2010中,一个宗箱的函数计算包括()。
某工厂信息处理技术员设计了如下统计表:该表设计中包含的问题以及改进方法是______。
解决网络安全问题的技术分为主动防御保护技术和被动防御保护技术两大类,__________属于被动防御保护技术。
阅读以下说明,回答问题1至问题5,将解答填入答题纸对应的解答栏内。说明某公司内部有一个采用TCP/IP作为传输协议的100BASE-TX局域网,包括1台服务器和20台客户机,通过一台16端口的交换机与一台8端口共享集线器级连,其网络结构如图11所
综合布线系统由6个子系统组成,将图1-1中(1)~(6)处空缺子系统的名称填写在答题纸对应的解答栏内。为满足公司要求,通常选用什么类型的信息插座?
资源记录文件位于/var/named目录下。这个目录是在以上的(1)文件中定义的。从备选选项中选择(6)~(10)处的解答。在问题4的named.abc.net文件中,出现了5种类型的记录。其中SOA是(6),NS是(7),MX是(8),A是
随机试题
阅读关于“人口增长模式”的资料,按要求完成教学设计。材料一《普通高中地理课程标准(实验)》的内容要求:“分析不同人口增长模式的主要特点及地区分布。”材料二某版本教科书中关于“人口增长模式”的部分内容。
林语堂说,汉语的“单音节性”造就了中国文学的【】
传染病消毒的种类有()
A.大肠黏膜异型增生的腺上皮突破基底膜,但未穿过黏膜肌层到达黏膜下层B.大肠黏膜异型增生的腺上皮穿过黏膜肌层而到达黏膜下层C.大肠黏膜异型增生的腺上皮未突破基底膜D.黏膜固有膜内出现脂肪细胞岛E.黏膜上皮黏液分泌亢进大肠癌
某炸礁工程,签订施工合同后项目部组织了相应的耙吸船、炸礁船、抓斗船等进场施工,发现该施工河段属于2个海事局共同管辖,在办理了各种相应的手续后,于合同规定日期正常开工。在节日的安全大检查中,发现了如下一些问题:(1)项目部尚未有制订防护性安全技术措
下列费用中,基本医疗保险基金可以支付的是()。
在采用实际利率法分摊未确认的融资费用时,如果租赁资产和负债以最低租赁付款额的现值为入账价值,且采用租赁合同规定的利率作为折现率,则融资费用分摊率应采用的是()。
通货紧缩的危害有()。
在国务院公布的第一批80处国家级抗战纪念设施、遗址名录中,山东有8处入选。下列人选国家级抗战纪念设施、遗址名录的是()。
(2018年江西)水是人类及一切生物赖以生存的不可缺少的重要物质。关于水的表述,下列选项错误的是()。
最新回复
(
0
)