首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.C。在此程序中,函数fun()的功能是对N名学生的学习成绩,按从高到低的顺序排列并找出前m(m≤10)名学生,将这些学生的数据存放在一个动态分配的连
使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.C。在此程序中,函数fun()的功能是对N名学生的学习成绩,按从高到低的顺序排列并找出前m(m≤10)名学生,将这些学生的数据存放在一个动态分配的连
admin
2023-02-27
21
问题
使用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全国计算机二级
相关试题推荐
一部电影在相邻5个城市轮流放映,每个城市都有3个放映点,如果规定必须在一个城市的各个放映点放映完以后才能转入另一个城市,则不同的放映次序有()。
6张同排连号的电影票,分给3名教师与3名学生,若要求师生相间而坐,则不同的坐法有()。
在一个400米的椭圆形跑道上,甲、乙两人从A点同时同向出发,在相同时间内,甲跑了10米,乙跑了8米.当甲第二次追上乙时,乙跑了()圈。
直线2x-y-4=0上有一点P,它与两定点A(4,-1)、B(3,1)的距离之和最小,则点P的坐标是()。
设实数x与y是方程x2-4xy+4y2+x+y-6=0的解,则x+y的最大值为()。
两次抛掷一枚骰子,两次出现的数字之和为奇数的概率为()。
从-1,0,1,2这四个数中选三个不同的数作为函数f(x)=ax+bx+c的系数,可组成不同的二次函数共有()个,其中不同的偶函数共有()个。
将4个颜色互不相同的球全部放入编号为1和2的两个盒子里,使得放入每个盒子里的球的个数不小于该盒子的编号,则不同的放球方法有()。
我们党在不同历史时期,总是根据时代形势和条件变化、具体国情和发展水平变化,根据人民意愿和事业发展需要,制定顺应时代要求、符合客观实际、富有感召力的发展目标。党中央根据当前发展态势和发展需要,制定了从2020年到2035年,基本实现社会主义现代化的目标要求。
1957年4月27日,中共中央下发《关于整风运动的指示》,决定在全党进行一次整风运动。这次整风运动的内容包括()
随机试题
根据我国《商标法》,商标注册享有的优先权期限为()
患者用药的基本原则不包括()
A.药品监督管理部门B.卫生行政部门C.劳动保障行政部门D.工商行政部门E.社会保险经办机构根据《城镇职工基本医疗保险定点零售药店管理暂行办法》定点零售药店须经统筹地区哪个部门审查
文化是庞大的集合体,可以有不同的划分标准。按社区分,中国传统文化分乡镇文化、山林文化、江湖文化和都市文化。乡镇文化指从农村生活方式中生长出来的文化形态,数千年来注重礼教伦常就是乡镇文化的结晶,从中分离出来的是山林文化。山林是隐士栖身所在
以出让方式取得土地使用权进行房地产开发,超过合同约定的动工开发日期()未动工开发的,可以无偿收回土地使用权。
我国目前个人住房贷款利率()。
中国(上海)自由贸易试验区在管理外商对华投资方面首次实施的原则是()。
下列对有关法律的解释,正确的是()。
下列各组的排序方法中,最坏情况下比较次数相同的是
Itisstrictly______thataccesstoconfidentialdocumentsisdeniedtoallbutafew.
最新回复
(
0
)