1.将10个学生信息(有学号,姓名,性别,年龄,数学成绩,英语成绩,数据成绩,操作成绩)存入到磁盘文件中
2.将磁盘文件中的所有学生记录读入内存中一块静态顺序空间中(使用数组申请),求出所有学生数学的平均成绩
3.将磁盘文件中的所有学生记录读入内存中一块动态申请的顺序空间中(使用函数malloc或new申请),求出所有学生各门课程的平均成绩
编了半天,啥也不是,孩子脑子不太行,求大佬解救
#include<stdio.h>
#include<stdlib.h>
struct student_type{
char id[5];
char name[8];
char sex[3];
int age;
int math;
int eng;
int ds;
int os;
};
void static_read(char *filename)
{
FILE *fp;
int i;
struct student_type s[10];
int msum=0;
if((fp=fopen(filename,"r"))==NULL)
{
printf("文件打开失败");
}
else
{
printf("使用静态顺序空间读取文件内容,结果如下: \n");
for(i=0;i<10;i++)
{
fscanf(fp,"%s %s %s %d %d %d %d %d",s[i].id,s[i].name,s[i].sex,&s[i].age,&s[i].math,&s[i].eng,&s[i].ds,&s[i].os);
msum+=s[i].math;
}
printf("所有学生数学的平均成绩为: ");
printf("%.1f\n\n",msum/10.0);
fclose(fp);
}
}
void dynamic_read(char *filename)
{
FILE *fp;
int i;
int msum=0,esum=0,dsum=0,osum=0;
struct student_type *p;
if((fp=fopen(filename,"r"))==NULL)
{
printf("文件打开失败");
}
else
{
p=(struct student_type *)malloc(sizeof(struct student_type)*10);
printf("使用malloc()函数申请空间读取文件内容,结果如下: \n");
printf("学号\t姓名\t性别\t年龄\t数学\t英语\t数据结构\t操作系统\n");
for(i=0;i<10;i++,p++)
{
fscanf(fp,"%s %s %s %d %d %d %d %d",p->id,p->name,p->sex,&p->age,&p->math,&p->eng,&p->ds,&p->os);
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->age,p->math,p->eng,p->ds,p->os);
msum+=p->math;
esum+=p->eng;
dsum+=p->ds;
osum+=p->os;
}
fclose(fp);
printf("各门课程的平均分: \n");
printf("数学:%.1f\n英语:%.1f\n数据结构:%.1f\n操作系统:%.1f\n",msum/10.0,esum/10.0,dsum/10.0,osum/10.0);
}
}
int main()
{
char *fn="stu_list.in";
static_read(fn);
dynamic_read(fn);
return 0;
}
可能还有问题,孩子脑子已经不太行了
你是要用c语言实现吗?
我会
就是使用数组或者动态开辟一块数组存储数据,然后将数据写入文件中去,然后在文件中读取这块数据
先自己写写,有问题再贴出来问