C语言上机题库百科园第八章南信大.docx
- 文档编号:8274292
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:31
- 大小:23.77KB
C语言上机题库百科园第八章南信大.docx
《C语言上机题库百科园第八章南信大.docx》由会员分享,可在线阅读,更多相关《C语言上机题库百科园第八章南信大.docx(31页珍藏版)》请在冰豆网上搜索。
C语言上机题库百科园第八章南信大
第八章
以下叙述中正确的是()
若有以下语句
typedefstructS
{intg;charh;}T;
A.可用T定义结构体变量
B.T是structS类型的变量
C.可用S定义结构体变量
D.S是struct类型的变量
当定义一个结构体变量时,系统分配给它的内存是()。
A.结构体中最后一个成员所需内存量
B.成员中占内存量最大的容量
C.结构体中第一个成员所需内存量
D.各成员所需内存量的总和
若有以下定义:
structlink
{
intdata;
structlink*next;
}a,b,c,*p,*q;
且变量a和b之间已有如下图所示的链表结构,若指针p指向a,指针q指向c。
则能把c插入到a和b之间形成新的链表的语句是()
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
#include
#defineN8
structslist
{doubles;
structslist*next;
};
typedefstructslistSTREC;
doublefun(STREC*h)
{
/***********Begin***************/
/***********End**************/
}
STREC*creat(double*s)/*创建链表*/
{
STREC*h,*p,*q;
inti=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->s=0;
while(i {q=(STREC*)malloc(sizeof(STREC)); q->s=s[i];i++;p->next=q;p=q; } p->next=0; returnh; } outlist(STREC*h) { STREC*p; p=h->next; printf("head"); do {printf("->%4.1f",p->s); p=p->next;/*输出各成绩*/ } while(p! =NULL); printf("\n\n"); } voidmain() { FILE*wf; doubles[N]={85,76,69,85,91,72,64,87},ave; STREC*h; h=creat(s); outlist(h); ave=fun(h); printf("ave=%6.3f\n",ave); /******************************/ wf=fopen("debug\\out25.dat","w"); fprintf(wf,"%6.3f\n",ave); fclose(wf); /*****************************/ } 【参考代码】 doubleav=0.0; STREC*p=h->next; /*p直接指向"头节点"的下一个节点,即第一个成绩*/ while(p! =NULL) {av=av+p->s;/*求总分数*/ p=p->next; } returnav/N;/*返回平均值*/ /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,该函数的功能是: 把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include #defineN12 typedefstruct {charnum[10]; doubles; }STREC; doublefun(STREC*a,STREC*b,int*n) { /*************Begin************/ /*************End*************/ } voidmain() { FILE*wf; STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85}, {"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}, {"GA09",60},{"GA11",79},{"GA12",73},{"GA10",90}}; STRECh[N],t; inti,j,n; doubleave; ave=fun(s,h,&n); printf("The%dstudentdatawhichishigherthan%7.3f: \n",n,ave); for(i=0;i printf("%s%4.1f\n",h[i].num,h[i].s); printf("\n"); for(i=0;i for(j=i+1;j if(h[i].s {t=h[i];h[i]=h[j];h[j]=t;}/*分数从高到低排列*/ /******************************/ wf=fopen("debug\\out29.dat","w"); fprintf(wf,"%d%7.3f\n",n,ave); for(i=0;i fprintf(wf,"%s%4.1f\n",h[i].num,h[i].s); fclose(wf); /*****************************/ } 【参考代码】 inti; doubleav=0.0; *n=0; for(i=0;i av=av+a[i].s; av=av/N; /*求平均值*/ for(i=0;i if(av<=a[i].s) {b[*n]=a[i];*n=*n+1;} /*将高于等于平均分的学生存入b所指存储单元中,并统计人数*/ returnav; /*返回平均分*/ /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun, 它的功能是: 把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 例如,输入的分数是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。 主函数中把60放在low中,把69放在heigh中。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include #defineN16 typedefstruct {charnum[10]; ints; }STREC; intfun(STREC*a,STREC*b,intl,inth) { /************Begin*************/ /************End************/ } voidmain() { FILE*wf; STRECs[N]={{"GA005",85},{"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}}; STRECh[N],tt; inti,j,n,low,heigh,t; printf("Enter2integernumberlow&heigh: "); scanf("%d%d",&low,&heigh); if(heigh {t=heigh;heigh=low;low=t;} n=fun(s,h,low,heigh); printf("Thestudent'sdatabetween%d--%d: \n",low,heigh); for(i=0;i printf("%s%4d\n",h[i].num,h[i].s);/*输出指定分数范围内的学生记录*/ printf("\n"); /******************************/ n=fun(s,h,80,98); for(i=0;i for(j=i+1;j if(h[i].s>h[j].s) {tt=h[i];h[i]=h[j];h[j]=tt;} wf=fopen("debug\\out26.dat","w"); for(i=0;i fprintf(wf,"%s%4d\n",h[i].num,h[i].s); fclose(wf); /*****************************/ } 【参考代码】 inti,j=0; for(i=0;i if(a[i].s>=l&&a[i].s<=h) /*将分数高于l,低于h的学生记录存于结构体数组b中*/ b[j++]=a[i]; returnj; /*返回分数范围内的学生人数*/ /*某学生的记录由学号、8门课成绩和平均分组成,学号和8门课的成绩已在主函数中给出。 请编写fun函数,它的功能是: 求出该学生的平均分放在记录的ave成员中。 请自己定义正确的形参。 例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应当是78.875。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include #defineN8 typedefstruct {charnum[10]; doubles[N]; doubleave; }STREC; voidfun(STREC*p) { /************Begin*************/ /************End**************/ } voidmain() { FILE*wf; STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5}; inti; fun(&s); printf("The%s'sstudentdata: \n",s.num);/*输出学号*/ for(i=0;i printf("%4.1f\n",s.s[i]);/*输出各科成绩*/ printf("\nave=%7.3f\n",s.ave);/*输出平均分*/ /******************************/ wf=fopen("debug\\out24.dat","w"); fprintf(wf,"ave=%7.3f\n",s.ave); fclose(wf); /*****************************/ } 【参考代码】 inti; p->ave=0.0; for(i=0;i p->ave=p->ave+p->s[i]; /*求各门成绩的总和*/ p->ave=p->ave/N;/*求平均分*/ /*已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。 请编写函数fun, 该函数的功能是: 找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。 已给出函数的首部,请完成该函数。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include #include #include #defineN10 typedefstructss {charnum[10]; ints; }STU; fun(STUa[],STU*s) { /***********Begin**************/ /***********End**************/ } voidmain() { FILE*wf; STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77}, {"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m; inti; printf("*****Theoriginaldata*****\n"); for(i=0;i printf("No=%sMark=%d\n",a[i].num,a[i].s); fun(a,&m); printf("*****THERESULT*****\n"); printf("Thelowest: %s,%d\n",m.num,m.s); /******************************/ wf=fopen("debug\\out28.dat","w"); fprintf(wf,"%s%d\n",m.num,m.s); fclose(wf); /*****************************/ } 【参考代码】 inti; *s=a[0];/*先认为第1个值最小*/ for(i=0;i if(s->s>a[i].s) *s=a[i]; /*学生的记录由学生和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,其功能是: 把分数最低的学生数据放在h所指的数组中。 注意: 分数最低的学生可能不止一个,函数返回分数最低的学生的人数。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include #defineN16 typedefstruct {charnum[10]; ints; }STREC; intfun(STREC*a,STREC*b) { /************Begin************/ /************End**************/ } voidmain() { STRECs[N]={{"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}}; STRECh[N]; inti,n; FILE*out; n=fun(s,h); printf("The%dlowestscore: \n",n); for(i=0;i printf("%s%4d\n",h[i].num,h[i].s); printf("\n"); /******************************/ out=fopen("debug\\out22.dat","w"); fprintf(out,"%d\n",n); for(i=0;i fprintf(out,"%4d\n",h[i].s); fclose(out); /******************************/ } 【参考代码】 inti,j=0,n=0,min; min=a[0].s; for(i=0;i if(a[i].s min=a[i].s; for(i=0;i if(a[i].s==min) { *(b+j)=a[i];j++;n++; } returnn; /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是: 把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include #defineN8 typedefstruct {charnum[10]; doubles; }STREC; doublefun(STREC*a,STREC*b,int*n) { /************Begin************/ /************End***************/ } voidmain() { FILE*wf; STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85}, {"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}}; STRECh[N]; inti,n; doubleave; ave=fun(s,h,&n); printf("The%dstudentdatawhichislowerthan%7.3f: \n",n,ave); for(i=0;i printf("%s%4.1f\n",h[i].num,h[i].s); printf("\n"); /******************************/ wf=fopen("debug\\out30.dat","w"); fprintf(wf,"%d%7.3f\n",n,ave); for(i=0;i fprintf(wf,"%s%4.1f\n",h[i].num,h[i].s); fclose(wf); /*****************************/ } 【参考代码】 inti,j=0; doubleav=0.0; for(i=0;i av=av+a[i].s; av=av/N; /*求平均值*/ for(i=0;i if(a[i].s /*将低于平均值的学生记录存入结构体b中*/ *n=j; /*指针传回低于平均值的学生人数*/ returnav; /*返回平均值*/ /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是: 把分数最高的学生数据放在b所指的数组中,注意: 分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。 给定源程序: */ #include #defineN16 typedefstruct {charnum[10]; ints; }STREC; intfun(STREC*a,STREC*b) { /**************Begin*************/ /*************End***************/ } intmain() {STRECs[N]={{"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}}; STRECh[N]; inti,n;FILE*out; n=fun(s,h); printf("The%dhighestscore: \n",n); for(i=0;i printf("%s%4d\n",h[i].num,h[i].s); printf("\n"); out=fopen("debug\\out.dat","w"); for(i=0;i fprintf(out,"%s%d\n",h[i].num,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 题库 百科 第八 章南信大