C 二级 进入fun函数,根据前面的分析: 首先,定义、初始化变量sign,作为素数的标志; 定义r,初始化为存储素数数组的起始位。 然后,每判断一次temp中的值是否为素数后,使temp的值增1

【审题分析】
(1)该程序功能是取大于整数m且紧靠m的k个素数。
其中,素数是指只能被1和自身除尽的正整数(>1),
所以判别n是否为素数,只要用2~n-1这些数逐个去除n,
判断余数是否为0即可。
只要有一次余数为0,n就不是素数,否则n为素数。
它的解题思路,
可以分解为以下几步:
判断是否为素数→判断素数个数是否满足要求→存储素数到指定的数组。
(2)从已给部分源程序的main主函数开始入手,
核心函数“fun( m, n, zz);”中的参数由题目可知,
zz存放素数,n为要求的素数个数。

【解题思路】
进入fun函数,根据前面的分析:
首先,定义、初始化变量sign,作为素数的标志;
定义r,初始化为存储素数数组的起始位。
然后,每判断一次temp中的值是否为素数后,使temp的值增1,
再次对temp中新的值进行判断其是否为素数,
不断循环此过程,直到m的值等于指定的个数,即函数中的k个数。
【考点链接】if条件语句;for循环语句。
#include <stdio.h>
void fun(int m, int k, int xx[])
{
int r=0,temp,p,sign=1;
for(temp=m+1;temp<m*m;temp++)
 //从temp开始循环,判断紧靠temp的整数
  {
    for(p=2;p<temp;p++)
    {
      if(temp%p!=0) //判断temp是否为素数
        sign=1;//若是素数,标志设为1
      else
      { 
      sign=0; //若不是素数,标志设为0
       break;
      } 
    }
  if(sign==1&&p>=temp)      
    {
      if(k>=0)   //判断已有的素数个数是否已经满足sum个
      {
       xx[r++]=temp; //将素数temp存入数组select
       k--;   //将题目中要求的素数个数减1
      }
      else
       break;
    }
  }
}
main()
{
   int m, n, zz[1000] ;void NONO ();
   printf("\nPlease enter two integers:");
   scanf("%d %d", &m, &n);
   fun(m, n, zz);
   for(m = 0 ; m < n ; m++)
      printf("%d ", zz[m]);
   printf("\n");
   NONO();
}
void NONO ()
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
  int m, n, zz[1000], i ;
  FILE *rf, *wf ;
  rf = fopen("in.dat","r");
  wf = fopen("out.dat","w");
  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%d %d", &m, &n);
    fun(m, n, zz);
    for(m = 0 ; m < n ; m++) fprintf(wf, "%d ", zz[m]);
    fprintf(wf, "\n");
  }
  fclose(rf);
  fclose(wf);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值