- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
新思路题
新思路题
1。【审题关键句】将大于整数m且紧靠m的k个素数存入数组。
【解题思路】
①首先定义一个计数变量cnt并赋初值为0。
②利用while循环统计大于整数m且紧靠m的k个素数,当计数变量cnt的值与变量k的值相等的时候,则退出while循环。每执行一次循环时,变量m的值加1,然后调用函数isP()判断当前的m值是否为素数,如果是素数,则将m的值赋给数组xx[cnt],同时计算变量cnt的值加1,即当数组xx[0]中保存了一个素数之后,在下一次素数判断成立时将保存到xx[1]的位置上,依次类推。
【参考答案】
int cnt = 0; //定义变量cnt并初值等于0
while(cnt k) //当cnt的值小于k时
{
m++; //变量m加1
if(isP(m)) xx[cnt++] = m; //如果m为素数,则把其赋给数组元素xx[cnt],并且数组的下标cnt加1
}
2.【审题关键句】求素数的个数及平均值,并计算非素数的平均值。
【解题思路】
①首先定义循环变量i,然后通过for循环对数组a[300]中的每个元素a[i]调用函数isP(a[i])判断a[i]是否是素数(素数的算法已在isP()函数中给出,此处直接调用即可),如果是素数,则把其加到变量pjz1上,同时计数变量cnt加1,否则a[i]值加到变量pjz2上。直到判断完数组a[300]中的所有数据后退出循环。
②求出pjz1、pjz2和cnt的值之后,再用变量pjz1的值除以cnt的值就得到素数的平均值,同时把这个值赋给变量pjz1,最后用变量pjz2的值除以300-cnt的值就得到非素数的平均值,并把这个值赋给变量pjz2。
【参考答案】
int i; //定义变量i
for(i = 0; i 300; i++) //循环变量i从0依次递增到299
{
if(isP(a[i])) //判断数组元素a[i]是否素数
{
pjz1 += a[i]; //把a[i]累加到变量pjz1
cnt++; //变量cnt加1
}
else pjz2 += a[i]; //否则,把数组元素a[i]累加到变量pjz2
}
pjz1 /= cnt; //所有素数的和pjz1除以素数的个数cnt,得到素数的平均值并赋给变量pjz1
pjz2 /= (300 - cnt); //所有非素数的和pjz2除以非素数的个数300-cnt,得到非素数的平均值并赋给变量pjz2
3.【审题关键句】100以内(含100)满足i、i+4、i+10都是素数的整数的个数以及这些i之和。
【解题思路】
①首先定义循环变量i,然后将i的值赋初值为3,每循环一次则将i的值加1,直到i90。
②在for循环中,每执行一次循环则调用函数isPrime()(该函数具体的算法已经在源程序中给出,直接调用即可),对i、i+4、i+10是否同时是素数进行判断,如果这三个数同时为素数,则计数变量cnt值加1,同将时将变量i的值累加到sum上。
【参考答案】
int i; //定义变量i
for(i = 3; i 90; i++) //循环变量i从3开始,依次递增,直到小于90
{
if(isPrime(i) isPrime(i + 4) isPrime(i + 10)) //如果i,i+4,5i+10同时为素数
{
cnt++; sum += i; //变量cnt加1,变量i累加到sum
}
}
4.【审题关键句】求素数的个数,存入数组,按从小到大的顺序排序。
【解题思路】
①首先定义两个循环变量循环i、j和一个用于数据交换的整型变量tmp。
②通过for循环依次读取数组中的300个数,其中,循环变量i从0开始每次加1,直到i300停止循环;在每次循环中判断a[i]是否是素数,如果是素数,则把a[i]的值赋给数组b[cnt],同时数组下标变量cnt值加1。
③在退出循环后,用两个for循环对数组b[]中元素进行两两比较,实现数组元素从小到大的排序,比较过程中通过整型变量tmp实现两个数的交换。
【参考答案】
int i, j, tmp; //定义整型变量i, j, tmp
for(i = 0; i 300; i++) //循环变量i从0依次递增到299
if(isP(a[i])) b[cnt++] = a[i]; //如果数组元素a[i]是素数,则把a[i]赋给b[cnt],同时数组下标变量cnt加1
for(i = 0; i cnt; i++) //循环变量i从0开始依次递增,直到其值等于cnt
{
for(j = i + 1; j cnt; j++) //循环变量j从i + 1开始依次递增,直到其
文档评论(0)