急求大家帮忙做个C语言题

1、找出一个二维数组中的“鞍点”,所谓“鞍点”,是指一个数组元素,该元素在其所在的行最大,而在其所在的列最小2、写一个函数,将一个4*5的矩阵转置】急求!!!!... 1、找出一个二维数组中的“鞍点”,所谓“鞍点”,是指一个数组元素,该元素在其所在的行最大,而在其所在的列最小
2、写一个函数,将一个4*5的矩阵转置

急求!!!!
展开
 我来答
wangwei_8046
2008-06-26 · TA获得超过3880个赞
知道小有建树答主
回答量:509
采纳率:0%
帮助的人:552万
展开全部
第一题:
#include <stdio.h>
void main()
{
//计算一个二维数组的鞍点(即行中最大,列中最小的数)
int i,j,m,n,p,max,a[4][3];
for(i=0;i<4;i++)//给数组赋值
{
printf("请输入第%d列元素:\n",i+1);
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
printf("您输入的数组是:\n");
for(i=0;i<4;i++)//输出数组元素
{
for(j=0;j<3;j++)
printf("%4d",a[i][j]);
printf("\n");
}
max=a[0][0];
for(i=0;i<=3;i++) //寻找鞍点
for(j=0;j<=2;j++)
if(a[i][i]>max)
{
max=a[i][j];
m=i;
n=j;
}
for(p=0;p<3;p++)
if(max>=a[p][n])
{
max=a[p][n];
}
m=p;
printf("鞍点:a[%d][%d]=%d\n",m,n,a[m][n]);
}

第二题:
#include <stdio.h>
void main()
{
int i,j,arr[4][5],brr[5][4];
printf("请输入数组(4*5)的每个元素:\n");
for(i=0;i<4;i++)
for(j=0;j<5;j++)
scanf("%d",&arr[i][j]);
printf("您输入的数组是:\n");
for(i=0;i<4;i++) //输出原数组
{
for(j=0;j<5;j++)
printf("%5d",arr[i][j]);
printf("\n");
}
for(i=0;i<4;i++)//对数组进行行列转换
{
for(j=0;j<5;j++)
brr[j][i]=arr[i][j];
}
printf("转换后的数组是:\n");//输出转换后的数组
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%5d",brr[i][j]);
printf("\n");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cooclsee
2008-06-24 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:124万
展开全部
下面的程序都经过调试正确!!
1.
#define A 3 /*设置二维数组边界*/
#define B 3
#include<stdio.h>
void main()
{
int i,j,m,n,p,number=0;
int a[A][B];
for(i=0;i<A;i++) /*输入二维数组数据*/
for(j=0;j<B;j++)
scanf("%d",&a[i][j]);
for(i=0;i<A;i++) /*打印出二维数组*/
{
for(j=0;j<B;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
for(i=0;i<A;i++) /*扫描鞍点*/
{ m=0;
for(j=0;j<B;j++)
if(a[i][m]<=a[i][j]) m=j,p=i;
n=0;
for(i=0;i<A;i++)
if(a[n][m]>=a[i][m]) n=i;
{
if(p==n)
printf("第%d行鞍点是a[%d][%d]=%d\n",p+1,p+1,m+1,a[p][m]);}
number++;
}
if(number==0)
printf("没有鞍点!\n");
}

2.
void main()
{
int i,j,m,n,p,number=0;
int a[5][5],temp;
for(i=0;i<4;i++) /*输入二维数组数据*/
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
for(i=0;i<4;i++) /*打印出二维数组*/
{
for(j=0;j<5;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
for(i=0;i<4;i++) /*数组转置*/
for(j=i;j<5;j++)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
for(i=0;i<5;i++) /*打印出转置后二维数组*/
{
for(j=0;j<4;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
micky42308
2008-06-24 · TA获得超过130个赞
知道答主
回答量:203
采纳率:0%
帮助的人:187万
展开全部
#include <stdio.h>
#include <stdlib.h>

void FindPoint(int a[][5])//a[x][y]
{
int tmp;
// int point_x;
int point_y;
bool findflag=false;
for(int i=0;i<5;i++)
{
//point_x=i;
point_y=0;
tmp=a[i][0];
for(int j=0;j<5;j++)
{
if(a[i][j]>tmp)
{
tmp=a[i][j];
// point_x=i;
point_y=j;

}
}
/////find max in a row,then check in the column
// printf("the max value in Row%d is:%d\n",i,tmp);

for(int m=0;m<5;m++)
{
if(tmp==a[i][m]){
findflag=false;
for(int k=0;k<5;k++)
{
if(k==i) continue;
if(tmp>a[k][m]){findflag=true;break;}
}
if(!findflag)printf("Find a point a[%d][%d]=%d\n",i,point_y,tmp);;
}
}
}
}
void reverseArray(int a[][5])
{
int tmp;
for(int i=0;i<5;i++)
{
for(int j=i+1;j<5;j++)
{
tmp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=tmp;
}
}
}

main()
{
int a[5][5]={
{1,2,3,4,5},{5,4,3,2,7},{1,1,2,3,9},{2,2,2,2,8},{6,6,6,6,9}
};
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
printf("%-4d",a[i][j]);
}
printf("\n");

}
FindPoint(a);
reverseArray(a);
printf("\n");printf("\n");printf("抲擵岪\n");
for(i=0;i<5;i++)
{
for( int j=0;j<5;j++)
{
printf("%-4d",a[i][j]);
}
printf("\n");

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2008-06-24
展开全部
追加分吧,就给你写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式