收藏 分销(赏)

C语言上机题库百科园第八章南信大.doc

上传人:丰**** 文档编号:4330458 上传时间:2024-09-06 格式:DOC 页数:24 大小:167.01KB
下载 相关 举报
C语言上机题库百科园第八章南信大.doc_第1页
第1页 / 共24页
C语言上机题库百科园第八章南信大.doc_第2页
第2页 / 共24页
C语言上机题库百科园第八章南信大.doc_第3页
第3页 / 共24页
C语言上机题库百科园第八章南信大.doc_第4页
第4页 / 共24页
C语言上机题库百科园第八章南信大.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、第八章以下叙述中正确的是()若有以下语句typedefstruct Sint g; char h;T;A.可用T定义结构体变量B.T是struct S类型的变量C.可用S定义结构体变量D.S是struct类型的变量当定义一个结构体变量时,系统分配给它的内存是( )。A.结构体中最后一个成员所需内存量B.成员中占内存量最大的容量C.结构体中第一个成员所需内存量D.各成员所需内存量的总和若有以下定义:struct linkint data;struct link *next;a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构,若指针p指向a,指针q指向c。则能把c插入到a和b之间形成

2、新的链表的语句是( )A.p-next=&c;q-next=p-next;B.p.next=q;q.next=p.next;C.p-next=q; q-next=&b;D.a.next=c; c.next=b;/*N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。 例如,若学生的成绩是85,76,69,91,72,64,87,则平均分应当是78.625。 注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/ #include#inclu

3、de#define N 8struct slist double s; struct slist *next;typedef struct slist STREC;double fun(STREC *h)/*Begin*/*End*/STREC *creat(double *s) /*创建链表*/ STREC *h,*p,*q; int i=0; h=p=( STREC*)malloc(sizeof(STREC); p-s=0; while(is=si;i+;p-next=q;p=q; p-next=0; return h;outlist(STREC *h) STREC *p; p=h-nex

4、t; printf(head ); do printf(-%4.1f ,p-s); p=p-next; /*输出各成绩*/ while(p!=NULL); printf(nn);void main() FILE *wf; double sN=85,76,69,85,91,72,64,87,ave; STREC *h; h=creat(s); outlist(h); ave=fun(h); printf(ave=%6.3fn ,ave);/*/ wf=fopen(debugout25.dat,w); fprintf(wf,%6.3fn,ave); fclose(wf);/*/【参考代码】 dou

5、ble av=0.0; STREC *p=h-next; /*p直接指向头节点的下一个节点,即第一个成绩*/ while(p!=NULL) av=av+p-s; /*求总分数*/ p=p-next; return av/N; /*返回平均值*/ /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#

6、include # define N 12typedef struct char num10; double s; STREC;double fun (STREC *a,STREC *b, int *n)/*Begin*/*End*/void main() FILE *wf; STREC sN=GA05,85,GA03,76,GA02,69,GA04,85, GA01,91,GA07,72,GA08,64,GA06,87, GA09,60,GA11,79,GA12,73,GA10,90; STREC hN,t; int i,j,n; double ave; ave=fun(s,h,&n); p

7、rintf(The %d student data which is higher than %7.3f:n,n,ave); for(i=0; in; i+)printf(%s %4.1fn,hi.num,hi.s); printf(n); for(i=0; in-1; i+) for(j=i+1;jn;j+) if(hi.shj.s) t=hi;hi=hj;hj=t; /*分数从高到低排列*/*/ wf=fopen(debugout29.dat,w); fprintf(wf, %d %7.3fn,n,ave); for(i=0; in; i+) fprintf(wf, %s %4.1fn,h

8、i.num,hi.s); fclose(wf);/*/【参考代码】 int i; double av=0.0; *n=0; for(i=0;iN;i+) av=av+ai.s; av=av/N; /*求平均值*/ for(i=0;iN;i+) if(av=ai.s) b*n=ai;*n=*n+1; /*将高于等于平均分的学生存入b所指存储单元中,并统计人数*/ return av; /*返回平均分*/ /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。例如,

9、输入的分数是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include #define N 16typedef struct char num10; int s ;STREC;int fun (STREC *a, STREC *b, int l, int h )/*Begin*/*End*/void main () FILE *wf; STREC sN= GA005,8

10、5,GA003,76,GA002,69,GA004,85, GA001,96,GA007,72,GA008,64,GA006,87, GA015,85,GA013,94,GA012,64,GA014,91, GA011,90,GA017,64,GA018,64,GA016,72; STREC hN,tt; int i, j,n, low, heigh, t; printf(Enter 2 integer number low & heigh: ); scanf(%d%d,&low,&heigh); if(heighlow) t=heigh;heigh=low; low=t; n=fun(s,h

11、,low, heigh); printf(The student s data between %d-%d:n ,low, heigh); for(i=0;in;i+) printf(%s %4dn ,hi.num, hi.s); /*输出指定分数范围内的学生记录*/ printf(n );/*/ n=fun(s,h,80,98); for(i=0;in-1;i+) /*分数在8098之间的学生记录按分数从低到高排列*/ for(j=i+1;jhj.s) tt=hi;hi=hj;hj=tt; wf=fopen(debugout26.dat,w); for(i=0;in;i+) fprintf(

12、wf, %s %4dn,hi.num, hi.s); fclose(wf);/*/【参考代码】 int i,j=0; for(i=0;i=l&ai.s=h) /*将分数高于l,低于h的学生记录存于结构体数组b中*/ bj+=ai; return j; /*返回分数范围内的学生人数*/ /*某学生的记录由学号、8门课成绩和平均分组成,学号和8门课的成绩已在主函数中给出。请编写fun函数,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应当是78.875。 注意:部分源程序给

13、出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include #define N 8typedef struct char num10; double sN; double ave; STREC;void fun(STREC *p)/*Begin*/*End*/void main() FILE *wf; STREC s= GA005 ,85.5,76,69.5,85,91,72,64.5,87.5; int i; fun(&s); printf(The %ss student data:n, s.num); /*输出学号*/

14、 for(i=0;iave=0.0; for(i=0;iave=p-ave+p-si; /*求各门成绩的总和*/ p-ave=p-ave/N; /*求平均分*/ /*已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#include#include#include#define N 10typedef struct

15、 ss char num10; int s; STU;fun(STU a, STU *s)/*Begin*/*End*/void main() FILE *wf; STU aN= A01,81, A02,89, A03,66, A04,87, A05,77, A06,90, A07,79, A08,61, A09,80, A10,71,m; int i; printf(*The original data*n); for(i=0;iN;i+) printf(No=%s Mark=%dn, ai.num,ai.s); fun(a,&m); printf(*THE RESULT*n); print

16、f(The lowest :%s, %dn,m.num,m.s);/*/ wf=fopen(debugout28.dat,w); fprintf(wf,%s %dn,m.num,m.s); fclose(wf);/*/【参考代码】 int i; *s=a0; /*先认为第1个值最小*/ for(i=0;isai.s) *s=ai; /*学生的记录由学生和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,其功能是:把分数最低的学生数据放在h所指的数组中。注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。注意:部分源程序给出如下。请勿改动main函数和其他函数

17、中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#include # define N 16typedef struct char num10; int s; STREC;int fun (STREC *a,STREC *b)/*Begin*/*End*/void main() STREC sN=GA05,85,GA03,76,GA02,69,GA04,85,GA01,91,GA07,72,GA08,64, GA06,87,GA015,85,GA013,91,GA012,64,GA014,91,GA011,91,GA017,64,GA018,64,GA016,72;

18、STREC hN; int i,n; FILE *out; n=fun(s,h); printf(The %d lowest score:n,n); for(i=0;in;i+) printf(%s %4dn,hi.num,hi.s); printf(n); /*/ out=fopen(debugout22.dat,w); fprintf(out,%dn,n); for(i=0;in;i+) fprintf(out,%4dn,hi.s); fclose(out); /*/【参考代码】 int i,j=0,n=0,min; min=a0.s; for(i=0;iN;i+) if(ai.smin)

19、 min=ai.s; for(i=0;iN;i+) if(ai.s=min) *(b+j)=ai;j+;n+; return n; /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include#define N 8typedef struct char num10; double s; STREC;do

20、uble fun(STREC *a, STREC *b, int *n)/*Begin*/*End*/void main() FILE *wf; STREC sN= GA05 ,85, GA03 ,76, GA02 ,69, GA04 ,85, GA01 ,91, GA07 ,72, GA08 ,64, GA06 ,87; STREC hN; int i,n; double ave; ave=fun(s,h,&n); printf(The %d student data which is lower than %7.3f:n , n,ave); for(i=0;in;i+) /*输出成绩低于平

21、均值的学生记录*/ printf(%s %4.1fn ,hi.num,hi.s); printf(n );/*/ wf=fopen(debugout30.dat,w); fprintf(wf, %d %7.3fn,n,ave); for(i=0;in;i+) fprintf(wf, %s %4.1fn,hi.num,hi.s); fclose(wf);/*/【参考代码】 int i,j=0; double av=0.0; for(i=0;iN;i+) av=av+ai.s; av=av/N; /*求平均值*/ for(i=0;iN;i+) if(ai.sav) bj+=ai; /*将低于平均值

22、的学生记录存入结构体b中*/ *n=j; /*指针传回低于平均值的学生人数*/ return av; /*返回平均值*/ /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。 给定源程序: */#include #define N 16 typedef struct char num10; int

23、s; STREC; int fun( STREC *a, STREC *b ) /*Begin*/ /*End*/ int main() STREC sN=GA05,85,GA03,76,GA02,69,GA04,85, GA01,91,GA07,72,GA08,64,GA06,87, GA015,85,GA013,91,GA012,64,GA014,91, GA011,77,GA017,64,GA018,64,GA016,72; STREC hN; int i,n;FILE *out ; n=fun(s,h); printf(The %d highest score :n,n); for(i

24、=0;in; i+) printf(%s %4dn,hi.num,hi.s); printf(n); out = fopen(debugout.dat,w); for(i=0;in; i+) fprintf(out, %s %dn,hi.num,hi.s); fclose(out);return 0; /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include

25、#define N 16typedef struct char num10; int s ;STREC;void fun (STREC a)/*Begin*/*End*/void main () FILE *wf; STREC sN= GA005,85,GA003,76,GA002,69,GA004,85, GA001,91,GA007,72,GA008,64,GA006,87, GA015,85,GA013,91,GA012,64,GA014,91, GA011,66,GA017,64,GA018,64,GA016,72; int i; fun(s); printf(The data aft

26、er sorted :n); for (i=0; iN; i+) printf(%s %4dn,si.num,si.s); /*/ wf=fopen(debugout23.dat,w); for (i=0; iN; i+) fprintf(wf,%s %4dn,si.num,si.s); fclose(wf);/*/【参考代码】 int i,j; STREC t; for(i=1;iN;i+) for(j=0;jN-1;j+) if(aj.saj+1.s) t=aj;aj=aj+1;aj+1=t; /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,

27、它的功能是:把分数最高的学生数据放在h所指的数组中。注意:分数高的学生可能不只一个,函数返回分数最高学生的人数。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include #define N 16typedef struct char num10; int s ;STREC;int fun (STREC *a, STREC *b)/*Begin*/*End*/void main () FILE *wf; STREC sN=GA005,85,GA003,76,GA002,69,GA004,85, GA001

28、,91,GA007,72,GA008,64,GA006,87, GA015,85,GA013,91,GA012,64,GA014,91, GA011,66,GA017,64,GA018,64,GA016,72; STREC hN; int i, n; n=fun(s,h); printf(The %d highest score :n,n); for (i=0; in; i+) printf(%s %4dn ,hi.num,hi.s); /*输出最高分学生的学号和成绩*/ printf(n);/*/ wf=fopen(debugout27.dat,w); fprintf(wf, %dn,n);

29、 for (i=0; in; i+) fprintf(wf,%s %4dn,hi.num,hi.s); fclose(wf);/*/【参考代码】 int i,j=0,max=a0.s; for(i=0;iN;i+) if(maxai.s) max=ai.s;/*找出最大值*/ for(i=0;iN;i+) if(max=ai.s) bj+=ai; /*找出成绩与max相等的学生的记录,存入结构体b中*/ return j; /*返回最高成绩的学生人数*/ /*下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m=10)名学生,并将这些学生数据存放在一个动态分配

30、的连续存储区中,此存储区的首地址作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/ #include #include #include #include #define N 10typedef struct ss char num10; int s; STU;STU *fun(STU a, int m) STU bN,*t; int i, j,k;/*ERROR*/ *t=calloc(m,sizeof(STU); for(i=0;iN;i+) bi=ai; for(k=0;km;k+) for (

31、i=j=0;ibj.s) j=i;/*ERROR*/ tk.num=bj.num; tk.s=bj.s; bj.s=0; return t;outresult(STU a,FILE *pf) int i; for(i=0;i10) printf(nGive the number of the students who have better score: ); scanf(%d,&m); pOrder=fun(a,m); printf(* THE RESULT*n); printf(The top :n); for(i=0;im;i+) printf(%s %dn,pOrderi.num, p

32、Orderi.s); free(pOrder); 【参考答案】t=calloc(m,sizeof(STU);【参考答案】tk=bj;/*下列给定程序的功能是:建立一个带头节点的单向链表,并用随机函数为各节点数据域赋值。函数fun的作用是求出单向链表节点(不包括头节点)数据域中的最大值,并且作为函数值返回。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序: */#include #include typedef struct aa int data; struct aa *next; NODE;fun (NODE *h) int max=-1; NODE *p;/*ERROR*/ p=h; while(p) if(p-datamax) max=p-data;/*ERROR*/

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服