关于tc与vc++和鞍点的问题,求助!
2608 2002-05-08 05:31:15 鞍点是矩阵中每行最大并且是每列最小的数,array[4][4]应该是定义5*5的一个数组。
我用的是tc编的这个程序,但在tc下总是得出莫名其妙的结果,比如说min值总是得到1或是4。
于是又改到vc++上来(源程序没有修改),最大最小值能够顺利得出,但是
给数组初始化又出错
我不知道我错在那里了,望高手不吝赐教
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
main()
{
int array[4][4]={{0},{0},{0},{0}},rsize,row,column,c,d,max=0,min=0;
/* 这里如果是array[4][4]={{0},{0},{0},{0},{0}},系统就会给出
too many initializers 的报错信息,可是如果不更改,又会得出后边的莫名其妙的结果 */
/* 显示初始化后数祖的值 */
for (row=0;row<=4;row++) {
for (column=0;column<=4;column++)
printf ("%10d",array[row][column]);
printf ("\n");
}
srand(time(NULL));
/* 在10--99之间取随机数字组成一个4*4的数组,舍去第0行和第0列 */
printf ("\n");
for (row=1;row<=4;row++) {
for (column=1;column<=4;column++) {
array[row][column]=10+rand()%90;
printf ("%10d",array[row][column]);
}
printf ("\n");
}
for (rsize=1;rsize<=4;rsize++) { /* 用rsize来控制1--4行的循环 */
/* 得到每行上最大数所在的列号c */
c=1; max=array[rsize][1];
for (column=2;column<=4;column++) {
if (max<array[rsize][column]) {
c=column; max=array[rsize][c];
}
}
/* 得到第c列上最大值所在的行号d */
d=1; min=array[1][c];
for (row=1;row<=4;row++) {
if (min>array[row][c]) {
d=row; min=array[row][c];
}
}
printf ("max=%d min=%d\n",max,min);
if (max==min) printf ("array[%d][%d] is sanddle pointer\n",d,c);
}
}
以下是上边这个程序在vc++6.0下运行的结果:
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 1245120
1245120 4200137 1 4394656 4394464
87 97 99 80
33 86 82 55
15 50 99 83
18 43 86 34
max=99 min=82
max=86 min=43
max=99 min=82
max=86 min=82