阅读以下说明和C函数,填补代码中的空缺(1)~(5),将解答填入答题纸的对应栏内

免费题库2022-08-02  42

问题 阅读以下说明和C函数,填补代码中的空缺(1)~(5),将解答填入答题纸的对应栏内。【说明1】    函数isPrime(int n)的功能是判断n是否为素数。若是,则返回1,否则返回0。素数是只能被1和自己整除的正整数。例如,最小的5个素数是2,3,5,7,11。【C函数】int isPrime (int n){  int k, t;  if (n==2) return 1;  if(n<2||  (1)  )  return 0;     /* 小于2的数或大于2的偶数不是素数 */  t=(int)sqrt(n)+1;  for (k=3; k<t; k+=2)      if (  (2)  ) return 0;  return 1;}【说明2】    函数int minOne(int arr[], int k)的功能是用递归方法求指定数组中前k个元素中的最小者,并作为函数值返回。【C函数】int minOne (int arr[], int k){  int t;  assert (k>0) ;  if(k==1)      return  (3) ;  t=minOne(arr+1,  (4) );  if (arr[0]<t)      return  arr[0];  return  (5) ;}

选项

答案

解析 (1)n%2==0,或!(n%2),或其等价形式
(2)n%k==0,或!(n%k),或其等价形式
(3)arr[0],或*arr,或其等价形式
(4)k-1,或其等价形式
(5)t

本题考查C程序的基本语法和运算逻辑。
    首先应认真分析题目中的说明,然后确定代码结构和各变量的作用。
    函数isPrime(int n)的功能是判断n是否为素数。根据素数的定义,小于2的数和大于2的偶数都不是素数,n是偶数可表示为“n%2等于0”,因此空(1)处应填入“n%2==0”,或者“!(n%2)”。
    在n是大于2的奇数的情况下,下面的代码从3开始查找n的因子,直到n的平方根为止。
    for (k=3; k<t; k+=2 )
       if (  (2)  ) return 0;
    若k的值是n的因子,则说明n不是素数。因此,空(2)处应填入“n%k==0”,或者“!(n%k)”。
    函数int minOne(int arr[],int k)的功能是用递归方法求指定数组中前k个元素中的最小者,显然,k为1时,这一个元素就是最小者。因此,空(3)处应填入“arr[0]”或其等价形式。
    空(4)所在的语句是通过递归方式找出arr[1]~arr[k-1]中的最小者,第一个实参指出从arr[1]开始,第二个参数为元素个数,为k-1个,因此空(4)应填入“k-1”。
    接下来的处理就很明确了,当t表示arr[1]~arr[k-1]中的最小者,其与arr[0]比较后就可以得到arr[0]~arr[k-1]中的最小者,因此空(5)处应填入“t”。
转载请注明原文地址:https://tihaiku.com/congyezige/2427265.html

最新回复(0)