2010計算機等級考試三級數(shù)據(jù)庫技術上機模擬題(7)

字號:

2010計算機等級考試三級數(shù)據(jù)庫技術上機模擬題(7)

    計算500-800區(qū)間內(nèi)素數(shù)的個數(shù)cnt,并按所求素數(shù)的值從大到小的順序,再計算其間隔減、加之和,即第1個素數(shù)-第2個素數(shù)+第三個素數(shù)-第4個素數(shù)+第5個素數(shù)。。。的值sum。請編寫函數(shù)countvalue()實現(xiàn)程序的要求;最后main()函數(shù)調(diào)用函數(shù)writeDAT()把結果cnt和sum,輸出到文件OUT11.DAT中。
    注意:部分源程序存放在prog1.c中請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)writeDAT()的內(nèi)容。
    #include
    int cnt,sum;
    void countvalue()
    {
    }
    void main()
    {cnt=sum=0;
    countvalue();
    printf("素數(shù)的個數(shù)=%d\n",cnt);
    printf("按要求計算的值=%d\n",sum);
    writeDAT();}
    writeDAT()
    {FILE *fp;
    fp=fopen("OUT11.DAT","w");
    fprintf(fp,"%d\n%d\n",cnt,sum);
    fclose(fp);
    }
    --------------------------------------------------------------------------------------
    這是答案:
    void countvalue()
    {
    int i,j,k,l;
    k=0;
    l=1;
    for (i=800;i>=500;i--)
    {
    for (j=2;j<=i/2;j++)
    {
    if ((i%j)==0)
    {
    k=1;
    break;
    }
    }
    if ((k==0)&&(l==1))
    {
    sum=sum+i;
    l=2;
    cnt++;
    continue;
    }
    if ((k==0)&&(l==2))
    {sum=sum-i;
    l=1;
    cnt++;
    }
    k=0;
    }
    }
    ---------------------------------------------
    void countvalue()
    {int i,j;
    for(i=800;i>=500;i--)
    {for(j=2;j
    if(!(i%j)) break;
    if(j==i)
    { cnt++;
    if(cnt%2) sum+=i;
    else sum-=i;
    }
    }
    }