首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.C。在此程序中,函数fun()的功能是对N名学生的学习成绩,按从高到低的顺序排列并找出前m(m≤10)名学生,将这些学生的数据存放在一个动态分配的连
使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.C。在此程序中,函数fun()的功能是对N名学生的学习成绩,按从高到低的顺序排列并找出前m(m≤10)名学生,将这些学生的数据存放在一个动态分配的连
admin
2023-02-27
32
问题
使用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://jikaoti.com/ti/dBoiFFFM
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
若a,b,c成等比数列,那么函数f(x)=ax2+bx+c(b≠0)的图像与x轴交点的个数为()。
两个数的最大公约数是4,最小公倍数是252,其中一个数是28,则另一个数的各个数位上数字之和是()。
两个正整数的最大公约数是6,最小公倍数是90,满足条件的两个正整数组成的大数在前的数对共有()。
如图所示,△ABC是等腰直角三角形,且∠ACB=90°,曲线CDEF叫作“等腰直角三角形的渐开线”,其中的圆心分别为A,B,C,如果AC=1,那么由曲线CDEF和线段CF围成图形的面积为()。
数列1,3,…82,…是()。
一批图书放在两个书柜中,其中第一柜占55%,若从第一柜中取出15本放入第二柜内,则两书柜的书各占这批图书的50%,这批图书共有()本。
圆x2+y2+2x-4y-4=0与直线x+2y-2=0的位置关系是()。
美国《财富》杂志公布的1999年世界500家大企业的统计数字显示,其中前30家总收入2.80242万亿美元,相当于1998年世界国民生产总值的9.7%,比英国和法国两国的国民生产总值(2.73万亿美元)还多2.6%,相当于世界160多个中低收人国家全部国
企业级路由器的初始配置文件通常保存在________上。
随机试题
Itwasthreeyearsafterthefirstsatellitelaunchingthataspaceshipcontainingamanmadeasuccessfulflight.
血清钾升高常见于()。
B型胃炎主要是由下列哪种原因引起
案情:目前,“禁婚禁育”的规定在各个高校比比皆是,许多学生,特别是在读女硕士、博士因此规定,不得不在受教育权和生育权之间作选择。唐女士原来是北京某高校博士二年级的学生,当时已30岁了。在读博士期间经学校批准与同在一校的男友办了结婚手续。婚后几个月,
某建设项目中,合同中约定混凝土强度是35MPa,但是与之相对应的规范中的强制性标准为30MPa。质量监督人员在对该项目进行检查时,经过试验证明已完工程的混凝土强度是33MPa,于是认定为不合格产品,要求施工单位返工。你认为正确的观点是()。
甲公司和乙公司2015年有关交易或事项如下:(1)2015年1月1日甲公司在其母公司处取得乙公司70%股权,支付价款1050万元。取得投资日,乙公司净资产账面价值为2000万元,公允价值为2300万元,差额为一项固定资产,该固定资产尚可使用5年,预
下列关于我国现行增值税制度的说法,正确的有()。
组合投资类理财产品为间歇式销售方式。()
下列关于国有土地租赁的说法中,正确的有()。
设f(x)=,则f(n)(x)=_______
最新回复
(
0
)