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

admin2022-10-08  58

问题 已知数据文件IN39.DAT中存有300个四位数,函数ReadData()负责把这些数存人数组inBu{[]中,请编制一函数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();
    print{(“count=%d\n”,count);
    for(i=0;i    print{(“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”);
    {print{(fp,“count=%d\n”,count);
    for(i一0;i    fprintf(fp,“%d,\n”,outBuf);
    fclose(fp);
    }

选项

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

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

相关试题推荐
最新回复(0)