要求是随机产生100个点(Xi,Yi),1<=i<=100,1<=Xi,Yi<=100,输出100个点。再输出100阶的行列式a(i)[j],其中a(i)[j]为(Xi,Yi)和(Xj,Yj)的距离。然后输出行列式中的最大元素和最小元素,并输出它们的行和列,即输出a(i)[j]形式,确定i和j的值。我试着编了一个程序,但是有两个问题,一是无法保证100个点都不相同,二是实在无法输出最值的行列。请大家指点一下。
程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int i,j,row,colum;
float max_value(float array[101][101])
{
float max=array[1][1];
for(i=1;i<101;i++)
for(j=1;j<101;j++)
if(array[i][j]>max)
max=array[i][j];
return(max);
}
float min_value(float array[101][101])
{
float min=array[1][1];
for(i=1;i<101;i++)
for(j=1;j<101;j++)
if(array[i][j]<min)
min=array[i][j];
return(min);
}
main()
{
int a[101],x[101],y[101];
float b[101][101],max,min;
time_t t;
srand((unsigned) time(&t));
for(i=1;i<101;i++)
{
x[i]=rand()%100+1;
y[i]=rand()%100+1;
}
for(i=1;i<101;i++)
printf("a[%d]=(%d,%d)\t",i,x[i],y[i]);
for(i=1;i<101;i++)
for(j=1;j<101;j++)
b[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
printf("array A:\n");
for(i=1;i<101;i++)
{
for(j=1;j<101;j++)
printf("%7.2f",b[i][j]);
printf("\n");
}
max=max_value(b);
printf("The max number is %5.2f\n",max);
min=min_value(b);
printf("The min number is %5.2f\n",min);
getch();
}