/*------------------------------------------------
【程序设计】
功能:求n阶方阵主、副对角线上的元素之积。
------------------------------------------------*/
#define N 4
#include "stdlib.h"
#include <stdio.h>
void wwjt();
float mul(int arr[][N])
{
/**********Program**********/
float pro = 1.0;
int i = 0;
for (i = 0; i < N; i++)
{
pro *= arr[i][i];
pro *= arr[i][N - i - 1];
}
if (N % 2 == 0)
{
return pro;
}
else
{
return (pro - arr[N / 2][N / 2]);
}
/********** End **********/
}
int main()
{
srand((unsigned int)time(NULL));
int a[N][N], i, j;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
a[i][j] = rand() % (10);
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
printf("%4d", a[i][j]);
printf("\n");
}
printf("The sum is %f\n", mul(a));
wwjt();
return 0;
}
void wwjt()
{
FILE* IN, * OUT;
int m, n;
int i[4][4];
float o;
IN = fopen("in.dat", "r");
if (IN == NULL)
{
printf("Read FILE Error");
}
OUT = fopen("out.dat", "w");
if (OUT == NULL)
{
printf("Write FILE Error");
}
for (m = 0; m < 100; m++)
for (n = 0; n < 100; n++)
{
fscanf(IN, "%d", &i[m][n]);
}
o = mul(i);
fprintf(OUT, "%f\n", o);
fclose(IN);
fclose(OUT);
}