《C语言程序设计项目化教程(周雅静第3版) 训练及综合练习答案 项目8 训练与作业参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计项目化教程(周雅静第3版) 训练及综合练习答案 项目8 训练与作业参考答案.docx(13页珍藏版)》请在第一文库网上搜索。
1、项目8学生成绩文件管理实践训练1 .从键盘上输入小王所在小组10个员工的工资信息:姓名、基本工资、岗位津贴、通信补贴,以文本文件方式存入磁盘。参考程序:方法1:ttinc1udestdio.hmain()inta103,i,j;charname1010;FI1E*p;定义一个文件指针类型的变量p=fopen(z,aaa.txt,w);打开一个文件用以写入文本文件Printf(请输入10个员工的工资信息:姓名、基本工资、岗位津贴、通信补贴M);for(i=0;i10;i+)Printf(第%d个,i+1);scanf(%s”,namei);for(j=0;j3;j+)scanf(%d”,&aij
2、);/*将从键盘上读入的数据写入到aaa.txt文件中*/for(i=0;i10;i+)fprintf(p,s”,namei);for(j=0;j3;j+)fprintf(p,%5d”,aij);fc1ose(p);关闭文件)方法2(用结构体)#CIefineN10ttinc1udestdio.hinc1udeprocess,h有exit。函数,所有用此库函数/*定乂结构体*/structworkercharname10;itjg,gj,tb;main()workeremp1oyeeN,*pp;FI1E*fp;inti;pp=emp1oyee;*以写入的形式打开文件aa.txt*/if(fp=
3、fopen(*aa.txt,w)=NU11)printf(打不开文件n);exit(1);Printf(请输入如个员工的姓名、基本工资、岗位津贴、通信补贴n”,N);/*输入10个员工的工资信息:姓名、基本工资、岗位津贴、通信补贴*/for(i=0;iname,&pp-jg,&pp-gj,pp-tb);pp=emp1oyee;/*将10个员工的工资信息:姓名、基本工资、岗位津贴、通信补贴写入到文件aa.txt中*/for(i=0;inamefpp-jg,pp-gj,pp-tb);fc1ose(fp);关闭文件2 .从键盘中输入小王所在小组10个员工的信息:姓名、基本工资、岗位津贴、通信补贴,计
4、算每个员工的总收入,然后将此10个员工的姓名、基本工资、岗位津贴、通信补贴、总收入写入到文本文件aa.txt中。参考程序:方法1:#inc1ude*stdio.hdefineN10main()intaN4,i,j,bN4;charnameN10;charnnN10;FI1E*p;定义一个文件指针类型的变量p=fopeC,aa.txt,w);/打开一个文件用以写入文本文件Printf(请输入如个员工的工资信息:姓名、基本工资、岗位津贴、通信补贴n”,N);for(i=0;iN;i+)Printf(第%d个,i+1);scanf(%s,namei);for(j=0;j3;j+)scanf(%d”,
5、&aij);ai3=ai0+ai1+ai2;*将从键盘上读入的数据写入到aa.txt文件中*/for(i=0;iN;i+)fprintf(p,%s”,namei);for(j=0;j4;j+)fprintf(p,%5d”,aij);fc1ose(p);关闭文件方法2defineN2#inc1ude*stdio.h*inc1udeprocess,h有exit()函数,所有用此库函数/*定乂结构体*/structworkercharname10;itjg,gj,tb,ss;main()workeremp1oyeeN,*pp;FI1E*fp;inti;pp=emp1oyee;*以写入的形式打开文件a
6、a.txt*/if(fp=fopen(*aa.txt,w)=NU11)printf(打不开文件n);exit(1);Printf(请输入d个员工的姓名、基本工资、岗位津贴、通信补贴n,N);/*输入10个员工的工资信息:姓名、基本工资、岗位津贴、通信补贴*/for(i=0;iname,pp-jg,&pp-gj,pp-tb);pp-ss=pp-gj+pp-jg+pp-tb;pp=emp1oyee;/*将10个员工的工资信息:姓名、基本工资、岗位津贴、通信补贴写入到文件aa.txt中*/for(i=0;iname,pp-jg,PP-gj,pp-tb,pp-ss);fc1ose(fp);关闭文件3
7、.将上题中的文本文件aa.txt数据读出,并将读出的数据输出在显示器上。参考程序:方法1:inc1udestdio.hdefineN10main()inti,j,bN4;charnnN10;FI1E*p;定义一个文件指针类型的变量p=fopen(,aa.txt,r);打开aaa.txt文件/*从aaa.txt文件中读入数据到数组nn和数组b中*/for(i=0;iN;i+)fscanf(p,s,nni);for(j=0;j4;j+)fscanf(p,%d,&bij);*输出数组b*/for(i=0;iN;i+)Printf(%s,nni);for(j=0J4;j+)printf(*%5d*,b
8、ij);printf(n);fc1ose(p);方法2(结构体)defineN10inc1udestdio.hinc1udeprocess.h有exit。函数,所有用此库函数/*定义结构体*/structworkercharname10;itjg,gj,tb,ss;main()workeremp1oyeeN,*pp;FI1E*fp;inti;pp=emp1oyee;*以读入的形式打开文件aa.txt*/if(fp=fopen(z,aa.txt,r)=NU11)printf(打不开文件n);exit(1);/*从文件中将10个员工的工资信息:姓名、基本工资、岗位津贴、通信补贴,总收入读入到结构体
9、数组emp1oyee中*/for(i=0;iname,pp-jg,&PP-gj,pp-tb,&pp-ss);fc1ose(fp);pp=emp1oyee;/*输出结构体数组student*/Printf(从文件aa.txt中读出的数据为:n);for(i=0;iname,pp-jg,pp-gj,pp-tb,pp-ss);4 .按照输入员工的姓名,在aa.txt文件中查找该员工,找到以后输出该员工的所有数据,如果文件中没有输入的员工姓名,给出相应的提示信息。参考程序:defineN10ftinc1ude*stdio.hinc1udeprocess有exit。函数,所有用此库函数#inc1udes
10、tring.h*定义结构体*/structworkercharname10;itjg,gj,tb,ss;)main()workeremp1oyeeN,*pp;charnn10;FI1E*fp;inti;i=0;fp=fopen(z,aa.txt,r);Printf(请输入要查找的姓名:);gets(nn);whi1e(!feof(fp)fscanf(fp,%s%d%d%d%d”,emp1oyeei.name,&emp1oyeei.jg,emp1oyeei.gj,&emp1oyeei.tb,emp1oyeei.ss);if(strcmp(nn,emp1oyeei.name)=0)(printf(
11、/,%s%d%d%d%dnz,emp1oyeei.name,emp1oyeei.jg,emp1oyeei.gj,emp1oyeei.tb,emp1oyeei.ss);break;i+;)if(i=N)Printf(对不起,查无此人!r);fc1ose(fp);)5 .输入5个学生的信息:学号(2位整数)、姓名、3门课的成绩(3位整数1位小数)。计算每个学生的平均成绩(3位整数2位小数),将所有数据写入文件STU1.DATo参考程序:defineN10#inc1udestdio.hinc1udeprocess有exit。函数,所有用此库函数/*定义结构体*/structstucharid5,na
12、me10;f1oatm1,m2,m3,avg;)main()stustudentN,*pp;FI1E*fp;inti;pp=student;*以写入的形式打开文件STU1.DAT*/if(fp=fopen(STU1DAT,Vz)=NU11)printf(打不开文件n);exit(1);)Printf(请输入%d个学生的数据n,N);/*输入N个同学的学号,姓名、三门课成绩并计算每个同学的平均分*/for(i=0;iid,pp-name,pp-m1,&pp-m2,&pp-m3);pp-avg=(pp-m1+pp-m2+pp-m3)/3.0;)pp=student;/*将十个同学的姓名、三门课成绩、平均分写入到文件aa.txt中*/for(i=0;iid,pp-name,pp-m1,pp-m2,pp-m3,pp-avg);fc1ose(fp);关闭文件)6 .从STU1DAT文件中读入学生数据,按平均成绩从高到低排序后写入文件STU2.DAT;参考程序:#defineN10#inc1udestdio.h#inc1ude,process.h有exi1()函数,所有用此库函数/*定义结构体*/structstu(charid5,name10;f1oatm1,m2,m3,avg;main()stu