行列最大值,方法很多,一般循环遍历属于就可以了。
既然你要用指针来做,我就用指针来写。利用数组元素地址连贯性来做。
#include <stdio.h>
#define MXR 4//最大行数
#define MXC 3//最大列数
int main()
{
int i=0,mr,mc,*p=NULL,*ps=NULL;
int nums[MXR][MXC]={{8,6,7},{2,6,3},{1,4,2},{9,3,5}};
int mrs[MXR],mcs[MXC];
printf("原二维数组:\n8 6 7\n2 6 3\n1 4 2\n9 3 5\n");
//-----------------------获取每行最大值------------------------------------------------
p=&nums[0][0],mr=*p;
for(;p<=&nums[MXR-1][MXC-1];p++)
{
if(p>&nums[0][0]&&(p-&nums[0][0])%MXC==0)//如果指针换行,保存上一行最大值
{
mrs[i++]=mr;
mr=*p;
}
if(mr<*p)
mr=*p;
}
mrs[i]=mr;
//-----------------------获取每列最大值-----------------------------------------------------
i=0,ps=&nums[0][0];
while(ps<=&nums[0][MXC-1])
{
p=ps,mc=*p;
while(p<=&nums[MXR-1][MXC-1])
{
if(mc<*p)
mc=*p;
p+=MXC;
}
mcs[i++]=mc;
ps++;
}
//---------------输出结果-----------------------------------------------------------------
printf("每行最大值分别为: \n");
for(i=0;i<MXR;i++)
printf("%d ",mrs[i]);
printf("\n每列最大值分别为: \n");
for(i=0;i<MXC;i++)
printf("%d ",mcs[i]);
return 0;
}
C语言求一个二维组每行每列的最大值 并放在一个新数组中 ,用指针做?
define MXR 4\/\/最大行数 define MXC 3\/\/最大列数 int main(){ int i=0,mr,mc,*p=NULL,*ps=NULL;int nums[MXR][MXC]={{8,6,7},{2,6,3},{1,4,2},{9,3,5}};int mrs[MXR],mcs[MXC];printf("原二维数组:\\n8 6 7\\n2 6 3\\n1 4 2\\n9 3 5\\n");\/\/---获取每行...
c语言用指针找二维数组中的最大值和下标
void InputArray(int *p,int m,int n);int FindMax(int *p,int m,int n,int *pRow,int *pCol);int main(){ int a[10][10];int m,n;int max,r,c;printf("Input m,n:\\n");scanf("%d,%d",&m,&n);InputArray(a[0],m,n);max=FindMax(a[0],m,n,&r,&c);printf("max...
C语言 怎么用指针输出一个二维数组的全部值
C语言的数组(不管多少维)在内存中都是线性储存的。所以用一级指针加偏移就可以访问所有元素。举个例子,有一个10*10的二维数组a,这样就可以输出:int a[10][10];int *p = (int *)a;int i;for (i = 0; i < 10 * 10; i++)printf("%d", *(p + i));
C语言程序设计中"二维数组中元素指针的表示"的例题,求详解
⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。一个二维数组在计算机中存储时,是按行存储的,即先存储第一行的元素,再存储第二行的元素。当把每一行看作一个整体,即作为一个大的数组元素时,原来的二维数组也就变成一个一维数组了。而每个大数组...
C语言中二维数组行指针是什么
而 array 是二维数组的名字,它指向的是所属元素的首地址,其每个元素为一个行数组。它是以‘行’来作为指针移动单位的,如array+i 指向的是第 i 行。对 array 进行 * 运算,得到的是一维数组 array[0] 的首地址,所以 *array 与 array[0] 为同个值。如果定义 int* p,p为指int类型的...
C语言指针与二维数组求解
也就是说此处并不是定义数组,而只是个指针,而这个指针指向的变量不是普通的char,而是一个有三个元素的数组。你可以试试看sizeof(p)的值是多少,结果应该是4吧,会是个数组吗?你还可以输出一下p和p++的值,看看它们相差多少?应该是3吧! 这第三句就更简单了,一个简单的赋值语句,把二级指针a(也就是二维数组...
...型数组中最大的元素、最小元素以及所有元素的平均值(c语言指针...
void main(){ int i, max, min;float sum;int a[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};int *pa = &a[0][0];max = 0;min = 0;sum = 0.0;for (i = 0; i < sizeof(a) \/ sizeof(int); i++){ if (*pa > max){ max = *pa;} if (...
输入二维数组a[4][6],输出其中的最大值及其对应的行列位置 c语言...
int ans,maxij;ans=findmax(a[0],&maxij); \/\/看第一个参数 printf("\\nthe answer is a[%d][%d]=%d",maxij\/6,maxij%4,ans);} int findmax(int *p,int *p1){ \/\/将其当成一维数组对待 int m=p[0];for (int i=0;i<24;i++){ if (m<p[i]){m=p[i],*p1=i;...
C语言中二维数组的指针问题
假如:p=a 这是使指针p指向数组a的首行,当你输出*p这个值的时候,它输出的值是a[0][0]这个元素的值,但是当你执行p+1的时候,那么p就会指向数组a的序号为1的行,即指向了a[1][0]这个元素所在的行了。p始终指向数组a的行,而不指向列。虽然p=a[0] p=&a[0][0] p=a 这三个...
C语言用二维数组定义一个自定义函数数组的最大值?
以下是一个C语言程序,用二维数组定义一个自定义函数数组,并计算数组中的最大值:```c include <stdio.h> \/\/ 自定义函数,用于计算一个整数数组的最大值 int array_max(int arr[], int len) { int max = arr[0];for (int i = 1; i < len; i++) { if (arr[i] > max) { ...