level 1
刚学的C,不太懂。。
比如“判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。”要先保存到一维数组吧。。。怎么换?
2009年12月03日 11点12分
1
level 0
为啥要保存到一维数组啊?直接爆他就行啦,找到每行的最大数,来一个这个数所在列的列循环,看是不是最小数,是就行了,
2009年12月03日 11点12分
2
level 1
#include <stdio.h>
#define ROW 4 //这里定义二维数组的行
#define COL 5 //这里定义二维数组的列
int main(void)
{
int arr[ROW][COL]={0};
int i, j, count=1;
unsigned int flag=1;
int row,col;
int maxrow,mincol;
i=(ROW)*(COL);
printf("请输入二维数组的元素[一共%d个]!\n",i);
j=0;
while(i)
{
printf("还有%d个:",i);
fflush(stdin);
scanf("%d",arr+j);
j++;
}
for(row=0;row<ROW;row++)
{
maxrow=arr[row][0];
for(col=0,i=0;col<COL;col++)
{//在没一行上寻找最大的元素。
if(arr[row][col]>maxrow)
maxrow=arr[row][col];
i=col;//记录最大元素所在的列。
}
for(j=0;j<ROW;j++)
{ //如果在行maxrow所在的列上有比maxrow小的数就退出循环。
if(arr[j][i]<maxrow)
break;
}
if(j>=ROW)
{
printf("鞍点%d: %d 在第%d行第%d列",count++,row,i);
flag=0;
}
}
if(flag)
printf("这个数组没有鞍点!\n");
return 1;
}
2009年12月03日 15点12分
7