首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:不得增行或删行,
下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:不得增行或删行,
admin
2019-04-14
32
问题
下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#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;
t[k].s=b[j].s;
b[j].s=0;
}
return t;
outresult(STU a[],FILE *pf)
{
int i:
for(i=0;i<N;i+ +)
fprintf(pf,″No=%s Mark=%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}, {″A09″,80},{″A10″,71}};
STU * pOrder;
int i,m;
system(″CLS″);
printf(″* * * * * THE RESULT * * * * *\n″);
outresult(a,stdout);
printf(″\nGive the nmuber of the students who have better score:″);
scanf(″%d″,&m);
while(m>10)
{
printf(″\nGive the number ofthe 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=(STU *)calloc(m,sizeof(STU)); (2)t[k].num=b[j].num改为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))中的错误。
(2)t[k].num=b[j].num的错误旨在考查对结构体概念的掌握和灵活应用程度。
转载请注明原文地址:https://kaotiyun.com/show/C1Rp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
以下程序的输出结果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;
下列程序的运行结果是_________。main(){inta=1,b=10;do{b-=a;a++}while(b--<0);printf("%d,%d\n",a,b);}
若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。Structstu{inti;intname;}st,*p;p=&st
在下列叙述中,正确的一条是______。
下面的叙述正确的是()。
层次模型的典型代表是IBM公司的【】数据库管理系统。
若给fun函数的形参s传送字符串“∪∪6354’abc"(其中∪表示空格字符),则函数的返回值是【】。longfun(chars[]){longn;intsign;for(;isspace(*s);s++);
以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。#include<stdio,h>voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{
以下叙述中正确的是______。
我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是
随机试题
在发动机起动之后,若点火开关一直保持接通,则在8h后,防盗控制器会再次与转发器进行询问、应答过程并以此回答发动机控制器的下一次请求信号。()
著作权中,保护期为首次发表后1O年的是【】
Thoughsomepeoplehavesuggestedthatwomenshouldreturntohouseworkinordertoleave【C1】______jobsformen,theideahasbe
植皮区包扎的压力一般为
背景资料某公路工程,合同价4000万元,合同工期270天。合同条款约定:(1)工程预付款为合同价的10%,开工当月一次性支付;(2)工程预付款扣回时间及比例:自工程款(含工程预付款)支付至合同价款的60%的当月起,分两个月平均扣回;(3)工程进度款按月支
某施工合同约定质量标准为合格,监理工程师在巡视时告之承包人“把活儿做得更细些,到时不会少了你们的”。于是项目经理在施工中提高了质量标准,因此增加了费用,则该笔费用应由()承担。
某写字楼高度为32m,共9层,每层面积为1200m2,楼内设有消火栓灭火系统、自动喷水灭火系统、火灾自动报警系统等。如果把写字楼的每层作为一个计算单元,那么每个楼层配置灭火器的最小灭火级别为()A。
针对E集团的下列组成部分(A、B、C、D)财务信息,如果仅从财务重大性角度判断,审计项目组应当评估为重要组成部分的是()。
在企业面对突然发生的损害其形象、造成严重损失的危机事件时,针对其发生原因制订旨在减小和消除事件消极影响,重塑企业形象的公关活动称为()。
Americanblackbears(11)inavarietyofcolorsdespitetheirname.Intheeasternpartoftheirrange,mostofthesebrown,
最新回复
(
0
)