已知数据文件IN39.DAT中存有300个四位数,函数ReadData()负责把这些数存人数组inBuf[]中,请编制一函数findValue(),其功能是;统计出这300个数中素数的个数count,再把所有满足此条件的四位数依次存人数组outBuf[]中

admin2012-07-20  26

问题 已知数据文件IN39.DAT中存有300个四位数,函数ReadData()负责把这些数存人数组inBuf[]中,请编制一函数findValue(),其功能是;统计出这300个数中素数的个数count,再把所有满足此条件的四位数依次存人数组outBuf[]中,然后对数组outBuf[]的四位数按从小到大的顺序进行排序,函数WriteData()负责把数组outBuf[]中的数输出到OUT.DAT文件中。
例如;3191是素数,则该数满足条件,存人数组outBuf[]中,且个数count=count+1。1234是非素数,则该数不满足条件,忽略。
注意;部分源程序已给出。
程序中已定义数组;inBuf[300],outBuf[300],已定义变量;count。
请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。
试题程序;   
#include
#define NUM 300
int inBuf[NUM],outBuf[NUM],count=0;
void ReadData();
void WriteData();
void findValue()
{
}
void main()
{
  int i;
  ReadData();
  findValue();
  WriteData();
  printf("count=%d\n",count);   
  for(i=0;i  printf("outBuf[%d]=%d\n",i,outBuf);
}
void ReadData()
{
  FILE*fp;
  int i;
  fp=fopen("IN.DAT","r");
  for(i=0;i  fscanf(fp,"%d,",&inBuf);
  fclose(fp);
}
void WriteData()
{
  FILE*fp;
int i;
fp=fopen("OUT.DAT","w");
fprintf(fp,"count=%d\n",count);
for(i=0;ifprintf(fp,"%d,\n",outBuf);
fclose(fp);
}

选项

答案 void findVaiue() { int i,j,temp,flag; for(i=0;ioutBuf[j]) /*如果第i位比它后面的数大,则将两者进行交换,也即将更小的值放到第i位*/ { temp=outBuf[i]; outBuf[i]=outBuf[j]; outBuf[j]=temp; } }

解析 本题主要考查素数的判断和排序问题。1.判断是否为素数;素数的定义是;若一个数除了其自身和1再没有其他的除数,则该数就是素数。故用其定义可以很容易判断。在2到所判断数之间的数进行扫描,若有一个除数,则该数就不是素数。2.排序;排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。
转载请注明原文地址:https://kaotiyun.com/show/d94Z777K
0

最新回复(0)