使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数sum(int A[NUM][NUM],int n)实现的功能是计算矩阵中所有非质数数字的和。 提示:函数isPrime(int n)的功能是判

admin2019-05-29  29

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数sum(int A[NUM][NUM],int n)实现的功能是计算矩阵中所有非质数数字的和。
    提示:函数isPrime(int n)的功能是判定当前数字是否为质数,如果是则返回true。
    注意:不能修改程序的其他部分,只能修改sum()函数。
1  #include<iostream.h>
2  #include<cmath>
3  #define NUM 50
4  int A[NUM][NUM]=
5  {
6    {10,13,59,70,6},
7    {2,4 0,8 9,92,9},
8    {14,55,71,11,19},
9    {79,68,83,97,101},
10    {102,10001,23,45}
11  };
12  bool isPrime(int n)
13  {
14    if(n==1)
15    return false;
16    if(n==2)
17    return true;
18    for(int i=2;i<n/2;i++)
19    {
20    if(n%i==0)
21    return false;
22    }
23    return true;
24  }
25  int sum(int A[NUM][NUM],int n)
26  {
27
28  }
29  int main()
30  {
31    cout<<sum(A,5)<<end1;
32    return 0;
33  }

选项

答案1 int re=0; 2 for(int i=0;i<n;i++) 3 { 4 for(int j=0;j<n;j++) 5 { 6 if(!isPrime(A[i][j]))//判断是否是素数,不是素数则累加 7 { 8 re=re+A[i][j]; 9 } 10 } 11 } 12 return re;

解析 函数sum(int A[NUM][NUM],int n)的功能是实现计算矩阵A[NUM][NUM]中所有非质数数字的和,在计算累加和之前需先判断该数是否是质数,不是质数则累加起来,可用循环来实现累加求和。
    (1)矩阵A[NUM][NUM]是2维矩阵,sum函数的参数n给出了矩阵A的具体维数,因此矩阵A中共含有n×11个有效数。
    (2)A[NUM][NUM]中元素可表示为A[j],其中i表示元素所在行数,j表示元素所在的列数,i、j分别从0到n-1范围内变化,因此设置内外两层循环可逐个遍历整个矩阵寻找非质数。
    (3)函数isprime提供了判断质数的方法,对每个元素A[j],调用函数isprime(A[j]),判断函数的返回值是否为假,如果为假说明不是质数,应该累加起来。
转载请注明原文地址:https://kaotiyun.com/show/168p777K
0

随机试题
最新回复(0)