请编写函数countValue(),其功能是:计算500~800之间素数的个数count,并按所求素数的值从小到大排序,再计算其间隔加、减之和,即第1个素数一第2个素数+第3个素数一第4个素数+第5个素数……的值sum。函数WriteData()负责把结果

admin2020-12-17  81

问题 请编写函数countValue(),其功能是:计算500~800之间素数的个数count,并按所求素数的值从小到大排序,再计算其间隔加、减之和,即第1个素数一第2个素数+第3个素数一第4个素数+第5个素数……的值sum。函数WriteData()负责把结果输出到OUT.DAT文件中。
    注意:部分源程序已给出。
    请勿改动主函数main()和写函数WriteData()的内容。
    试题程序:
    #include
    int count,sum;
    void WriteData();
    void countValue()
    {
    }
    void main()
    {
    count=sum=0;
    countValue();
    printf(“count=%d\n,sum=%d\n”,count,sum);
    WriteData();
    }
    void WriteData()
    {
    FILE*fp;
    fp=fopen(“OUT.DAT”,“W”);
    fprintf(fp,“%d\n%d\n”,count,sum);
    felose(fp);
    }

选项

答案void countValue() { int i,j,flag.temp; int outBuf[300]; for(i=500;i<800;i++) { flag=0; for(j=2;joutBuf[j]) /*如果第i位比它后面的数大则将两者进行交换, 也即将更小的值放到第i位*/ { temp=outBuf[i]; outBuf[i]=outBuf[j]; outBuf[j]=temp; } for(i=0;i
解析 本题主要考查素数的判断、排序和数组中指定下标元素的求和问题。
    ①判断是否为素数:素数的定义是:若一个数除了其自身和1再没有其他的除数,则该数就是素数。故用其定义可以很容易判断。在2到所判断数之间的数进行扫描,若有一个除数,则该数就不是素数。②排序:排序的思想是(以从小到大为例):将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。③计算其间隔加、减之和:判断下一位数的标号是奇数还是偶数,若下标为偶数(即第奇数个)则加,否则则减。
转载请注明原文地址:https://kaotiyun.com/show/ZsOZ777K
0

最新回复(0)