二分之根号五减一442 2023-10-09 18:02 采纳率: 90%
浏览 13
已结题

C语言这两个程序代码的区别

题目:输入一个3行4列的数组,找出该数组中绝对值最大的元素、输出该元素的绝对值及其两个下标值。如有多个输出行号最小的,还有多个的话输出列号最小的。

#include<stdio.h>
#include<math.h>
int main() {
    int i, j;
    int f[3][4];
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 4; j++)
        {
            scanf_s("%d", &f[i][j]);
        }
    }
    int  max = f[0][0];
    int a, b;
    for (i = 0; i <3; i++)
    {
        for (j = 0; j <4; j++)
        {
            if (abs(f[i][j]) >=abs( max))
            {
                max = f[i][j];
                a = i;
                b = j;
            }
        }

    }
    printf("%d %d %d", abs(max), a+1, b+1);
    return 0;
}

这个程序为什么不对?
为什么下面这个对?


```c

#include <stdio.h>
#include <math.h>  

int main()

{
    int i,j,m1,m2,max,a[3][4]; 
    
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
        {
            scanf("%d",&a[i][j]);    //输入数组元素 
        }
    }
        
    max=a[0][0];                    //给max赋初值 
    
    for(i=2;i>=0;i--)
    {
        for(j=3;j>=0;j--)           //如果绝对值大于max记录角标 
    
        {
            if(abs(a[i][j])>=abs(max))
        
            {
            
                max= a[i][j];
                
                m1= i+1;
                
                m2= j+1;
            
            }
    
        } 
    }
        
    printf("%d %d %d",abs(max),m1,m2); 
    
    return 0;

} 


```

  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-10-09 18:12
    关注

    第一个 从 索引小的往索引大的遍历, 最终的最大值如果有多个,肯定不是 列或者行 最小的呀

    所以应该是 从索引大的开始反向遍历,就是第二种的解法

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月17日
  • 已采纳回答 10月9日
  • 创建了问题 10月9日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据