操作系统原理实验.docx

上传人:b****6 文档编号:7529061 上传时间:2023-01-24 格式:DOCX 页数:63 大小:447.57KB
下载 相关 举报
操作系统原理实验.docx_第1页
第1页 / 共63页
操作系统原理实验.docx_第2页
第2页 / 共63页
操作系统原理实验.docx_第3页
第3页 / 共63页
操作系统原理实验.docx_第4页
第4页 / 共63页
操作系统原理实验.docx_第5页
第5页 / 共63页
点击查看更多>>
下载资源
资源描述

操作系统原理实验.docx

《操作系统原理实验.docx》由会员分享,可在线阅读,更多相关《操作系统原理实验.docx(63页珍藏版)》请在冰豆网上搜索。

操作系统原理实验.docx

操作系统原理实验

操作系统原理实验

经典优秀案例

2011年4月19日星期二

实验要求:

1、代码部分:

注释,包括作者、日期等信息。

2、文件夹:

文正学院学号姓名实验名称,例如:

文正学院0817404039束方桂求平均分,然后对文件夹压缩,以附件形式发送到我的工作邮箱。

3、邮件标题应该注明“文正学院”。

4、提倡独立完成,也可适当学习别人经验,但一定要转换为自己的东西!

5、实验应该及时完成。

6、实验书写应该规范。

7、实验应该包含心得体会。

基础实验:

求平均分

目的:

由于C语言课程的最后才学到文件,由于课时紧张,加上学生准备应付考试,所以大抵一般学生对于文件一章基本都比较陌生,做这个实验的目的,就是让学生提前熟悉文件操作概念、函数等,为以后的实验做好准备,因为后面的实验基本都需要用到文件。

至于指针,由于前面已经学过数据结构,在数据结构这门课程中,大量用到指针,所以一般学生觉得问题不大,但是由于隔得时间较久,还是提醒学生提前复习相关内容。

要求:

可以用C、C++、C#、Java等实现。

该实验最小功能实现求若干学生若干课程的平均分,但是力求功能强大,自由发挥,才能得高分!

方法一:

作者:

文正学院08计算机翁佳栋同学。

求方差等,好创意!

#include

#include

#include

#include

voidmain()

{

FILE*fp,*fp2;

fp2=fopen("out.txt","w");

inti,k;//变量

intj;//人数

structstudent

{

chars[3];//姓名

floatscore[3];//成绩

doubleavg[2];//平均成绩

intrank;//名次

}st[1000];//定义学生结构体

doubleavge[5];//课程平均成绩

doublevar[5];//方差

doublesta_dev[5];//标准差

if((fp=fopen("in.txt","r"))==NULL)

{

printf("cannotopenthisfile\n");

exit(0);

}

while(fgetc(fp)!

='\n')

{}

j=-1;

do

{

j++;

fscanf(fp,"%s%f%f%f%f%f",

&st[j].s,&st[j].score[0],&st[j].score[1],&st[j].score[2],&st[j].score[3],&st[j].score[4]);

st[j].rank=1;

}while(fgetc(fp)!

=EOF);

//输入

j--;

for(i=0;i<=j;i++)

{

st[i].avg[1]=(st[i].score[0]+st[i].score[1]+st[i].score[2]+st[i].score[3]+st[i].score[4])/(double)5.0;

}//求平均成绩

for(i=0;i<=j;i++)

for(k=i+1;k<=j;k++)

{

if(st[i].avg[1]

st[i].rank++;

elseif(st[i].avg[1]>st[k].avg[1])

st[k].rank++;

}

printf("namescore1score2score3score4score5averagerank\n");

fprintf(fp2,"namescore1score2score3score4score5averagerank\n");

//输出表头

for(i=0;i<=j;i++)

{

printf("%s%g%g%g%g%g%.4lf%d\n",

st[i].s,st[i].score[0],st[i].score[1],st[i].score[2],st[i].score[3],st[i].score[4],st[i].avg[1],st[i].rank);

fprintf(fp2,"%s%g%g%g%g%g%.4lf%d\n",

st[i].s,st[i].score[0],st[i].score[1],st[i].score[2],st[i].score[3],st[i].score[4],st[i].avg[1],st[i].rank);

}//输出学生成绩及平均成绩

for(i=0;i<=4;i++)

{avge[i]=0;}

for(i=0;i<=4;i++)

{

for(k=0;k<=j;k++)

{

avge[i]+=st[k].score[i];

}

avge[i]/=5;

}

printf("average%.2lf%.2lf%.2lf%.2lf%.2lf----\n",avge[0],avge[1],avge[2],avge[3],avge[4]);

fprintf(fp2,"average%.2lf%.2lf%.2lf%.2lf%.2lf----\n",avge[0],avge[1],avge[2],avge[3],avge[4]);

//课程的平均成绩

for(i=0;i<=4;i++)

{var[i]=0;}

for(i=0;i<=j;i++)

{

for(k=0;k<=4;k++)

{

var[k]+=(st[i].score[k]-avge[k])*(st[i].score[k]-avge[k]);

}

}

printf("方差%.2lf%.2lf%.2lf%.2lf%.2lf----\n",var[0],var[1],var[2],var[3],var[4]);

fprintf(fp2,"方差%.2lf%.2lf%.2lf%.2lf%.2lf----\n",var[0],var[1],var[2],var[3],var[4]);

for(i=0;i<=5;i++)

sta_dev[i]=sqrt(var[i]);

printf("标准差%.2lf%.2lf%.2lf%.2lf%.2lf----\n",sta_dev[0],sta_dev[1],sta_dev[2],sta_dev[3],sta_dev[4]);

fprintf(fp2,"标准差%.2lf%.2lf%.2lf%.2lf%.2lf----\n",sta_dev[0],sta_dev[1],sta_dev[2],sta_dev[3],sta_dev[4]);

//方差和标准差

fclose(fp);

fclose(fp2);

}

方法二:

作者:

文正学院08计算机顾健同学。

#include

#include

voidmain()

{

inta[5][5],b[5][7],c[5]={0},d[5]={0};

FILE*fp,*fa;

floatave;

inti,j,sum;

if((fp=fopen("stud.txt","r"))==NULL)//||(fp=fopen("score.txt","w"))==NULL)

{

printf("cannotopen.");

exit(0);

}

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

fscanf(fp,"%d",&a[i][j]);

}

}

for(i=0;i<5;i++)

{

for(j=1;j<5;j++)

{

c[i]+=a[i][j];

d[i]=c[i]/4;

}

}

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

b[i][j]=a[i][j];

}

}

for(i=0;i<5;i++)

{

b[i][5]=c[i];

b[i][6]=d[i];

}

printf("numb\tscore1\tscore2\tscore3\tscore4\tsum\tave");

//fprintf(fa,"numbscore1score2score3score4sumave");

for(i=0;i<5;i++)

{

printf("\n");

//fprintf(fa,"\n");

for(j=0;j<7;j++)

{

printf("%d\t",b[i][j]);

//fprintf(fa,"%d\t",b[i][j]);

}

}

printf("\nave\t");

//fprintf(fa,"\nave\t");

for(j=1;j<5;j++)

{

sum=0;

for(i=0;i<5;i++)

{

sum+=a[i][j];

}

ave=sum/5.0;

printf("%3.1f\t",ave);

//fprintf(fp,"%3.1f\t",ave);

}

fp=fopen("score.txt","w");

fprintf(fp,"numb\tscore1\tscore2\tscore3\tscore4\tsum\tave");

for(i=0;i<5;i++)

{

fprintf(fp,"\n");

for(j=0;j<7;j++)

fprintf(fp,"%d\t",b[i][j]);

}

fprintf(fp,"\nave\t");

for(j=1;j<5;j++)

{

sum=0;

for(i=0;i<5;i++)

{

sum+=a[i][j];

}

ave=sum/5.0;

//printf("%3.1f\t",ave);

fprintf(fp,"%3.1f\t",ave);

}

fclose(fp);

printf("\n");

//fprintf(fa,"\n");

fclose(fp);

//fclose(fa);

}

方法三:

作者:

文正学院08计算机束方桂同学。

#include

#include"process.h"

#include"ctype.h"

#include"math.h"

constintSTUNUM=5;

constintCOURSENUM=5;

voidsort(int*pa,float(*pb)[2]);

voidmain()

{

char*title[]={"rank","C1","C2","C3","C4","C5","ave"};

floatscore[STUNUM][COURSENUM];

floatstuAve[STUNUM][2]={{0,0}};

floatcourseAve[COURSENUM]={0};

floattotalAve=0;

intrank[STUNUM]={0};

intcurStu=0;

inttempa[2]={0};

FILE*fp,*wp;

float*clacAve(float*pa[COURSENUM]);

float(*average)[2];

if((fp=fopen("scoreData.txt","rt"))==NULL||(wp=fopen("rank.txt","w"))==NULL)

{

printf("\nCannotopenfilestrikeanykeyexit!

");

getchar();

exit

(1);

}

for(inti=0;i

for(intj=0;j

{

fscanf(fp,"%f",&score[i][j]);

}

}

 

//printf("\t");

for(intt=0;t<7;t++)

{

printf("%s\t",title[t]);

fprintf(wp,"%-4s\t",title[t]);

}

printf("\n-----------------------------------------------------\n");

fprintf(wp,"\n-----------------------------------------------------\n");

//求学生平均成绩

for(intm=0;m

for(intn=0;n

{

stuAve[m][0]+=score[m][n];

}

stuAve[m][0]/=COURSENUM;

stuAve[m][1]=float(m);//stuID

rank[m]=m;//默认名次

}

 

//排名stuAve

sort(rank,stuAve);

//打印学生成绩及平均成绩

for(intmm=0;mm

{

curStu=stuAve[mm][1];

printf("s%d\t",curStu+1);

fprintf(wp,"s%d\t",curStu+1);

for(intnn=0;nn

{

printf("%3.1f\t",score[curStu][nn]);

fprintf(wp,"%3.1f\t",score[curStu][nn]);

}

printf("%3.1f\n",stuAve[mm][0]);

fprintf(wp,"%3.1f\n",stuAve[mm][0]);

}

//计算课程平均成绩

for(intt1=0;t1

{

for(intt2=0;t2

{

courseAve[t1]+=score[t2][t1];

}

courseAve[t1]/=STUNUM;

}

 

//打印课程平均成绩

printf("-----------------------------------------------------\n");

printf("ave\t");

fprintf(wp,"-----------------------------------------------------\n");

fprintf(wp,"ave\t");

for(inta=0;a

{

printf("%3.1f\t",courseAve[a]);

fprintf(wp,"%3.1f\t",courseAve[a]);

totalAve+=courseAve[a];

}

printf("%3.1f\n",totalAve/COURSENUM);

printf("RankingofscoreData.txtfinished,savedtorank.txt\n");

fprintf(wp,"%3.1f\n",totalAve/COURSENUM);

fclose(wp);

fclose(fp);

}

//*(p+i)+j是二维数组i行j列的元素的地址,而*(*(p+i)+j)则是i行j列元素的值。

voidsort(int*pa,float(*pb)[2])

{

floattemp=0,temp1=0;

intN=STUNUM;

for(inti=0;i

{

for(intj=0;j

{

if(*(*(pb+j)+0)<*(*(pb+j+1)+0))

{

temp=*(*(pb+j)+0);

temp1=*(*(pb+j)+1);

*(*(pb+j)+0)=*(*(pb+j+1)+0);

*(*(pb+j)+1)=*(*(pb+j+1)+1);

*(*(pb+j+1)+0)=temp;

*(*(pb+j+1)+1)=temp1;

}

}

}

}

方法四

输出不及格学生名单,好创意!

作者:

文正学院08计算机沈燕辉同学。

#include

#include

voidmain()

{

FILE*in,*out;

inta[6][6],b[6][8],d[6][8],t[6]={0},z[6]={0},e[6]={0},ave1[6],ave2[6];

int*m,*c[6],*f[6];

inti,j;

charh;

if((in=fopen("inscore.txt","r+"))==NULL)

{

printf("Cannotopenfile\n");

exit(0);

}

for(i=0;i<6;i++)

{

for(j=0;j<6;j++)

{

fscanf(in,"%d",&a[i][j]);//从磁盘文件读入字符

}

}

for(i=0;i<6;i++)

{

for(j=1;j<6;j++)

{

t[i]=t[i]+a[i][j];//求总分数

ave1[i]=t[i]/5;//求平均数

}

}

for(i=0;i<6;i++)//把数组a[i][j]赋给b[i][j]

{

for(j=0;j<6;j++)

b[i][j]=a[i][j];

}

for(i=0;i<6;i++)//把平均数和总分数赋给b[i][6]和b[i][7]

{

for(j=6;j<8;j++){

if(j==6)

b[i][j]=ave1[i];

else

b[i][j]=t[i];

}

}

printf("完成排序后的结果:

\n");

printf("\nNO.\t语文\t数学\t英语\t物理\t化学\t平均分\t总分");

printf("\n............................................................");

for(i=0;i<6;i++)

{

c[i]=&b[i][7];

}

for(j=0;j<6;j++)//排序

for(i=0;i<6;i++)

if(*c[i]<*c[i+1])

{

m=c[i];

c[i]=c[i+1];

c[i+1]=m;

}

for(i=0;i<6;i++)

{

for(j=0;j<8;j++)

{

d[i][j]=*(c[i]-7+j);

}

}

for(i=0;i<6;i++)//输出d[i][j]

{

printf("\n");

for(j=0;j<8;j++)

{

printf("%d\t",d[i][j]);

}

}

printf("\n............................................................");

printf("\n");

printf("均分:

");

for(j=1;j<6;j++)

{

for(i=0;i<6;i++)

{

z[j]=z[j]+b[i][j];

ave2[j]=z[j]/6;

}

printf("%d\t",ave2[j]);

}

printf("\n\n");

printf("是否输出有不及格成绩的学生的学号(y/n):

");

scanf("%c",&h);

if((h=='Y')||(h=='y'))

{

printf("\n");

for(i=0;i<6;i++)

{

for(j=1;j<6;j++)

{

if(d[i][j]<60)

{

f[i]=&d[i][j]-j;

printf("%d\t",*f[i]);

break;

}

}

}

}

printf("\n\n");

if((out=fopen("outscore.txt","w+"))==NULL)//输出到文本

{

printf("Cannotopenfile\n");

exit(0);

}

fprintf(out,"\nNO.\t语文\t数学\t英语\t物理\t化学\t平均分\t总分");

fprintf(out,"\n............................................................");

for(i=0;i<6;i++)

{

fprintf(out,"\n");

for(j=0;j<8;j++)

fprintf(out,"%d\t",d[i][j]);

}

fprintf(out,"\n.........................................

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

当前位置:首页 > 求职职场 > 简历

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

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