C语言实验报告Word版Word文档下载推荐.docx

上传人:b****5 文档编号:18521879 上传时间:2022-12-19 格式:DOCX 页数:16 大小:157.96KB
下载 相关 举报
C语言实验报告Word版Word文档下载推荐.docx_第1页
第1页 / 共16页
C语言实验报告Word版Word文档下载推荐.docx_第2页
第2页 / 共16页
C语言实验报告Word版Word文档下载推荐.docx_第3页
第3页 / 共16页
C语言实验报告Word版Word文档下载推荐.docx_第4页
第4页 / 共16页
C语言实验报告Word版Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C语言实验报告Word版Word文档下载推荐.docx

《C语言实验报告Word版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言实验报告Word版Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

C语言实验报告Word版Word文档下载推荐.docx

typedefstructStudentSTU;

二、实验要求

(1)main函数:

以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数。

STUstudent[N];

//保存输入的N名学生信息

(2)定义函数voidInput(STU*p,intn):

从文件sutdentInit中输入n个学生的信息。

(3)定义函数voidOutput(STU*p):

将p所指的某个学生信息表格化屏幕输出。

(4)定义函数STUFetch(intstudentIndex):

从文件中随机读取第studentIndex个(0<

=studentIndex<

=N-1)学生的信息。

(5)定义函数voidSearch(STU*p,intclassNo,chars,intscoreSum);

实现班级和成绩的综合查找(如1班,总分>

240的同学)。

(6)定义函数intMax(STU*p,intscoreIndex):

求所有学生、下标为scoreIndex的课程分数最高的学生序号(在数组中的下标),学生序号作为返回值。

(7)定义函数voidSort_select(STU*p):

对所有学生,按平均成绩由低到高进行简单选择排序。

(8)定义函数voidSort_buble(STU*p,intn);

对某个班级的学生,按平均成绩由高到低进行起泡排序。

并调用Output输出。

定义局部变量:

STUstu_class_ave[N];

//按平均成绩排序后的某个班级的学生信息;

intcount;

//实际元素个数

(9)定义函数voidSort_insert(STU*p,intn,char*major):

对某个专业的学生,按某门课程成绩由低到高进行直接插入排序。

STUstu_class_subject[N];

//按某门课程成绩排序后的某个专业的学生信息;

(10)定义函数voidSave(STU*p,intn):

将学生信息存入文件。

四、程序清单(关键语句和变量加注释)

1.头文件,类型定义,函数声明

#include<

stdio.h>

stdlib.h>

string.h>

voidInput(STU*p,intn);

//从文件sutdentInit中输入n个学生的信息

voidOutput(STU*p);

//将p所指的某个学生信息表格化屏幕输出

STUFetch(intstudentIndex);

//从文件中随机读取第studentIndex个(0<

=N-1)学生的信息

voidSearch(STU*p,intclassNo,chars,intscoresum);

//实现班级和成绩的综合查找(如1班,总分>

240的同学)

intMax(STU*p,intscoreIndex);

//求所有学生、下标为scoreIndex的课程分数最高的学生序号(在数组中的下标),学生序号作为返回值

voidSort_select(STU*p);

//对所有学生,按平均成绩由低到高进行简单选择排序

voidSort_buble(STU*p,intn);

//对某个班级的学生,按平均成绩由高到低进行起泡排序

voidSort_insert(STU*p,intn,char*major);

//对某个专业的学生,按某门课程成绩由低到高进行直接插入排序

voidSave(STU*p,intn);

//将学生信息存入文件

2.主函数

#include"

student.h"

voidmain()

{

inti,n,id,num,m,sub,corse;

//n,第几个结构体;

id,菜单序号;

num,班级号;

sub,学生下标;

corse,课程下标

charmajorname;

//专业名称

STUstudents[N];

STUtem;

while

(1){

printf("

\n请输入功能编号,运行相应功能\n"

);

\n1.您将从文件中读取10个人的信\n"

printf("

\n2.您将从文件中随机读取第n(0<

=n<

=9)个学生的信

息\n"

\n3.您将根据某一班级某一专业总分超过多少进行查

找\n"

\n4.您将求某一课程分数最高的学生序号的下标\n"

\n5.您将对平均成绩由低到高进行简单选择排序法\n

"

\n6.您将对某一个班的平均成绩由低到高进行起泡排

序法\n"

\n7.您将对某门专业的学生的某门课程成绩由低到高

进行直接插入排序法\n"

\n8.您将把学生信息存入文件\n"

scanf("

%d"

&

id);

getchar();

switch(id){

case1:

{

printf("

\n从文件中读取信息\n"

Input(students,sizeof(students)/sizeof(STU));

//调用Input函数,sizeof(students)/sizeof(STU)表示要读取几个学生的信息

\n学号姓名专业班级课程1

课程2课程3\n"

for(i=0;

i<

N;

i++)

Output(students+i);

//调用Output函数

break;

}

case2:

\n请输入您想从文件中读取第几个结构体信

息(<

%d)\n"

N);

scanf("

n);

tem=Fetch(n);

//Fetch

\n下面是第%d个结构体的信息\n"

n);

Output(&

tem);

case3:

\n请输入班级号num(1或2)\n"

\n请输入专业名称majorname(computer=c,

software=s,network=n)\n"

\n请输入一个分数m(0<

m<

300)\n"

num);

getchar();

%c"

majorname);

m);

Search(students,num,majorname,m);

//调用Search函数

case4:

\n请输入某一课程下标corse(0,1,2)\n"

corse);

sub=Max(students,corse);

//调用Max函数,返回值给sub

\n下面是课程%d最高分学生的信息\n"

corse);

\n学号姓名专业班级课程0

课程1课程2\n"

Output(students+sub);

case5:

\n下面是对所有学生的平均成绩简单选择排序后的顺序:

\n"

Sort_select(students);

//调用Sort_select函数

case6:

\n请输入一个班级号num(1或2)\n"

\n下面是对某个班级起泡排序后顺序:

Sort_buble(students,num);

//调用Sort_buble函数

case7:

\n下面是对某一专业学生的某一课程直接插

入排序后的顺序:

Sort_insert(students,corse,&

//调用Sort_insert函数

case8:

Save(students,sizeof(students)/sizeof(STU));

//调用Save函数,sizeof(students)/sizeof(STU)表示要保存几个学生的信息

default:

if((id<

1)||(id>

8))

break;

}

}

}

3.Input函数

voidInput(STU*p,intn)

FILE*fp;

charfilename[15];

printf("

\n请输入打开文件名:

gets(filename);

fp=fopen(filename,"

r"

fread(p,sizeof(STU),n,fp);

fclose(fp);

4.Output函数

voidOutput(STU*p)

\n%-5s%-10s%-8s%6d%6d%7d%7d\n"

p->

num,p->

name,p->

major,p->

classNo,p->

score[0],p->

score[1],p->

score[2]);

5.Fetch函数

STUFetch(intstudentIndex)

if((studentIndex<

0)||(studentIndex>

N-1)){

studentIndexerror\n"

exit(0);

getchar();

fseek(fp,(long)(studentIndex*sizeof(STU)),SEEK_SET);

fread(&

tem,sizeof(STU),1,fp);

returntem;

6.Search函数

voidSearch(STU*p,intclassNo,chars,intscoreSum)

inti;

for(i=0;

i++){

if((p+i)->

classNo==classNo)

if((p+i)->

major[0]==s)

if(((p+i)->

score[0]+(p+i)->

score[1]+(p+i)->

score[2])>

scoreSum){

printf("

\n下面是班级%d专业%c超过%d分的学生

信息\n"

classNo,s,scoreSum);

\n学号姓名专业班级

课程1课程2课程3\n"

Output(p+i);

}

7.Max函数

intMax(STU*p,intscoreIndex)

inti=0,max,result;

max=(p+i)->

score[scoreIndex];

result=i;

for(i=1;

score[scoreIndex]>

max){

max=(p+i)->

result=i;

returnresult;

8.Sort_select函数

voidSort_select(STU*p)

inti,j,k;

floatsum,ave[N],t;

sum=0.0;

sum=sum+(p+i)->

score[2];

ave[i]=sum/3;

N-1;

k=i;

for(j=k+1;

j<

j++){

if(ave[j]<

ave[k])

k=j;

t=ave[k];

ave[k]=ave[i];

ave[i]=t;

tem=*(p+k);

*(p+k)=*(p+i);

*(p+i)=tem;

\n学号姓名专业班级课程1课程2

课程3\n"

Output(p+i);

9.Sort_buble函数

voidSort_buble(STU*p,intn)

STUstu_class_ave[N],tem;

inti,j=0,count=0;

classNo==n){

count++;

stu_class_ave[j]=*(p+i);

j++;

sum=0.0;

sum=sum+(p+i)->

score[1]+

(p+i)->

count-1;

for(j=0;

count-i-1;

j++)

if(ave[j]>

ave[j+1]){

t=ave[j];

ave[j]=ave[j+1];

ave[j+1]=t;

tem=stu_class_ave[j];

stu_class_ave[j]=stu_class_ave[j+1];

stu_class_ave[j+1]=tem;

for(j=0;

count;

Output(stu_class_ave+j);

10.Sort_insert函数

voidSort_insert(STU*p,intn,char*major)

STUstu_class_subject[N];

inti=0,j=1,count=0;

if(*major==(p+i)->

major[0]){

stu_class_subject[j]=*(p+i);

for(i=2;

=count;

stu_class_subject[0]=stu_class_subject[i];

for(j=i-1;

stu_class_subject[0].score[n]<

stu_class_subject

[j].score[n];

j--)

stu_class_subject[j+1]=stu_class_subject[j];

stu_class_subject[j+1]=stu_class_subject[0];

for(j=1;

Output(stu_class_subject+j);

11.Save函数

voidSave(STU*p,intn)

\n请输入保存的文件名:

if((fp=fopen(filename,"

wb"

))==NULL){

cannotopenfile\n"

return;

n;

if(fwrite(p++,sizeof(STU),1,fp)!

=1)

printf("

filewriteerror\n"

五、程序测试(Input、Search、Max、Sort_buble、Sort_insert函数的调用及执行结果的截图)

1.Input函数

2.Search函数

3.Max函数

4.Sort_buble函数

5.Sort_insert函数

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

当前位置:首页 > 人文社科 > 文化宗教

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

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