用指针编程实现3X4的二维数组的元素读入以及求此二维数组的最大值及最大值下标

用指针编程实现3X4的二维数组的元素读入以及求此二维数组的最大值及最大值下标 
请用以下函数实现:
void Input(int (*p)[4],int m, int n); /*数组元素读入函数*/
int FindMax(int *p[4], int m, int n, int *pRow, int *pCol); /*求最大值及下标函数*/

***输入提示信息:"Please input your data:\n"
***输入格式要求:无格式要求
***输出格式要求:"The maximum is %d, which is in row %d, colum %d\n"

样例:

Please input your data:
**输入样例:
3 5 2 7 1 6 12 11 4 10 8 9
**输出样例:
The maximum is 12, which is in row 1, colum 2
 

#include<stdio.h>

void Input(int (*p)[4],int m, int n);
int FindMax(int (*p)[4], int m, int n, int *pRow, int *pCol);

int main()
{
    int m=3,n=4;
    int a[3][4];
    int mrow=0,mcolum=0;
    
    printf("Please input your data:\n");
    Input(a,m,n);
    int max= FindMax(a,m,n,&mrow,&mcolum);
    printf("The maximum is %d, which is in row %d, colum %d\n",max,mrow,mcolum);
    
    return 0;
}

void Input(int (*p)[4],int m, int n)    //行指针
{
    for(int i=0;i<m;i++)
        for(int j=0;j<n;j++)
            scanf("%d",*(p+i)+j);
}
int FindMax(int (*p)[4], int m, int n, int *pRow, int *pCol)
{
    int max=*p[0];
    for(int i=0;i<m;i++)
        for(int j=0;j<n;j++)
            if(p[i][j]>max){
                max=p[i][j];
                *pRow=i;
                *pCol=j;
            }
    return max;
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是用指针编程实现3x4二维数组元素读入以及求此二维数组最大值最大值下标的代码: ```c++ #include <iostream> using namespace std; int main() { int arr[3][4]; int max_val = arr[][]; int max_i = , max_j = ; // 用指针读入二维数组元素 for (int i = ; i < 3; i++) { for (int j = ; j < 4; j++) { cout << "请输入arr[" << i << "][" << j << "]的值:"; cin >> *(*(arr + i) + j); if (*(*(arr + i) + j) > max_val) { max_val = *(*(arr + i) + j); max_i = i; max_j = j; } } } // 输出二维数组最大值最大值下标 cout << "二维数组最大值为:" << max_val << endl; cout << "最大值下标为:(" << max_i << ", " << max_j << ")" << endl; return ; } ``` ### 回答2: 指针是一种非常强大的数据类型,可以用来编程实现二维数组读入和求最大值最大值下标等功能。对于一个3x4二维数组,我们可以用以下的代码实现: ```c++ #include <iostream> using namespace std; int main() { int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; int* p = &arr[0][0]; int max = arr[0][0]; int max_row = 0, max_col = 0; // 读入二维数组 for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { cout << "请输入arr[" << i << "][" << j << "]的值:"; cin >> *(p + i * 4 + j); } } // 求最大值最大值下标 for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { if (*(p + i * 4 + j) > max) { max = *(p + i * 4 + j); max_row = i; max_col = j; } } } // 输出结果 cout << "二维数组最大值是:" << max << endl; cout << "最大值下标是:(" << max_row << "," << max_col << ")" << endl; return 0; } ``` 在上面的代码中,我们首先定义了一个3x4二维数组arr,并用指针p指向第一个元素。接着,我们通过循环语句读入二维数组的所有元素,并根据指针移动来进行访问。最后,我们再通过两个循环语句找到二维数组最大值及其下标,并输出结果。 总的来说,通过指针编程实现二维数组读入和求最大值等操作,可以让我们的代码更加灵活高效,推荐学习和使用。 ### 回答3: 一、概述 在C语言中,指针是操作数组的重要工具。指针可以让我们访问数组的每一个元素并且可以通过指针指向的地址进行对数组进行操作,这样就不需要按照数组下标来访问和修改数组元素指针的使用可以极大的提高数组的访问效率和灵活性。 本文介绍如何用指针编写一个程序,实现3x4二维数组元素读入以及求此二维数组最大值最大值下标的功能。 二、思路 首先,我们需要用指针来定义一个3x4二维数组,并且用指针实现对该数组的元素读入。 然后,我们需要对该数组进行遍历,找出其中的最大值以及对应的下标。 最后,我们需要用指针输出得到的最大值及其对应的下标。 三、代码实现 下面是一个用指针编写实现3x4二维数组元素读入以及求此二维数组最大值最大值下标的示例程序。 ``` #include <stdio.h> int main() { int a[3][4]; int i, j, max, row, col; int *p; /* 用指针实现二维数组元素读入 */ printf("请按顺序输入3x4二维数组:\n"); for (i = 0; i < 3; i++) for (j = 0; j < 4; j++) scanf("%d", &a[i][j]); /* 用指针遍历二维数组,找到最大值及其对应的下标 */ p = &a[0][0]; max = *p; for (i = 0; i < 3; i++) for (j = 0; j < 4; j++) if (*(p+i*4+j) > max) { max = *(p+i*4+j); row = i; col = j; } /* 用指针输出得到的最大值及其对应的下标 */ printf("二维数组中的最大值为:%d\n", max); printf("最大值所在的行为:%d\n", row+1); printf("最大值所在的列为:%d\n", col+1); return 0; } ``` 四、程序解析 1. 定义一个3x4二维数组a[3][4],用来存放从键盘输入的元素。 2. 接下来定义变量i, j, max, row, col和指针变量*p,分别表示循环计数器、二维数组最大值及其所在的行列数和指向二维数组元素指针。 3. 通过scanf函数,从键盘输入3x4二维数组元素,并将其存入a数组中。 4. 用指针p遍历二维数组,找到其中的最大值及其对应的下标,这里需要注意的是,二维数组a的存储方式是按行存储的,因此要从首元素开始寻址,每次加上当前列数和当前行数*列数,才能找到对应的元素。 5. 用指针输出得到的最大值及其对应的下标。 五、总结 指针C语言中是一种很重要的概念,用指针编写程序可以大大提高程序的效率和可读性,而在操作数组时,更是扮演着不可或缺的角色。在本例中,通过使用指针,我们实现了对一个3x4二维数组进行元素读取以及求其最大值最大值下标的功能,其代码简洁而高效,具有很强的实用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值