首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.C。在此程序中,函数fun()的功能是对N名学生的学习成绩,按从高到低的顺序排列并找出前m(m≤10)名学生,将这些学生的数据存放在一个动态分配的连
使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.C。在此程序中,函数fun()的功能是对N名学生的学习成绩,按从高到低的顺序排列并找出前m(m≤10)名学生,将这些学生的数据存放在一个动态分配的连
admin
2023-02-27
30
问题
使用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全国计算机二级
相关试题推荐
方程6xy+4x-9y-7=0的整数解有()种情况。
在某项体育比赛中评委给一位同学打出的分数为:90,89,90,95,93,94,93,去掉一个最高分和一个最低分后,所剩数据的平均值和方差分别为()。
在等差数列{an}中,若a4+a7+a10+a13=20,则S16=()。
有一水池,单开甲管4小时把水注满,单开乙管6小时可以把满池水放完,如果两管同时开2小时之后,水池还能装3.5立方米,则水池容量是()立方米。
毛泽东曾指出,殖民地半殖民地国家的革命,在一定历史时期中所采取的国家形式,既不是资产阶级专政的共和国,也不是无产阶级专政的共和国,而“只能是第三种形式,这就是所谓新民主主义共和国”,它是“过渡的形式”,但却“是不可移易的必要的形式”。新民主主义共和国的“过
结合材料回答问题:材料1新中国成立后,中国在平等互利、相互尊重主权和领土完整的基础上同一批又一批国家建立了外交关系。然而,由于美方对中华人民共和国采取拒绝承认的错误政策,致使中美陷入长期相互隔绝、彼此敌对状态。历史总是要前进.时代总是要
求下列函数的导数:y=ln(chx);
信息隐蔽是开发整体程序结构时使用的法则,通过信息隐蔽可以提高软件的____①____、可测试性和____②____。②
随机试题
下列给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指的变量中。ss所指字符串数组中共有M个字符串,且串长小于N。请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的
(2018年济南济阳区)教师设计学习材料时,标题和重要部分的字体格外大。这运用了知觉规律中的()
左右共治
土地革命战争后期和抗日战争时期是毛泽东思想形成和发展走向________。
患者女,32岁。因口腔黏膜上有白色覆盖物3个月就诊。检查:咽部和软腭可见白色的假膜,可擦去,留下红色基底。自述半年前因车祸有过输血,近3个月来经常发热和腹泻,体重明显减少。根据患者的临床表现和病史,应考虑的诊断是
针灸治疗癃闭,叙述不正确的是()
巴戟天的性状特征有()
特种设备管理的安全要求中有关特种设备的使用,下列说法错误的是()。
甲电子设备公司为居民企业,主要从事电子设备的制造业务。2016年有关经营情况如下:(1)销售货物收入2000万元,提供技术服务收入500万元,转让股权收入3000万元,经税务机关核准上年已作坏账损失处理后又收回的其他应收款15万元。(2)缴纳增值税18
(2011年真题)依据合同法规定,双务合同履行中的抗辩权包括()。
最新回复
(
0
)