指针二维数组函数最大值(c语言指针 用指向数组元素的指针找出二维数组中最大元素极其位置(数组在程序中赋值))

2024-06-10 04:10:06 :45

指针二维数组函数最大值(c语言指针 用指向数组元素的指针找出二维数组中最大元素极其位置(数组在程序中赋值))

本篇文章给大家谈谈指针二维数组函数最大值,以及c语言指针 用指向数组元素的指针找出二维数组中最大元素极其位置(数组在程序中赋值)对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

c语言指针 用指向数组元素的指针找出二维数组中最大元素极其位置(数组在程序中赋值)

#include《stdio.h》void main(){ void search(int *p,int n); int a=,,}; search(a,12);//}void search(int *p,int n){ int max=*p; for(;n》0;p++,n--)// if(*p》max) max=*p; printf("%d",max);}写了//的是我改过的地方另外,团IDC网上有许多产品团购,便宜有口碑

二维数组指针问题求二位数组的最大值

如果满意请采纳!!

首先max函数的应该有返回值,所以在max前要加上int 

第二,数组初始化不对,int a={{1,2,9,7},{5,13,7,6},{9,10,15,1}}圆括号改为花括号

代码修改如下:

#include 《stdio.h》#define M 3#define N 4int max(int a){int i,p,*q;p=a;for(i=0;i《(M*N);i++)    {if(*q》p){p=*q;}q++;}return p;}main(){int a={{1,2,20,7},{5,13,7,6},{9,18,15,1}},c;c=max(a);printf("最大值为%d\n",c);}

C语言程序,急用指针实现:找出二维数组(设3行4列)中的最大数及其位置

# include《stdio.h》 m a i n ( ) { int a,*ptr,i,j,max,maxi,maxj; / * m a x 是数组的最大, m a x i 是最大元素所在行, m a x j 是最大元素所在列 * / f o r ( i = 0 ; i 《 3 ; i + + ) f o r ( j = 0 ; j 《 4 ; j + + ) s c a n f ( " % d " , & a ) ; p t r = a ; / *将二维数组的首地址传递给指针变量 * / m a x _ a r r ( p t r , & m a x , & m a x i , 1 2 ) ; m a x j = m a x i % 4 ; / *每行有四个元素,求该元素所在列 * / m a x i = m a x i / 4 ; / *求该元素所在行 * / printf("max=%d,maxi=%d,maxj=%d",max,maxi,maxj); } int max_arr(b,p1,p2,n) int *b,*p1,*p2,n; / * b指向二维数组的指针,p 1指向最大值,p 2指向最大值在一维数组中的位置, * / / * n是数组的大小 * / { int i; *p1=b; *p1=0; f o r ( i = 1 ; i 《 n ; i + + ) / * 找最大* / if (b; *p2=i;} } 运行程序: R U N 4 7 8 9 3 7 9 3 1 5 2 6 max=9,maxi=0,maxj=3

用指针实现:找出二维数组(设3行4列)中的最大数及其位置

  在内存中实际上没有二维数组的概念,可以完全看成一维数组。求最大值,可以使用假设法,假设第1个元素为最大值,然后遍历数组,通过比较求出最大值即可。找到在1维数组中的维数再转换成二维数组中的维数即可。

#include 《stdio.h》int main(){int a =  {{92,108,3000,1},{100,101,102,103},{799,10000,20, 0}};int *pstart = &a;int max = a;int pos = 0;for (int inx=0; inx!=12; ++inx) {if (*(pstart+inx) 》 max)  max = *(pstart+inx), pos = inx;}printf("最大值是:%d\t其所在位置:a\n", max, pos / 4, pos % 4);return 0;}

c语言用指针找二维数组中的最大值和下标

#include 《stdio.h》void InputArray(int *p,int m,int n);int FindMax(int *p,int m,int n,int *pRow,int *pCol);int main(){int a;int m,n;int max,r,c;printf("Input m,n:\n");scanf("%d,%d",&m,&n);InputArray(a,m,n);max=FindMax(a,m,n,&r,&c);printf("max=%d,row=%d,col=%d\n",max,r,c);return 0;}void InputArray(int *p,int m,int n){int i,j;printf("Input %d*%d array:\n",m,n);for(i=0; i《m; i++)for(j=0; j《n; j++)scanf("%d",(p+i*n+j));}int FindMax(int *p,int m,int n,int *pRow,int *pCol){int i,j,max=*p;*pRow=0;*pCol=0;for(i=0; i《m; i++)for(j=0; j《n; j++)if(*(p+i*n+j)》max){max=*(p+i*n+j);*pRow=i;*pCol=j;}return max;}

用函数求一个二维数组的最大值及其行下标和列下标

两处错误:1. 返回函数内的局部变量。函数内局部变量在函数返回后就不再有效了。换成static. 2.输出的应该是p. 给你改过了。结果测试:输入二维数组的行数和列数2 3输入二维数组如下1 2 34 8 0最大值为8,其对应的行下标为1,其对应的列下标为1改过的代码:#include《stdio.h》#define M 5#define N 5void main(){ int i,j,m,n; int a,int m,int n); printf("输入二维数组的行数和列数\n"); scanf("%d%d",&m,&n); printf("输入二维数组如下\n"); for(i=0;i《m;i++) for(j=0;j《n;j++) scanf("%d",&a); p=array(a,m,n); printf("最大值为%d,其对应的行下标为%d,其对应的列下标为%d", p);}int *array(int (*p),int m,int n){ int i,j; static int t; t; t=0; t=0; for(i=0;i《m;i++) for(j=0;j《n;j++) if(p) { t; t=i; t=j; } return t;}

刚学指针不太懂,想编写一个程序,求二维数组中的最大数输出,并输出所在的行和列,下面编的不对的,

int hang,int lie 的结果要从函数带回来,所以要用指针。a。 #include《stdio.h》#include《stdlib.h》int main(){ int zd(int a,int *hang,int *lie); int a={{1,3,5,9},{9,6,2,7},{3,5,7,8}}; int max,hang,lie; zd( a, &hang, &lie); // max = zd( a, &hang, &lie); 也可以printf("max = %d\n",a); printf("shi di %d hang:\n",hang); printf("shi dou shao %d lie:",lie); return 0;}int zd(int a,int *hang,int *lie){ int i,j,k,max; *hang =0; *lie=0; max=a; // 设初始max, 行0,列0for(i=0;i《3;i++) for(j=0;j《4;j++) { if(a; *hang=i; *lie=j;};}return max; // 可以用函数返回最大值}

C语言求一个二维组每行每列的最大值 并放在一个新数组中 ,用指针做

行列最大值,方法很多,一般循环遍历属于就可以了。

既然你要用指针来做,我就用指针来写。利用数组元素地址连贯性来做。

#include 《stdio.h》

#define MXR 4//最大行数

#define MXC 3//最大列数

int main()

{

    int i=0,mr,mc,*p=NULL,*ps=NULL;

    int nums={{8,6,7},{2,6,3},{1,4,2},{9,3,5}};

    int mrs;

    printf("原二维数组:\n8 6 7\n2 6 3\n1 4 2\n9 3 5\n");

//-----------------------获取每行最大值------------------------------------------------

    p=&nums,mr=*p;

    for(;p《=&nums;p++)

    {

        if(p》&nums)%MXC==0)//如果指针换行,保存上一行最大值

        {

            mrs=mr;

            mr=*p;

        }

        if(mr《*p)

            mr=*p;

    }

    mrs=mr;

//-----------------------获取每列最大值-----------------------------------------------------

    i=0,ps=&nums;

    while(ps《=&nums)

    {

        p=ps,mc=*p;

        while(p《=&nums)

        {

            if(mc《*p)

                mc=*p;

            p+=MXC;

        }

        mcs=mc;

        ps++;

    }

//---------------输出结果-----------------------------------------------------------------

    printf("每行最大值分别为: \n");

    for(i=0;i《MXR;i++)

        printf("%d ",mrs);

    printf("\n每列最大值分别为: \n");

    for(i=0;i《MXC;i++)

        printf("%d ",mcs);

    return 0;

}

C语言设计函数:接受一个二维数组,用指针方式返回数组的最大值,最小值

#include 《stdio.h》void get_val(int array, int m, int n, int *max, int *min){ int i, j; for(*max = array, j = 0; j 《 m; j++){ for(i = 0; i 《 n; i++){ if(*max 《 array){ *max = array; } if(*min 》 array){ *min = array; } } }}int main(int argc, char *argv){ int array_test; int j, i, max, min; for(j = 0; j 《 100; j++){ for(i = 0; i 《 200; i++){ array_test = i*j; } } get_val(array_test, 100, 200, &max, &min); printf("max:%d,min:%d\n",max,min); }编译通过并通过测试,另外还可以通过指针传递:void get_val(int *array, int m, int n, int *max, int *min){ int i, j; for(*max = *array, *min= *array, j = 0; j 《 m; j++){ for(i = 0; i 《 n; i++){ if(*max 《 *(array+j*n+i)){ *max = *(array+j*n+i); } if(*min 》 *(array+j*n+i)){ *min = *(array+j*n+i); } } }}

如果你还想了解更多这方面的信息,记得收藏关注本站。

指针二维数组函数最大值(c语言指针 用指向数组元素的指针找出二维数组中最大元素极其位置(数组在程序中赋值))

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.