计算机三级数据库技术上机考试试题二(附答案)
来源:优易学  2010-1-20 17:26:44   【优易学:中国教育考试门户网】   资料下载   IT书店

下列程序的功能是:找出所有100以内(含100)满足ii+4i+10都是素数的整数ii+10也在100以内)的个数count以及这些i之和sum。请编写函数primeNum()实现程序要求的功能,最后调用函数writeDat(),把结果countsum输出到文件OUT.dat中。

注意:部分源程序已经给出。请勿改动主函数main()和输出数据函数writeDat()的内容。

#include <stdio.h>

int  count, sum;

int isPrime(int number)

{    int  i, tag = 1;

      for (i=2; tag && i<=number/2; i++)

                if (number%i == 0)

                         tag = 0;

      return tag;

}

void primeNum()

{

 

}

void writeDat()

{    FILE  *fp;

      fp = fopen("OUT.dat", "w");

      fprintf(fp, "%d\n%d\n", count, sum);

      fclose(fp);

}

void main()

{    count = sum = 0;

      primeNum();

      printf("满足条件的整数的个数=%d\n", count);

      printf("满足条件的整数的和值=%d\n", sum);

      writeDat();

}

试题答案及详解

【审题分析】分析题目可知,本题只要实现primeNum()函数的功能即可。primeNum()要实现的功能是:找出所有100以内(含100)满足ii+4i+10都是素数的整数ii+10也在100以内)的个数count以及这些i之和sum。因此解答本题的关键在于如何将“ii+4i+10都是素数”条件转换成C语言表达式。

【解题思路】在for循环语句中自变量i2递增到90,调用子函数isPrime(),用来判断ii+4i+103个数同时为素数是否成立,如果成立,则计数变量count1,同时把i加到变量sum上,求得这些i的和。

【参考答案】

void primeNum()

{   int i;

     for(i=2;i<=90;i++)

            if(isPrime(i) && isPrime(i+4) && isPrime(i+10))

            {     count++;

                   sum+=i;

            }

}

【易错分析】因为i+10要在100以内,所以自变量i的变化范围应该是290

【考点链接】子函数的调用。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训