C语言实验报告.docx
- 文档编号:4034437
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:16
- 大小:174.54KB
C语言实验报告.docx
《C语言实验报告.docx》由会员分享,可在线阅读,更多相关《C语言实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
C语言实验报告
《C语言程序设计实训1》报告
设 计题目:
基于数组得学生信息管理系统
学 院 名 称:
信息科学技术学院
专 业:
计算机科学与技术
班 级:
姓 名:
学号
指 导 教 师:
提 交 日 期:
2014年12月22日
一、实验内容
编写并调试程序,实现学校各专业班级学生信息得管理。
10个学生得信息存储在文件studentInit、dat中。
在头文件student、h中定义学生信息得结构体类型,包括:
学号、姓名、专业、班级、3门成绩;与符号常量N(学生数)。
(同一班级得学生可以属于不同得专业,同一专业得学生可以属于不同得班级)
二、实验要求
(1)main函数:
以菜单形式将各项功能提供给用户,根据用户得选择,调用相应得函数。
STUstudent[N];//保存输入得N名学生信息
(2)定义函数voidInput(STU*p, intn):
从文件sutdentInit中输入n个学生得信息。
(3)定义函数voidOutput(STU*p):
将p所指得某个学生信息表格化屏幕输出。
(4)定义函数STU Fetch(intstudentIndex):
从文件中随机读取第studentIndex个(0<=studentIndex<=N-1)学生得信息。
(5)定义函数void Search(STU*p,intclassNo,chars,intscoreSum);:
实现班级与成绩得综合查找(如1班,总分>240得同学)。
(6)定义函数int Max(STU*p,int scoreIndex):
求所有学生、下标为scoreIndex得课程分数最高得学生序号(在数组中得下标),学生序号作为返回值。
(7)定义函数voidSort_select(STU*p):
对所有学生,按平均成绩由低到高进行简单选择排序。
(8)定义函数voidSort_buble(STU*p,int n); 对某个班级得学生,按平均成绩由高到低进行起泡排序。
并调用Output输出。
定义局部变量:
STUstu_class_ave[N]; //按平均成绩排序后得某个班级得学生信息;
intcount;//实际元素个数
(9)定义函数voidSort_insert(STU*p,intn,char*major):
对某个专业得学生,按某门课程成绩由低到高进行直接插入排序。
并调用Output输出。
定义局部变量:
STUstu_class_subject [N];//按某门课程成绩排序后得某个专业得学生信息;
intcount;//实际元素个数
(10)定义函数void Save(STU *p,intn):
将学生信息存入文件。
四、程序清单(关键语句与变量加注释)
1.头文件,类型定义,函数声明
#include #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 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 ﻩﻩ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("%d",&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下面就是对某一专业学生得某一课程直接插 入排序后得顺序: \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请输入打开文件名: \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 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;i++){ ﻩsum=0、0; ﻩsum=sum+(p+i)->score[0]+(p+i)->score[1]+(p+i)->score[2]; ﻩave[i]=sum/3;ﻩ } ﻩfor(i=0;i<N-1;i++){ k=i;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告