首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:
下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:
admin
2018-03-28
24
问题
下列给定程序中,函数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<stdio.h>main(){inta,b,c;a=25;b=025;e=0x25;prinff("%d%d%d\n",a,h,c);
下面程序段的输出结果是()。#include<stdio.h>main(){floatx=1.236547;printf("%f\n",(int)(x*1000+0.5)/(float)1000);}
有以下程序#includeintfun(intX,inty){if(x!=y)return((x+y)/2):elsereturn(x):}main().{inta=
下列语句的输出结果是______。charS[20]="aaaa",*sp=s;puts(strcat(sp,"AAAAA"));
设有如下定义structss{charname[10];intage;charsex;}std[3],*p=std;下列各输入语句中错误的是_______。
以下叙述中错误的是()。
若有下列说明,则()不是对strcpy库函数的正确的调用。strcpy库函数用于复制一个字符串:char*str1="abcdt",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa";
已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。下列不能将变量c中的大写字母转换为对应小写字母的语句是()。
有以下程序#includemain(){charp[]={′a′,′b′,′c′},q[10]={′a′,′b′,′c′};printf("%d%d\n",strlen(p),strlen(q));}以下叙述中正确的是
若要求从键盘读入含有空格字符的字符串,应使用函数
随机试题
男性,49岁,肾透明细胞癌术后3年复查发现右下肺外带直径2cm球形病灶,边界清
男性,16岁,急性阑尾炎伴局限性腹膜炎,行阑尾切除术后1周,感腹胀,肛门部有下坠感。体温38.5℃,白细胞16×109/L。最可能的诊断为
女性不应从事何种工作女性不应从事何种负重工作
建设项目策划的过程和方法具有()特点。
(2008年)甲公司20×7年的有关交易或事项如下:(1)20×5年1月1日,甲公司从活跃市场上购入乙公司同日发行的5年期债券30万份,支付款项(包括交易费用)3000万元,意图持有至到期。该债券票面价值总额为3000万元,票面年利率为5%,乙公司于每年
控制过程一般可划分为()。
最近天气变化,淅淅沥沥下了一些小雨。平时睡觉不踏实、容易早醒的小林在这几天里睡得特别安稳、香甜,于是他认为下雨能使自己的睡眠质量变好。以下哪项如果为真,最能削弱小林的观点?
回忆不起在疾病发生之前某一阶段的事件称为()。
在OSI/RM中,网络层传输的是(52)。
ドア______鍵がかかっています。
最新回复
(
0
)