⑴ 求教:c语言求矩阵的鞍点问题
// 下面是你的代码 我加了个 注释
#include <stdio.h>
void main()
{
while(1)
{
int a[4][4];
int j,i,m,t,x,y;
printf("please input sixteen numbers:\n");
for(j=1;j<=4;j++)
for(i=1;i<=4;i++)
scanf("%d",&a[j-1][i-1]);
printf("\n");
for(j=1;j<=4;j++)
{
if(a[j-1][0]>=a[j-1][1])
m=a[j-1][0];
else
m=a[j][1]; // 这里出问题了 应该是 m = a[j-1][1];
for(i=3;i<=4;i++)
if(a[j-1][i-1]>=m)
m=a[j-1][i-1];
for(x=1;x<=4;x++)
{
if(a[j-1][x-1]==m)
{
if(a[0][x-1]<=a[1][x-1])
t=a[0][x-1];
else
t=a[1][x-1];
for(y=3;y<=4;y++)
if(a[y-1][x-1]<=t)
t=a[y-1][x-1];
if(m==t)
printf("此数列的鞍点为元素a[%d][%d],对应数值大小为 %d\n",j-1,x-1,m);
}
}
}
}
}
⑵ c语言 求二维数组的鞍点
#include<stdio.h>
#define N 3
#define M 4
int main()
{
int i,j,k,max,min;
int array[N][M];
printf("请输入数组元素: ");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
scanf("%d",&array<i>[j]);
}
printf("数组有: ");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%-5d ",array<i>[j]);
printf(" ");
}
for(i=0;i<N;i++)
{
max=array<i>[0];//用列来进行当前行来比较
for(j=0;j<M;j++)
{
if(max<array<i>[j])
max=array<i>[j];
k=j;//记录下当前一行中最大的小标
}
min=array[0][k];
for(j=0;j<N;j++)//用行来进行列比较
{
if(min>array<i>[k])//若在该列中有更小的,则赋值与min
min=array<i>[k];
}
if(min==max)
{
printf("小标为%d,%d,鞍点为:%d",i+1,k,max);
}
}
printf("搜索结束 ");
return;
}
(2)c语言矩阵中的马鞍点扩展阅读:
define作用
被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。
宏定义的作用范围仅限于当前文件,即file1.c中定义#define PI 3.14,在file2.c中该宏定义不起作用;
通过将#define PI 3.14定义在common.h中,file1.c和file2.c分别#include"common.h"的方式,该宏定义在file1.c和file2.c中都起作用。
在C或C++语言中,“宏”分为有参数和无参数两种。
⑶ c语言编程 找出一个二维数组中的鞍点
你那个-8XXXXX是地址值,
#include "stdio.h"
main()
{
int x=0,y=0,t=0,index=0;
int s[3][4];
for(;x<3;x++)
{
for(y=0;y<4;y++)
{
scanf("%d",&t);
s[x][y]=t;
}
}
for(x=0;x<3;x++)
{
for(y=0;y<3;y++)
{
index=s[x][y]>s[x][y+1]?y:y+1;
}
if(s[x][index]<=s[0][index]&&s[x][index]<=s[1][index]&&s[x][index]<=s[2][index])
{
printf("%dddd\n",s[x][index]);
return;
}
}
printf("NO",s[x][index]);
}
⑷ c语言 求矩阵鞍点
啥是鞍点?
⑸ c语言中,由键盘输入一个3×4(3行4列)的矩阵,输出矩阵中的鞍点(即在矩阵中行中最大,列中最小的
int main(){
int a[3][4];
int i,j,k,n,max1,max2;
printf("input: ");
for(i=0;i<3;i++){
for(j=0;j<4;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++){
max1=0;
max2=0;
k=0;
for(j=0;j<4;j++){
if(a[i][j]>max1){
max1=a[i][j];
k=j;
}
}
printf("行最大值max1:%d ",max1);//1.求出行中最大值
max2=max1;
for(n=0;n<3;n++){
if(a[n][k]<max2){
max2=a[n][k];
}
}
printf("列最小值max2:%d ",max2); //2.求出行最大值的那一列的最大值
if(max1==max2){
printf("鞍:%d ",max1);
}else{
printf("NO ");
}//3.判断是否是同一个值
}
}
⑹ C语言求二维数组的鞍点
前面xoaxa的回答挺正确的,只是在后面输出鞍点的时候出错了,应该把行列位置交换下,求min时的得出位置是行的位置,求max时得出的是所在列的位置。
⑺ c语言问题 找矩阵中的鞍点
#include <stdio.h>
#define N 3
#define M 4
void main()
{
int i,j,k,a[N][M];
int max,maxj,flag;
printf("Please input matrix:\n");
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
for(i=0;i<N;i++)
{
max=a[i][0];
maxj=0;
for(j=0;j<M;j++)
if(a[i][j]>max)
{max=a[i][j];
maxj=j;
}
flag=1;
for(k=0;k<N;k++)
if(max>a[k][maxj])
{flag=0;
continue;
}
if(flag)
{printf("a[%d][%d]=%d\n",i,maxj,max);
break;}
}
if(!flag)
printf("NO!");
}
⑻ C语言求任意数M*N矩阵的鞍点
#include <stdio.h>
main()
{
int a[100][100];
int m,n,i,j,sign;
printf("input m and n:\n");
scanf("%d%d",&m,&n);
printf("Input the array:\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<m;i++)
{
for(sign=0,j=1;j<n;j++)
if(a[i][sign]<a[i][j])
sign=j;
for(j=0;j<m;j++)
if(a[i][sign]>a[j][sign])
break;
if(j>=m)
printf("鞍点:%d\n",a[i][sign]);
}
}
//调试成功
⑼ C语言寻找矩阵的鞍点
1、鞍点为矩阵元素所在行的最大值,以及所在列的最小值。
⑽ 求一个5×5矩阵马鞍点的C语言程序
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#defineM50
#defineN50
intmain(void){
inti,j,k,T,max,jmax,flag,f;
inta[M][N],m,n;
srand((unsigned)time(NULL));
scanf("%d",&T);//测试次数
while(T--){
scanf("%d%d",&m,&n);//二维数组维度
for(i=0;i<m;++i){//产生二维数组元素
for(j=0;j<n;++j){
a[i][j]=rand()%1000;
printf("%04d",a[i][j]);
}
printf("
");
}
f=1;
for(i=0;i<m;++i){
max=a[i][0];
jmax=0;
for(j=1;j<n;++j){//找出i行最大的
if(max<a[i][j]){
max=a[i][j];
jmax=j;//且记录所在的列坐标
}
}
flag=1;//预置标志
for(k=0;k<m&&flag;++k){//判断max是否为所在列最小的
if(a[k][jmax]<max)//不是
flag=0;//则清标志
}
if(flag==1){//有鞍点
printf("鞍点:a[%d][%d]=%d
",i,jmax,a[i][jmax]);
f=0;
//break;
}
}
if(f)printf("没有鞍点。
");//没有鞍点
}
return0;
}