C语言上机题库百科园第八章南信大Word文件下载.docx
- 文档编号:21849003
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:31
- 大小:28.80KB
C语言上机题库百科园第八章南信大Word文件下载.docx
《C语言上机题库百科园第八章南信大Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言上机题库百科园第八章南信大Word文件下载.docx(31页珍藏版)》请在冰豆网上搜索。
#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<
N)
{q=(STREC*)malloc(sizeof(STREC));
s=s[i];
i++;
p->
next=q;
p=q;
}
next=0;
returnh;
outlist(STREC*h)
STREC*p;
p=h->
printf("
head"
);
do
{printf("
->
%4.1f"
p->
s);
p=p->
/*输出各成绩*/
while(p!
=NULL);
\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);
ave=%6.3f\n"
ave);
/******************************/
wf=fopen("
debug\\"
"
w"
fprintf(wf,"
%6.3f\n"
fclose(wf);
/*****************************/
【参考代码】
doubleav=;
STREC*p=h->
/*p直接指向"
头节点"
的下一个节点,即第一个成绩*/
=NULL)
{av=av+p->
s;
/*求总分数*/
}
returnav/N;
/*返回平均值*/
/*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,该函数的功能是:
把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
*/
#include<
#defineN12
typedefstruct
{charnum[10];
doubles;
}STREC;
doublefun(STREC*a,STREC*b,int*n)
/*************Begin************/
/*************End*************/
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);
The%dstudentdatawhichishigherthan%7.3f:
\n"
n,ave);
for(i=0;
i<
n;
i++)
printf("
%s%4.1f\n"
h[i].num,h[i].s);
n-1;
for(j=i+1;
j<
j++)
if(h[i].s<
h[j].s)
{t=h[i];
h[i]=h[j];
h[j]=t;
}/*分数从高到低排列*/
fprintf(wf,"
%d%7.3f\n"
inti;
*n=0;
i<
N;
i++)
av=av+a[i].s;
av=av/N;
/*求平均值*/
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中。
#defineN16
ints;
}STREC;
intfun(STREC*a,STREC*b,intl,inth)
/************Begin*************/
/************End************/
voidmain()
STRECs[N]={{"
GA005"
GA003"
GA002"
GA004"
GA001"
96},{"
GA007"
GA008"
GA006"
GA015"
GA013"
94},{"
GA012"
GA014"
91},
GA011"
90},{"
GA017"
GA018"
GA016"
72}};
STRECh[N],tt;
inti,j,n,low,heigh,t;
Enter2integernumberlow&
heigh:
"
scanf("
%d%d"
&
low,&
heigh);
if(heigh<
low)
{t=heigh;
heigh=low;
low=t;
n=fun(s,h,low,heigh);
Thestudent'
sdatabetween%d--%d:
\n"
low,heigh);
i++)
%s%4d\n"
h[i].num,h[i].s);
/*输出指定分数范围内的学生记录*/
n=fun(s,h,80,98);
i++)/*分数在80~98之间的学生记录按分数从低到高排列*/
if(h[i].s>
{tt=h[i];
h[j]=tt;
%s%4d\n"
inti,j=0;
if(a[i].s>
=l&
&
a[i].s<
=h)
/*将分数高于l,低于h的学生记录存于结构体数组b中*/
b[j++]=a[i];
returnj;
/*返回分数范围内的学生人数*/
/*某学生的记录由学号、8门课成绩和平均分组成,学号和8门课的成绩已在主函数中给出。
请编写fun函数,它的功能是:
求出该学生的平均分放在记录的ave成员中。
请自己定义正确的形参。
例如,若学生的成绩是,76,,85,91,72,,,则他的平均分应当是。
doubles[N];
voidfun(STREC*p)
/************End**************/
STRECs={"
GA005"
85.5,76,69.5,85,91,72,64.5,87.5};
fun(&
The%s'
sstudentdata:
;
/*输出学号*/
%4.1f\n"
[i]);
/*输出各科成绩*/
\nave=%7.3f\n"
/*输出平均分*/
ave=%7.3f\n"
inti;
ave=;
for(i=0;
ave=p->
ave+p->
s[i];
/*求各门成绩的总和*/
ave/N;
/*求平均分*/
/*已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。
请编写函数fun,
该函数的功能是:
找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。
已给出函数的首部,请完成该函数。
*/
#defineN10
typedefstructss
ints;
}STU;
fun(STUa[],STU*s)
/***********Begin**************/
STUa[N]={{"
A01"
81},{"
A02"
89},{"
A03"
66},{"
A04"
87},{"
A05"
77},
{"
A06"
90},{"
A07"
79},{"
A08"
61},{"
A09"
80},{"
A10"
71}},m;
*****Theoriginaldata*****\n"
No=%sMark=%d\n"
a[i].num,a[i].s);
fun(a,&
m);
*****THERESULT*****\n"
Thelowest:
%s,%d\n"
,;
%s%d\n"
*s=a[0];
/*先认为第1个值最小*/
i++)/*如果在循环的过程中,发现比第1个值更小的则赋给*s*/
if(s->
s>
a[i].s)
*s=a[i];
/*学生的记录由学生和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,其功能是:
把分数最低的学生数据放在h所指的数组中。
分数最低的学生可能不止一个,函数返回分数最低的学生的人数。
#defineN16
intfun(STREC*a,STREC*b)
/************Begin************/
{"
64},{"
87},{"
STRECh[N];
inti,n;
FILE*out;
n=fun(s,h);
The%dlowestscore:
n);
/******************************/
out=fopen("
fprintf(out,"
%d\n"
fprintf(out,"
%4d\n"
h[i].s);
fclose(out);
inti,j=0,n=0,min;
min=a[0].s;
if(a[i].s<
min)
min=a[i].s;
if(a[i].s==min)
{
*(b+j)=a[i];
j++;
n++;
returnn;
/*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:
把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。
doublefun(STREC*a,STREC*b,int*n)
/************End***************/
GA05"
85},{"
GA03"
76},{"
GA02"
69},{"
GA04"
GA01"
91},{"
GA07"
72},{"
GA08"
64},{"
GA06"
87}};
The%dstudentdatawhichislowerthan%7.3f:
n,ave);
i++)/*输出成绩低于平均值的学生记录*/
%s%4.1f\n"
av)b[j++]=a[i];
/*将低于平均值的学生记录存入结构体b中*/
*n=j;
/*指针传回低于平均值的学生人数*/
/*返回平均值*/
/*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:
把分数最高的学生数据放在b所指的数组中,注意:
分数最高的学生可能不止一个,函数返回分数最高的学生的人数。
部分源程序在文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
给定源程序:
#defineN16
typedefstruct
ints;
intfun(STREC*a,STREC*b)
/**************Begin*************/
/*************End***************/
intmain()
{STRECs[N]={{"
85},
87},
91},
77},{"
STRECh[N];
FILE*out;
The%dhighestscore:
out=fopen("
fprintf(out,"
return0;
按分数的高低排列学生的记录,高分在前。
voidfun(STRECa[])
/*******
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 题库 百科 第八 章南信大
![提示](https://static.bdocx.com/images/bang_tan.gif)