要怎样读取每个学生的各个分数啊?然后去计算它们的平均值!
[此贴子已经被作者于2006-12-7 17:15:48编辑过]
该学习了。。。
比如数据相当多,如Hash table,将数据存储于文件,可以减少内存的占用,将余下的内存中存储重要的数据.还有就是文件的处理,比如*.doc->*.wps,必须运用文件.
当然,文件运用还有许多...
FILE *input; /*定义文件指针*/
input=fopen("文件名","打开方式(w写,r读.....当然还有许多其它的"); /*打开文件*/
fprintf(input,"格式,与printf一样", ); /*写文件*/
fscanf(input,"格式,与scanf一样", ); /*读入文件内容*/
fclose(input); /*关文件*/
最好的方法是建一个与数据类型一样的结构体,然后
fread(结构体变量地址,sizeof(struct 结构体名),1,文件指针);
当然也可以不用结构体,不过麻烦,读入方法为
fread(变量地址,sizeof(变量类型),1,文件指针);
至于平均值问题你应该会吧
我是这么写的!我感觉很别扭!我想肯定是错了!
#include <stdio.h>
#include <stdlib.h>
#define N 100
#include <string.h>
struct student
{
char name[12];
float score[4];
}number[N];
struct str
{
char name[12];
float scores;
}numb[N];
int main()
{
int num, i;
FILE * fp;
FILE * ffp;
int paixu(struct student name[N], int num, struct str numb[N], FILE *ffp);
scanf("%d", &num);
for(i = 0;i < num;i ++)
scanf("%s%f%f%f%f", number[i].name, &number[i].score[0], &number[i].score[1], &number[i].score[2], &number[i].score[3]);
if((fp = fopen("scores.dat", "wb")) == NULL)
{
fprintf(stdout, "wrong");
exit (0);
}
fwrite(number, 29, num, fp);
if((ffp = fopen("stat.txt", "w+")) == NULL)
{
fprintf(stdout, "wrong");
exit (0);
}
paixu(number, num, numb, ffp);
fclose(fp);
fclose(ffp);
return 0;
}
int paixu(struct student number[N], int num, struct str numb[N], FILE *ffp)
{
int i, j, temp;
char tempp[100];
for(i = 0;i < num;i ++)
{
numb[i].scores = (number[i].score[0] + number[i].score[1] + number[i].score[2] + number[i].score[3])/4.0;
}
for(i = 0;i < num - 1;i ++)
for(j = i + 1;j < num;j ++)
{
if(numb[i].scores > numb[j].scores)
{
temp = numb[i].scores;
numb[i].scores = numb[j].scores;
numb[j].scores = temp;
strcpy(tempp, numb[i].name);
strcpy(numb[i].name, numb[j].name);
strcpy(numb[j].name, tempp);
}
}
fwrite(numb, 29, num, ffp);
return 0;
}