当前位置: 代码迷 >> C语言 >> 由键盘输入一个3×4矩阵a,选出各列最小的元素组成一个一维数组b并输出
  详细解决方案

由键盘输入一个3×4矩阵a,选出各列最小的元素组成一个一维数组b并输出

热度:400   发布时间:2008-06-17 11:01:32.0
由键盘输入一个3×4矩阵a,选出各列最小的元素组成一个一维数组b并输出
由键盘输入一个3×4矩阵a,选出各列最小的元素组成一个一维数组b并输出


这段要怎么写啊,输出结果是什么样的???
哪位帮帮忙啊??

这段要怎么改呢???
#include "stdio.h"
#include "conio.h"

void main()
{
int i,j,a[3][4],b[4],min;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
b[i]=a[0][i];
for (i=0;i<4;i++)
for(j=1;j<2;j++)
if(a[i][j]<b[i]) b[i]=a[i][j];
for(i=0;i<4;i++)
printf("%d",b[i]);


    getch();
}

谁能帮我解释一下上面那段显示的结果??
搜索更多相关的解决方案: 矩阵  元素  键盘  输出  输入  

----------------解决方案--------------------------------------------------------
~
我给你写了个
#include<stdio.h>
int main()
{
    int a[3][4],i,j,b[3];
    for(i=0;i<3;i++)
    {
       for(j=0;j<4;j++)   
         scanf("%d",&a[i][j]);
       printf("\n");
    }
    
    for(i=0;i<3;i++)
    {
        b[i]=a[i][0];
        for(j=0;j<4;j++)
        {
        
           if(b[i]>a[i][j])
              b[i]=a[i][j];
        }
        printf("%4d",b[i]);
    }
    printf("\n");
        
}
----------------解决方案--------------------------------------------------------
~
不好意思 搞错了 搞成求行的了 我在改下  呵呵
----------------解决方案--------------------------------------------------------
~
#include<stdio.h>
int main()
{
    int a[3][4],i,j,b[4];
    for(i=0;i<3;i++)
    {
       for(j=0;j<4;j++)   
         scanf("%d",&a[i][j]);
       printf("\n");
    }
    
    for(j=0;j<4;j++)
    {
        b[j]=a[0][j];
        for(i=1;i<3;i++)
        {
        
           if(b[j]>a[i][j])
              b[j]=a[i][j];
        }
        printf("%4d",b[j]);
    }
    printf("\n");
        
}
----------------解决方案--------------------------------------------------------
楼上写得 很好
----------------解决方案--------------------------------------------------------
错在这!
for (i=0;i<4;i++)
for(j=1;j<2;j++)
if(a[i][j]<b[i]) b[i]=a[i][j];
上面错了!
a[3][4];
你的i只能有三个值j有四个值;

下面是我想的!!
for(j=0;j<4;j++)
for(i=3;i<3;i++)
{
    if(b[j]>a[i][j]) b[j]=a[i][j];
}
----------------解决方案--------------------------------------------------------
谢谢各位,最近太忙,所以没及时回复
----------------解决方案--------------------------------------------------------
这不是在求鞍点?
鞍点是求一行的最大,一的列最小
我们只需修改下就可以的到鞍点了
#include<stdio.h>
int main()
{
    int a[3][4],i,j,b[3];
Int flag=0;
    for(i=0;i<3;i++)
    {
       for(j=0;j<4;j++)   
         scanf("%d",&a[i][j]);
       printf("\n");
    }
   
    for(i=0;i<3;i++)
    {
        b[i]=a[i][0];
        for(j=0;j<4;j++)
          {
        
           if(b[i]<a[i][j])
              b[i]=a[i][j];
           }
       for (j=0;j<4;i++)
{  if(b[i]>a[i][j])
  { Flag=1;
    Break;   
}
}
    }
   if (flag=0)
{for (i=0;i<3;i++)
  For (j=0;j<4;j++)
Printf(“%d”,a[i][j])
}        
}
好像是这样的
我这边没有vc
不能测试
你们看看行不?
----------------解决方案--------------------------------------------------------
不好,一个数组可能有很多鞍点

1 1 1 1
1 1 1 1
1 1 1 1
哈哈,抬杠。。
----------------解决方案--------------------------------------------------------
...呵呵
----------------解决方案--------------------------------------------------------