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

本文目录
- 用函数求一个二维数组的最大值及其行下标和列下标
- C语言设计函数:接受一个二维数组,用指针方式返回数组的最大值,最小值
- c语言指针 用指向数组元素的指针找出二维数组中最大元素极其位置(数组在程序中赋值)
- 用指针实现:找出二维数组(设3行4列)中的最大数及其位置
- c语言用指针找二维数组中的最大值和下标
- 二维数组指针问题求二位数组的最大值
- C语言求一个二维组每行每列的最大值 并放在一个新数组中 ,用指针做
- C语言程序,急用指针实现:找出二维数组(设3行4列)中的最大数及其位置
- 刚学指针不太懂,想编写一个程序,求二维数组中的最大数输出,并输出所在的行和列,下面编的不对的,
用函数求一个二维数组的最大值及其行下标和列下标
两处错误:
1. 返回函数内的局部变量。函数内局部变量在函数返回后就不再有效了。换成static.
2.输出的应该是p.
给你改过了。
结果测试:
输入二维数组的行数和列数
2 3
输入二维数组如下
1 2 3
4 8 0
最大值为8,其对应的行下标为1,其对应的列下标为1
改过的代码:
#include《stdio.h》
#define M 5
#define N 5
void 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;
}
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语言指针 用指向数组元素的指针找出二维数组中最大元素极其位置(数组在程序中赋值)
#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网上有许多产品团购,便宜有口碑
用指针实现:找出二维数组(设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;
}
二维数组指针问题求二位数组的最大值
如果满意请采纳!!
首先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 4
int 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语言求一个二维组每行每列的最大值 并放在一个新数组中 ,用指针做
行列最大值,方法很多,一般循环遍历属于就可以了。
既然你要用指针来做,我就用指针来写。利用数组元素地址连贯性来做。
#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语言程序,急用指针实现:找出二维数组(设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
刚学指针不太懂,想编写一个程序,求二维数组中的最大数输出,并输出所在的行和列,下面编的不对的,
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,列0
for(i=0;i《3;i++) for(j=0;j《4;j++) {
if(a; *hang=i; *lie=j;};
}
return max; // 可以用函数返回最大值
}

更多文章:
avantage怎么设置为中文(Avantage安装丢失GIT)
2026年10月15日 03:00
activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)
2026年10月14日 20:30
excel连接sql数据库教程(excel怎么连接sql数据库)
2026年10月14日 19:40






