1.第一道是求整个数组中最小的鞍点,我想问的是在我比较先定义的最小值与别的比较时,为什么只能用min直接比较,不能写类似与a[i][n]int main(){ int a[3][3]={{10,2,3},{4,5,6},{7,8,9}},i,n,min; for(i=0;i<=2;i++) { for(n=0;n<=2;n++) { printf("%d",a[i][n]); } printf("\n"); } min=a[0][0]; for(i=0;i<=2;i++) for(n=0;n<=2;n++) if(a[i][n]{ min=a[i][n]; } printf("%d",min); return 0;}2.这是一道求二维数组中,它在列是最小的,在行是最大的一道题。然后我再敲比较大小那部分,一直出不来结果,不知道要怎么写那部分,求指导。#includeint main(){ int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},i,n,min,max; for(i=0;i<=2;i++) { for(n=0;n<=2;n++) { printf("%d",a[i][n]); } printf("\n"); } min=a[0][0]; for(i=0;i<=2;i++) { for(n=0;n<=2;n++) { if(a[i][0] min=a[i][0]; max=min; if(max>a[i][n]) printf("%5d",max); else printf("0"); } } return 0;}
1 回答
望远
TA贡献1017条经验 获得超1032个赞
问题一:直接写成if(a[i][n])判断的是a[i][n]的值是否为0,为0则不成立,不为0则成立
ps:神马是数组里最小的鞍点,鞍点有且最多只有一个,鞍点的定义就是该数在该行最大,但在该列最小。
//这是核心代码,LZ可以参考一下 for(i=0;i<=2;i++) { max=arr[i][0];//每次都假设第一列的数据为该行最大 for(j=0;j<=2;n++)//获取每行最大值,和对应下标 { if(max<arr[i][j]) { max=arr[i][j]; col=j;//获取该行最大的列坐标 row=i;//获取该行最大的行坐标 } } for(k=0;k<=2;k++) { if(arr[k][col]<max)//判断是否是该列最小 break; } if(k==3)//如果k==3表明上一循环正常结束,是鞍点 { printf("鞍点:arr[%d][%d]=%d\n",row,clo,max); break;//鞍点只有一个 } }
- 1 回答
- 2 关注
- 1174 浏览
添加回答
举报
0/150
提交
取消