使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是判定形参a所指的N×N(规定N为奇数)的矩阵是否是"幻方",若是,函数返回值为1;若不是,函数返回值为0。

admin2023-02-27  75

问题 使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是判定形参a所指的N×N(规定N为奇数)的矩阵是否是"幻方",若是,函数返回值为1;若不是,函数返回值为0。"幻方"的判定条件是矩阵每行、每列、主对角线及反对角线上元素之和都相等。
    例如,以下3×3的矩阵就是一个"幻方":

    请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
    注意:部分源程序在文件blank1.c中。
    不得增行或删行,也不得更改程序的结构!
    试题程序:
1 #include<stdio.h>
2 #define N 3
3 int fun(int(*a)[N])
4 {int i,j,m1,m2,row,colum;
5  m1=m2=0:
6  for(i=0;i<N;i++)
7  {j=N-i-1;m1+=a;
8  m2+=a[j];}
9  if(m1!=m2)return 0;
10  for(i=0;i<N;i++){
11 /*********found*********/
12  row=colum=<u>【1】</u>;
13  for(j=0; j<N,j++)
14  {row+=a[j];
15    colum+=a[j];}
16 /*********found*********/
17  if((row!=colum)<u>【2】</u>(row!=m1))
18    return 0;
19  }
20 /*********found*********/
21 return <u>【3】</u>;
22 }
23 main()
24 {int x[N][N],i,j;
25  printf("Enter number for array:\n");
26  for(i=0;i<N;i++)
27    for(j=0;j<N;j++)
28    scanf("%d",&x[j]);
29 printf("Array:\n");
30 for(i=0;i<N;i++)
31 {for(j=0;j<N;j++)
32    printf("%3d",x[j]);
33  printf("\n");
34  }
35  if(fun(x))
36    printf ("The Array is a magic square.\n");
37  else
38    printf ("The Array isn't a magic square.\n");
39 }

选项

答案(1)0 (2)|| (3)1

解析 填空1:本题考查为变量赋初值,在这里row+=a[j]代表每行的总和,colum+=a[j]代表每列的总和,因而row、colum在初始化时应该为0,此空1处应该填0。
  填空2:本题考查if条件语句,此句判断每行的总和与每列的总和是否相等,每行的总和与对角线的总和是否相等,两者若有一个不成立,则返回0,故空2处应该填||。
    填空3:题目要求若矩阵是"幻方",则函数返回值为1,故空3处应该填1。  
转载请注明原文地址:https://jikaoti.com/ti/vnoiFFFM
0

最新回复(0)