C语言输入3x4矩阵,输出最大、最小值的行号和列号,最大值能正常输出,最小值无法输出,怎么改都不行?

#include"stdio.h"intmain(){inti,j,maxrow=0,maxcolum=0,minrow=0,mincolum=0;/*定义行变量i,列变... #include"stdio.h"
int main()
{
int i, j, maxrow = 0, maxcolum = 0, minrow = 0, mincolum = 0;/*定义行变量i,列变量j,最大的值的行和列并初始化,最
小的行和列并初始化*/
int a[3][4];/*定义数组数值*/
int max = a[0][0];/*把0行0列赋给max*/
int min = a[0][0];/*把0行0列赋给min*/
printf("Please input number for a[3][4]:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
scanf_s("%d",&a[i][j]);
}
printf("\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
printf("%-2d ", a[i][j]);/*打印a[3][4]数组并输出*/
if (j == 4)
printf("\n");/*如果列数为4,换行*/
}
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
if (a[i][j] > max)
{
max = a[i][j];
maxrow = i;
maxcolum = j;
}
if (a[i][j] < min)
{
min = a[i][j];
minrow = i;
mincolum = j;
}
}
}/*循环比较,先比较0行(i),列(j)循环(0,1,2,3),在比较1(i),列循环(0.1.2.3)*/
printf("max=%d,maxrow=%d,maxcolum=%d\n", max, maxrow+1 , maxcolum+1 );
printf("min=%d,minrow=%d,mincolum=%d\n", min, minrow+1, mincolum+1);
getchar();
return 0;
}
展开
 我来答
cdyzxy
2020-08-08 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:4582万
展开全部

原程序max和min赋值写在整个数组输入赋值值之前,因此其中存放的并不是数组中a[0][0]的值,而是在赋值前的某个值,这个导致出错。可以考虑将max和min的赋值语句写到scanf循环之后。

#include"stdio.h"

int main() { int i, j, maxrow = 0, maxcolum = 0, minrow = 0, mincolum = 0,a[3][4];
printf("Please input number for a[3][4]:\n");
for (i = 0; i < 3; i++) for (j = 0; j < 4; j++) scanf_s("%d",&a[i][j]);
printf("\n"); maxrow=maxcolum=minrow=mincolum=0;
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) printf("%-2d ", a[i][j]);
printf("\n");
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
if (a[i][j] > a[maxrow][maxcolum] ) { maxrow = i; maxcolum = j; }
else if (a[i][j]<a[minrow][mincolum]) { minrow = i; mincolum = j; } //两个条件是互斥的
}
}
printf("max=%d,maxrow=%d,maxcolum=%d\n", 

  a[maxrow][maxcolum],maxrow+1,maxcolum+1);
printf("min=%d,minrow=%d,mincolum=%d\n",

  a[minrow][mincolum], minrow+1, mincolum+1);
getchar();
return 0;
}

月光下的qq
2020-08-07 · 科技优质答主
月光下的qq
采纳数:392 获赞数:673

向TA提问 私信TA
展开全部
您好,很高兴回答您的问题。
仔细查看了您的程序,个人给点小建议:对于多个问题,还是分开分别用循环操作比较好。您的程序中,求最大值和行列号与求最小值和行列号放在一个循环种操作,很容易引起误解,也不利于对称序的分解分析,所以放在两个循环中可能会更好一些哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式