首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.C。在此程序中,函数fun()的功能是对N名学生的学习成绩,按从高到低的顺序排列并找出前m(m≤10)名学生,将这些学生的数据存放在一个动态分配的连
使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.C。在此程序中,函数fun()的功能是对N名学生的学习成绩,按从高到低的顺序排列并找出前m(m≤10)名学生,将这些学生的数据存放在一个动态分配的连
admin
2023-02-27
33
问题
使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.C。在此程序中,函数fun()的功能是对N名学生的学习成绩,按从高到低的顺序排列并找出前m(m≤10)名学生,将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!
试题程序:
1 #include<stdlib.h>
2 #include<conio.h>
3 #include<string.h>
4 #include<stdio.h>
5 #include<malloc.h>
6 #define N 10
7 typedef struct ss
8 {
9 char num[10];
10 int s;
11 }STU;
12 STU*fun(STU a[],int m)
13 {
14 STU b[N],*t;
15 int i,j,k;
16 /*********found*********/
17 *t=calloc(m,sizeof(STU))
18 for{i=0;i<N;i++)
19 b
=a
;
20 for(k=0;k<m;k++)
21 {
22 for(i=j=0;i<N;i++)
23 if(b
.s>b[j].s)
24 j=i;
25 /*********found*********/
26 t[k].num=b[j].num;
27 t[k].s=b[j].s;
28 b[j].s=0;
29 }
30 return t;
31 }
32 outresult(STU a[],FILE*pf)
33 {
34 int i;
35 for(i=0;i<N;i++)
36 fprintf(pf,"No=%s Mark=%d\n",a
.num,a
.s);
37 fprintf(pf,"\n\n");
38 }
39 void main()
40 {
41 STU a[N]={{"A01",81),{"A02",
89},{"A03",66),{"A04",87},{"A05",77},{"A06",90},{"A07",
79},{"A08",61},{"A09",
80},{"A10",71}};
42 STU*pOrder;
43 int i,m;
44 system("CLS");
45 printf ("****The original data****\n");
46 outresult(a,stdout);
47 printf("\nGive the number of the students who have better score:");
48 scanf("%d",&m);
49 while(m>10)
50 {
51 printf("\nGive the number of the students who have better score:");
52 scanf("%d",&m);}
53 pOrder=fun(a,m);
54 printf ("****The Result****\n");
55 printf("The top:\n");
56 for(i=0;i<m;i++)
57 printf("%s%d\n",pOrder
.num,pOrder
.s);
58 free(pOrder);
59 }
选项
答案
(1)t=(STU*)calloc(m,sizeof(STU)); (2)strepy(t[k].num,b[j].num);
解析
(1)函数calloc()用于分配内存空间。调用形式为(类型说明符*)callot(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))中的错误。*表示指针类型可以直接赋地址值。再强制转换为STU*类型。
(2)因为num为字符串,不能直接赋值,需要使用字符串复制函数strcpy()。
转载请注明原文地址:https://kaotiyun.com/show/kP0D777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
甲、乙两位长跑爱好者沿着社区花园环路慢跑,如两人同时、同向,从同一点A出发,且甲跑9米的时间乙只能跑7米,则当甲恰好在A点第二次追上乙时,乙共沿花园环路跑了()圈。
在Rt△ABC中,∠C=90°,AC=BC=2,分别以A、B、C为圆心,以AC为半径画弧,三条弧与边AB所围成的阴影部分的面积是()。
一组数据-8,-4,5,6,7,7,8,9的众数、中位数分别是()。
某学生在一次考试中,语文、数学、外语三门学科的平均成绩是80分,物理、化学两门学科的平均成绩是85分,则这个学生5门的平均成绩是()分。
半径分别为60米和40米的两条圆形跑道在点A相切,甲乙两人同时从点A出发,以相同的速度分别沿两个跑道行走,则第一次相遇时沿小圆轨道行走的人一共走了()圈。
已知a,b,c既成等差数列又成等比数列,设α,β是方程ax2+bx-c=0的两根,且α>β,则(α3β-α·β3)2=()。
某商店将每套服装按原价提高50%后再作7折优惠的广告宣传,这样每售出一套服装可获利625元,已知每套服装的成本是2000元,该店按优惠价售出一套服装比按原价()。
直线绕原点按逆时针方向旋转30°后所得直线与圆(x-2)2+y2=3的位置关系是()。
结合材料回答问题:材料1昆明大会以“生态文明:共建地球生命共同体”为主题,推动制定“2020年后全球生物多样性框架”,为未来全球生物多样性保护设定目标、明确路径,具有重要意义。国际社会要加强合作,心往一处想、劲往一处使,共建地球生命共同体。
假设某计算机的字长为32位,该计算机文件管理系统磁盘空间管理采用位示图(bitmap),记录磁盘的使用情况。若磁盘的容量为300GB,物理块的大小为4MB,那么位示图的大小为________个字。
随机试题
下列哪种案件应中止诉讼()
患者女,70岁,全牙列缺失,主诉原下颁义齿固位较差,要求重新修复,查见患者下颌牙槽嵴严重吸收,上颌牙槽嵴尚可,颌位关系正常。若采用中性区排牙,是指A.将人工牙排在无牙颌的牙槽嵴顶B.将人工牙排在牙槽嵴顶的颊侧C.将人工牙排在牙槽嵴顶的舌侧D.将
不属于直接摄影用Χ线胶片的是
下列属于急性出血坏死型胰腺炎特点的是
A.普罗帕酮B.氯苯那敏C.丙氧酚D.丙胺卡因E.哌西那朵对映异构体之间产生不同类型的药理活性的是()。
关于工程勘察成果审查的说法,正确的是()。
某企业2008年7月1日开业,因故在2009年6月30日终止经营,7月15日注销税务登记,有关该企业的企业所得税处理,下列做法符合规定的是()。
采用年度分类法将档案分成若干类别,是依据()。
执行下面语句后,输出字符“#”的个数是()。for(inti=50;i>1;--i)cout
Agreatdealofattentionisbeingpaidtodaytotheso-calleddigitaldividethedivisionoftheworldintotheinfo(informati
最新回复
(
0
)