您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 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的花括号中填入所编写的若干语句。试题程序:*/#includestdlib.h#includestdio.h#defineN8structslist{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(iN){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的花括号中填入所编写的若干语句。试题程序:*/#includestdio.h#defineN12typedefstruct{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;in;i++)printf(%s%4.1f\n,h[i].num,h[i].s);printf(\n);for(i=0;in-1;i++)for(j=i+1;jn;j++)if(h[i].sh[j].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;in;i++)fprintf(wf,%s%4.1f\n,h[i].num,h[i].s);fclose(wf);/*****************************/}【参考代码】inti;doubleav=0.0;*n=0;for(i=0;iN;i++)av=av+a[i].s;av=av/N;/*求平均值*/for(i=0;iN;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的花括号中填入所编写的若干语句。试题程序:*/#includestdio.h#defineN16typedefstruct{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(heighlow){t=heigh;heigh=low;low=t;}n=fun(s,h,low,heigh);printf(Thestudent'sdatabetween%d--%d:\n,low,heigh);for(i=0;in;i++)printf(%s%4d\n,h[i].num,h[i].s);/*输出指定分数范围内的学生记录*/printf(\n);/******************************/n=fun(s,h,80,98);for(i=0;in-1;i++)/*分数在80~98之间的学生记录按分数从低到高排列*/for(j=i+1;jn;j++)if(h[i].sh[j].s){tt=h[i];h[i]=h[j];h[j]=tt;}wf=fopen(debug\\out26.dat,w);for(i=0;in;i++)fprintf(wf,%s%4d\n,h[i].num,h[i].s);fclose(wf);/*****************************/}【参考代码】inti,j=0;for(i=0;iN;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的花括号中填入所编写的若干语句。试题程序:*/#includestdio.h#defineN8typedefstruct{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;iN;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;iN;i++)p-ave=p-ave+p-s[i];/*求各门成绩的总和*/p-ave=p-ave/N;/*求平均分*//*已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#includestdio.h#includestring.h#includestdlib.h#defineN10typedefstructss{charnum[10];ints;}STU;fun(STUa[],STU*s){/***********Begin**************//***********End******
本文标题:C语言上机题库百科园第八章!南信大!
链接地址:https://www.777doc.com/doc-1754721 .html