C语言上机题库百科园第八章南信大教学文稿.docx

上传人:b****7 文档编号:8975427 上传时间:2023-02-02 格式:DOCX 页数:37 大小:28.99KB
下载 相关 举报
C语言上机题库百科园第八章南信大教学文稿.docx_第1页
第1页 / 共37页
C语言上机题库百科园第八章南信大教学文稿.docx_第2页
第2页 / 共37页
C语言上机题库百科园第八章南信大教学文稿.docx_第3页
第3页 / 共37页
C语言上机题库百科园第八章南信大教学文稿.docx_第4页
第4页 / 共37页
C语言上机题库百科园第八章南信大教学文稿.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

C语言上机题库百科园第八章南信大教学文稿.docx

《C语言上机题库百科园第八章南信大教学文稿.docx》由会员分享,可在线阅读,更多相关《C语言上机题库百科园第八章南信大教学文稿.docx(37页珍藏版)》请在冰豆网上搜索。

C语言上机题库百科园第八章南信大教学文稿.docx

C语言上机题库百科园第八章南信大教学文稿

 

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

fprin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1