问答题
使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数sum(int A[NUM][NUM],int n)实现的功能是计算矩阵中所有非质数数字的和。 提示:函数isPrime(int n)的功能是判定当前数字是否为质数,如果是则返回true。 注意:不能修改程序的其他部分,只能修改sum()函数。#include<iostream.h>#include<cmath>#define NUM 50int A[NUM][NUM]={ {10,13,59,70,6}, {2,40,89,92,9}, {14,55,71,11,19}, {79,68,83,97,101}, {102,10001,23,45}};bool isPrime(int n){ if(n==1) return false; if(n==2) return true; for(int i=2;i<n/2;i++) { if(n%i==0) return false; } return true;}int sum(int A[NUM][NUM],int n){}int main(){ cout<<sum(A,5)<<endl; return 0;}
【正确答案】正确答案:int re=0; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(!isPrime(A[i][j])) //判断是否是素数,不是素数则累加 { Ee=Ee+A[i][j]; } } } return re;
【答案解析】解析:(1)矩阵A[NUM][NUM]是2维矩阵,SHIn函数的参数n给出了矩阵A的具体维数,因此矩阵A中共含有n×n个有效数。 (2)A[NUM][NUM]中元素可表示为A[i][j],其中i表示元素所在行数,i表示元素所在的列数,i、j分别从0到n.1范围内变化,因此设置内外两层循环可逐个遍历整个矩阵寻找非质数。 (3)函数isprime提供了判断质数的方法,对每个元素A[i][j],调用函数isprime(A[i][j]),判断函数的返刚值是否为假,如果为假说明不是质数,应该累加起来。