问答题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(int n),求出n×11矩阵的对角线数字的平方和。如果n为奇数,则对角线交叉部位数字只参与一次计算。 注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 1 #inolude 2 #define MAX N 10 3 int XX[MAX N][MAX N]; 4 int fun(int 13.) 5 { 6 7 } 8 void main() 9 { 10 int n; 11 do 12 { 1 3 count<<“please input N(1<=N<10): ”<>12; 15 if(n< 1 0 &&n>= 1) 16 { 17 break; 18 } 1 9 )whil e(1); 20 for(int i=0 ; i>XX[i][j]; 26 } 27 } 28 tout;<
【正确答案】正确答案:int data=0; //初始化求平方和变量 for(int i=0;i<n ; i++) { data+=XX[i][i]*XX[i][i]; //求正对角线平方和 if(i!=n—i一1) data+=XX[i]In—i一1]+XX[i]In—i //求逆对角线平方和 } _return data;
【答案解析】解析:本题函数中的功能是输出N行N列正方阵,然后求两条对角线上各元素之平方和。其中,假设矩阵行、列分别为i、j,那么对角线上的元素特点是主对角线上i=j,以及逆对角线j=n-i-1。解题思路 (1)首先初始化求平方和变量,设置求平方和的变量为0。 (2)然后利用for循环求得矩阵正对角线平方和。 (3)最后求得逆对角线平方和,返回平方和变量。