急急急!!!C语言高手请进!!!

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:20:42
我月末就要去参加全国计算机三级考试,近来在上机练习时出了点问题,求助各位高手解答。
原题是:
已知数据文件IN19.DAT中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一个函数jsValue(),其功能是:求出这些4位数是素数的个数cnt,再求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat()把结果cnt、pjz1、pjz2输出到OUT19.DAT文件中。
例如:5591是素数,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。
9812是非素数,则该数不满足条件,计算平均值pjz2。
注意:部分源程序已给出。程序中已定义数组:a[300],已定义变量:cnt、pjz1、pjz2。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
【试题程序】
#include <stdio.h>
int a[300], cnt=0;
double pjz1=0.0,pjz2=0.0;
int isP(int m)
{
int I;
for(i=2;i<m;i++)
if(m%i==0) return 0;
return 1;
}
void jsValue()
{

}
main()
{
int I;
readDat();
jsValue();
writeDat();
printf("cnt=%d\n满足条件的平均值pjz1=%7.2lf\n不满足条件的平均值pjz2=%7.2lf\n",
cnt,pjz1,pjz2);
}
readDat()
{
FILE *fp;
int I;
fp=fopen( "IN19.DAT","r");

我是自学的C语言,现在不是很精通,大致看出你编的代码和答案的区别了:
---------------------------------
你的答案:
int i;
for(i=0;i<300;i++)
if(isP(a[i])
{
cnt++; /*先参与运算,后自加1*/
pjz1+=a[i];
pjz1=pjz1/cnt;
/*上面这一行使得每次循环都要执行,不满足最后求平均的要求,要在循
环完结最后使用*/
}
else
{
pjz2+=a[i];
pjz2=pjz2/(300-cnt);
/*上面这一行与前一个地方一样,应该出现在else和循环体外*/
}
----------------------------------
标准答案你自己看哟,呵呵,我很有兴趣研究C语言,若不介意,有机会你加个我的QQ啊,不知道怎么跟你取得联系啊,我不想在这个地方留下QQ号,免得有人搞鬼。我的QQ很重要! O!O ^_^
我已经收藏了这个地址,方便的话请留言哦。。

for循环有误。