c语言关于数据文件的使用

已知数据文件in.dat中存有300个四位数,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2。

那个数据文件是怎么回事,在哪建?里面的300个数据要用随机数填充吗?还有数据文件建好后怎么引用到C语言程序中!请高手帮忙写一个完整的,能运行的程序!(包括数据文件)本人将不胜感激!急!!!

第1个回答  2009-08-30
#include <stdio.h>
#include <math.h>
#define DEBUG //条件编译开关,为了程序的保险起见,如果程序无误则删除该条语句就OK

int Data[300]; //存放文件中的300个整数

int cnt = 0; //素数个数

float pjz1/*素数平均值*/, pjz2/*非素数平均值*/;

void readData(char* filename,int Data[]);
void writeData(char* filename);
void jsValue();

void main()
{
char filename[] = "d:\\in.dat"; //可以根据具体情况自己写路径

writeData(filename);
readData(filename,Data);
jsValue();

}

void readData(char* filename,int Data[])
{

FILE *fpr;
int i;

fpr = fopen(filename,"r");
for(i = 0; i < 300; i++)
{
fscanf(fpr,"%d",&Data[i]); //格式化读文件
}
fclose(fpr);

}

void writeData(char* filename) //写入300个四位数(1000-1299)到in.dat文件中
{
FILE *fpw;
int i;

fpw = fopen(filename,"w");

for(i = 1000; i <= 1299; i++)
{
fprintf(fpw,"%d\n",i); //格式化写文件
}
fclose(fpw);

}

void jsValue()
{
long sumAll = 0/*所有数的和*/, sumPrim = 0/*所有素数的和*/;
int k, m, i, j;

for(i = 0; i < 300; i++) //判断是否为素数:如果整数k在2~sqrt(k)之间没有因子,则k一定是素数
{
k = Data[i];
m = (int)sqrt(k);
sumAll += k;

for(j = 2; j <= m; j++)
{
if(k % j == 0) //不是素数
break;
}

if(j > m) //是素数
{
#ifdef DEBUG //如果DEBUG被宏定义,则编译下面语句,下同(检查素数判断是否正确)
printf("%d\n",k);
#else
#endif //如果DEBUG没被宏定义,则不编译

sumPrim += k;
cnt++;
}
}
pjz1 = (float)sumPrim / cnt;
pjz2 = (float)(sumAll - sumPrim) / (300 - cnt) ;

#ifdef DEBUG
printf("cnt = %d\nsumAll = %ld\nsumPrim = %ld\npjz1 = %f\npjz2 = %f\n",cnt, sumAll, sumPrim, pjz1, pjz2); //检查计算是否正确
#else
#endif

}本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网