首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.C。在此程序中,函数fun()的功能是对N名学生的学习成绩,按从高到低的顺序排列并找出前m(m≤10)名学生,将这些学生的数据存放在一个动态分配的连
使用VC++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.C。在此程序中,函数fun()的功能是对N名学生的学习成绩,按从高到低的顺序排列并找出前m(m≤10)名学生,将这些学生的数据存放在一个动态分配的连
admin
2023-02-27
25
问题
使用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全国计算机二级
相关试题推荐
两个正整数甲数和乙数的最大公约数是6,最小公倍数是90,如果甲数是18,那么乙数是m,则m的各个数位上数字之和为()。
用数字0,1,2,3,4,5组成没有重复数字的四位数,十位数字比个位数字大的有()。
4位同学参加某种形式的竞赛,竞赛规则规定:每位同学必须从甲,乙两道题中任选一题作答,选甲题答对得100分,答错得-100分;选乙题答对得90分,答错得-90分,若4位同学的总分为0,则这4位同学的得分情况有()。
途中ABCD是边长为2的正方形,以AB为直径的半圆以及以AB为半径的两个537圆在正方形中划分出小面积S1,S2,S3,S4,则S4-S1=()。
一组数据有10个,每个数据与它们的平均数的差依次为-2,4,-4,5,-1,-2,0,2,3,-5,则这组数据的方差为()。
在等差数列{an}中,若a4+a7+a10+a13=20,则S16=()。
队列长度是800米的队伍行军速度为每分钟100米,在队尾的某人以3倍于行军的速度赶到排头,并立即返回队尾所用的时间是()。
国家税务部门规定个人稿费纳税方法是:不超过800元的不纳税,超过800元而不超过4000元的按超过800元部分的14%纳税,超过4000元的按全稿费的11%纳税,已知一人纳税550元,则此人的稿费为()元。
结合材料回答问题:华为从容的背后,有我们时代的整体加持华为遭遇美国极限施压之际,任正非接受媒体采访的内容刷屏。中国企业与中国企业家的自信、大气与从容,呈现于谈笑风生之间。从时代的角度审视,我
20世纪50年代,在探索社会主义建设道路过程中,陈云在党的八大上提出了著名的“三个主体、三个补充”的设想。“三个主体、三个补充”的主要内容包括()
随机试题
增值税与阶梯式商品税相比,所具有的突出优点有()
胸胁灼痛,急躁易怒,头晕口苦,咳嗽咯血,舌红脉弦数,证属()
王某,28岁,已婚,未育,患单个较大宫体肌壁间肌瘤,经量>200ml,最恰当的处理是()。
贸易术语在国际贸易中的作用主要表现在()。
我国一般将长期的(远景的)、纲要性的、重大的专项性的计划叫做()。
账务处理系统初始余额录入后,系统提示数据错误时,应当()。
注重“鲜咸合一”的菜系是()。
从全面建成小康社会到基本实现现代化,再到全面建成()是新时代中国特色社会主义的战略安排。
在组织人员不变的前提下,下列情形中管理幅度应该较窄的是()。
小林是北京某师范大学财务处的会计,计算机系计算机基础室提交了该教研室2012年的课程授课情况,希望财务处尽快核算并发放他们教研室的课时费。请根据考生文件夹下“素材.xlsx”中的各种情况,帮助小林核算出计算机基础室2012年度每位教员的课时费情况。具体要求
最新回复
(
0
)