C语言实验报告Word格式文档下载.docx

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

C语言实验报告Word格式文档下载.docx

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

C语言实验报告Word格式文档下载.docx

//实际元素个数

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

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

并调用Output输出。

定义局部变量:

STUstu_class_subject [N];

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

intcount;

//实际元素个数

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

将学生信息存入文件。

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

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

#include<

stdio、h>

#include <

stdlib、h>

#include<string、h>

#define N 10

structStudent{

charnum[15];

charname[15];

ﻩcharmajor[10];

intclassNo;

int score[3];

};

typedef struct Student STU;

voidInput(STU*p,intn);

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

voidOutput(STU*p);

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

STUFetch(intstudentIndex);

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

= studentIndex <=N-1)学生得信息

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

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

240得同学)

int Max(STU*p,int scoreIndex);

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

void Sort_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;

//专业名称

STU students[N];

ﻩSTU tem;

ﻩwhile

(1){

ﻩﻩprintf("

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

);

printf("

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

);

printf("

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

=n<

=9)个学生得信

息\n"

ﻩprintf("

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

找\n");

ﻩﻩprintf("

\n4、您将求某一课程分数最高得学生序号得下标\n");

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

"

ﻩﻩprintf("\n6、您将对某一个班得平均成绩由低到高进行起泡排

序法\n"

ﻩﻩprintf("\n7、您将对某门专业得学生得某门课程成绩由低到高

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

printf("\n8、您将把学生信息存入文件\n"

ﻩscanf("%d",&

id);

ﻩﻩgetchar();

ﻩswitch(id){

ﻩﻩcase1:

ﻩﻩ{

ﻩprintf("

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

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

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

ﻩprintf("

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

课程2课程3\n"

ﻩﻩfor(i=0;

i<

N;

i++)

Output(students+i);

//调用Output函数

ﻩﻩﻩﻩbreak;

ﻩ}

ﻩcase 2:

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

息(<%d)\n"

,N);

ﻩscanf("%d"

,&n);

ﻩﻩtem=Fetch(n);

//Fetch

ﻩﻩﻩprintf("

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

,n);

ﻩﻩﻩprintf("\n学号姓名   专业 班级课程1

课程2课程3\n"

ﻩOutput(&tem);

//调用Output函数

ﻩﻩﻩbreak;

ﻩ}

ﻩcase3:

ﻩprintf("

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

ﻩﻩprintf("

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

software=s,network=n)\n");

ﻩﻩﻩprintf("

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

m<300)\n");

ﻩﻩscanf("

%d"

,&

num);

ﻩﻩgetchar();

ﻩﻩscanf("%c"

majorname);

ﻩgetchar();

ﻩﻩscanf("%d"

&

m);

ﻩSearch(students,num,majorname,m);

//调用Search函数

break;

ﻩ}

ﻩcase4:

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

scanf("

corse);

ﻩﻩsub=Max(students,corse);

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

ﻩﻩprintf("

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

,corse);

ﻩprintf("

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

课程1  课程2\n"

ﻩﻩOutput(students+sub);

//调用Output函数

ﻩbreak;

}

ﻩcase5:

ﻩﻩ{

ﻩﻩﻩﻩprintf("

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

\n"

ﻩﻩSort_select(students);

//调用Sort_select函数

ﻩﻩbreak;

ﻩﻩ}

ﻩﻩcase6:

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

ﻩscanf("%d"

num);

ﻩﻩprintf("

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

\n"

ﻩSort_buble(students,num);

//调用Sort_buble函数

ﻩﻩbreak;

ﻩﻩ}

case 7:

{

ﻩﻩﻩprintf("

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

ﻩﻩprintf("\n请输入专业名称majorname(puter=c,

software=s,network=n)\n"

ﻩscanf("%d"

corse);

ﻩgetchar();

ﻩﻩscanf("

%c"

majorname);

ﻩﻩﻩprintf("

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

入排序后得顺序:

ﻩﻩﻩSort_insert(students,corse,&

majorname);

//调用Sort_insert函数

ﻩﻩﻩbreak;

ﻩ}

ﻩcase8:

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

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

ﻩﻩﻩbreak;

ﻩ}

default:

ﻩ{

ﻩﻩbreak;

ﻩﻩif((id<

1)||(id>

8))

ﻩﻩﻩbreak;

ﻩ}

}

3、Input函数

#include"

student、h"

void Input(STU *p,int n)

FILE *fp;

ﻩchar[15];

ﻩprintf("

\n请输入打开文件名:

gets();

ﻩfp=fopen(,"r"

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

ﻩfclose(fp);

4、Output函数

#include"student、h"

voidOutput(STU* p)

printf("

\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函数

#include"

student、h"

STUFetch(intstudentIndex)

ﻩSTUtem;

ﻩFILE* fp;

char[15];

if((studentIndex<0)||(studentIndex>

N-1)){

ﻩprintf("

studentIndex error\n"

ﻩexit(0);

getchar();

printf("

\n请输入打开文件名:

\n");

gets();

fp=fopen(,"

r"

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

ﻩfread(&

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

ﻩfclose(fp);

returntem;

6、Search函数

#include "

student、h"

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

ﻩinti;

ﻩfor(i=0;

i<

N;

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);

ﻩﻩprintf("

\n学号   姓名专业  班级

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

ﻩﻩOutput(p+i);

}

7.Max函数

#include"

student、h"

int Max(STU * p,intscoreIndex)

ﻩinti=0,max,result;

ﻩmax=(p+i)->score[scoreIndex];

result=i;

for(i=1;

i++){

ﻩﻩif((p+i)->

score[scoreIndex]>

max){

ﻩﻩmax=(p+i)->score[scoreIndex];

ﻩﻩﻩresult=i;

ﻩ}

}

ﻩreturnresult;

8、Sort_select函数

#include"

student、h"

voidSort_select(STU *p)

int i,j,k;

ﻩfloatsum,ave[N],t;

STUtem;

ﻩfor(i=0;

i<N;

ﻩsum=0、0;

ﻩsum=sum+(p+i)->score[0]+(p+i)->

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

score[2];

ﻩave[i]=sum/3;

i<N-1;

i++){

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;

printf("

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

课程3\n"

for(i=0;

N;

i++)

ﻩOutput(p+i);

9、Sort_buble函数

#include"student、h"

voidSort_buble(STU*p,int n)

STUstu_class_ave[N],tem;

ﻩinti,j=0,count=0;

ﻩfloatsum,ave[N],t;

for(i=0;

i<N;

ﻩif((p+i)->

classNo==n){

ﻩﻩcount++;

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

ﻩﻩj++;

ﻩﻩsum=0、0;

ﻩ   sum=sum+(p+i)->score[0]+(p+i)->

score[1]+

(p+i)->

score[2];

ﻩ  ave[i]=sum/3;

for(i=0;

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;

ﻩﻩﻩ}

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

课程3\n"

for(j=0;

j<

count;

j++)

ﻩOutput(stu_class_ave+j);

10、Sort_insert函数

#include "student、h"

void Sort_insert(STU* p,intn,char *major)

STUstu_class_subject[N];

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

ﻩfor(i=0;

i<N;

i++)

if(*major==(p+i)->major[0]){

count++;

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

ﻩﻩj++;

ﻩ}

ﻩfor(i=2;

i<=count;

i++){

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];

ﻩprintf("

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

课程3\n");

for(j=1;

=count;

ﻩOutput(stu_class_subject+j);

11、Save函数

#include"

student、h"

voidSave(STU*p,int n)

FILE*fp;

ﻩchar[15];

ﻩint i;

ﻩprintf("

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

\n"

ﻩgets();

ﻩif((fp=fopen(,"wb"

))==NULL){

ﻩﻩprintf("cannotopenfile\n"

ﻩreturn;

ﻩ}

for(i=0;

n;

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

=1)

ﻩprintf("

error\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