首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:
下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:
admin
2018-03-28
27
问题
下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<stdio.h>
#include<malloc.h>
#define N 10
typedef struct ss
{
char num[10];
int s;
}STU;
STU* fun(STU a[],int m)
{
STU b[N],*t;
int i,j,k;
/*********found*********/
*t=calloc(m,sizeof(STU))
for(i=0;i<N;i++)
b
=a
;
for(k=0;k<m;k++)
{
for(i=j=0;i<N;i++)
if(b
.s>b[j].s)
j=i;
/*********found*********/
t[k].num=b[j].num;
b[j].s=0;
}
return t;
}
outresult(STU a,[],FILE*pf)
{
int i;
for(i=0;i<N;i++)
fprintf(pf,"No=%s Nark
=%d\n",a
.num,a
.s);
fprintf(pf,"\n\n");
}
void main()
{
STU a[N]={{"A01",81),{"A02",89},{"A03",66},{"A04",87}, {"A05",77},{"A06",90},{"A07",79},{"A08",61),{"A0 9",80},{"A10",71}};
STU*pOrcler;
int i,m;
system("CLS");
pr2ntf("****THE Original
data****\n");
outresult(a,stdout);
printf("\nGive the number of the
students who have better scoEe:");
scanf("%d",&m);
while(m>10)
{
printf("\nGive the num
bet of the students who have
better score:");
scanf("%d",&m);}
pOrder=fun(a,m);
printf("**** THE RESULT****\n");
printf("The top:\n");
for(i=0;i<m;i++)
printf("%S%d\n",
porder
.num,pOrder
.s);
free(pOrder);
}
选项
答案
(1)t=calloc(m,sizeof(STU)); (2)t[k]=b[j];
解析
(1)calloc应用于分配内存空间。调用形式为 (类型说明符*)calloc(n,size),功能:在内存动态存储区中分配n块长度为“size”字节的连续区域,函数的返回值为该区域的首地址,(类型说明符*)用于强制类型转换。calloc函数与malloc函数的区别在于calloc函数一次可以分配n块区域。例如,ps=(struct stu*)calloc(2,sizeof(struct stu));,其中的sizeof(struct stu)是求stu的结构长度。该语句的意思是:按stu的长度分配两块连续区域,强制转换为stu类型,并把其首地址赋予指针变量ps。在本题中不用考虑那么复杂,根据定义类型STU b[N],*t;就可以看出*t=calloc(m,sizeof(STU))中的错误,变量t少*号。
(2)t[k].num=b[j].num;的错误旨在考查对结构体概念的掌握和灵活应用程度。
转载请注明原文地址:https://kaotiyun.com/show/Vxxp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
有以下程序:#include<stdlib.h>structNODE{intnurn;structNODE*next;};main(){stru
有以下程序intf(intn){if(n==l)return1;elsereturnf(n-1)+1;}main(){inti,j=0;f
有以下程序:#include<stdio.h>fun(intx,inty,intz){z=x*y;}main(){inta=4,b=2,c=6;fun(a,b,c);p
请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。 【】(double,double); main( ) {doublex,y; scanf("%lf%lf",&x,&y); printf("%lf\n",ma
以下程序的输出结果是() main() {staticchara[10]={"Chinese"}; printf("%d",strlen(a)); }
以下能正确定义二维数组的是______。
已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。下列不能将变量c中的大写字母转换为对应小写字母的语句是()。
下列选项中,不属于数据管理员(DBA职责的是()。
下列叙述中正确的是()。
下列关系运算的叙述中,正确的是______。
随机试题
震颤麻痹主要是下列哪个通路受累的结果
西周时期在审判中判断当事人陈述真伪的方式“五听”中的“目听”指:()
用薄玻璃片做成的劈尖放在空气中,设玻璃的折射率n=1.52,用波长为λ=550nm的单色光垂直照射到劈尖上,则第三级暗条纹处对应的玻璃膜厚度为()。
投资者投入项目资本金,可以拥有该项目的权利包括()。
在常用的混凝土外加剂中,高效减水剂为()。
比率法是指用两个以上的指标的比例进行分析的方法,在施工成本分析中,常用的比率法有()。
在某会计年度出现()时,一般意味着企业的长期偿债能力可能出现问题,投资者、管理层须保持关注。I.长期债务与营运资金比率远远大于1Ⅱ.有形资产净值债务率不断下降Ⅲ.利息支付倍数低于近几年的平均数,但较最低的年份要高出不少
幼儿园的教育内容是全面的、启蒙性的。各领域的内容相渗透,从不同角度促进幼儿()等方面的发展。
被国际同行们誉为“杂交水稻之父”的人物是()。
表达式pow(2.8,sqrt(float(x)))值的数据类型为______型。
最新回复
(
0
)