分别用行指针和指向元素的指针求整形二维数组中的最大元素及其所在的行数和列数。c语言

作者&投稿:薛骨 (若有异议请与网页底部的电邮联系)
求一个三行四列二维数组元素的最大值,并确定最大值所在行和列(要求用的一级指针)。~

#include #include #define ARR_LEN 255 /*数组长度上限*/ /*录入矩阵内容*/ void inputMatrix (int matrix[ARR_LEN][ARR_LEN], int row, int col) { int i,j; printf ("请输入%d行%d列的矩阵:
", row, col); for (i=0; imax) { /*求最大值*/ max = matrix[i][j]; maxI = i; maxJ = j; } } } printf ("最大值:matrix[%d][%d] = %d
", maxI, maxJ, max); putchar ('
'); return 1;} int main (void) { int matrix[ARR_LEN][ARR_LEN]; int row, col; row = 3; col = 4; inputMatrix (matrix, row, col); /*录入矩阵内容*/ calcMatrix (matrix, row, col); /*计算处理矩阵内容*/ putchar ('
'); getch (); return 0;}

# include
m a i n ( )
{
int a[3][4],*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 [ i ] [ j ] ) ;
p t r = a [ 0 ] ; / *将二维数组的首地址传递给指针变量 * /
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[0]; *p1=0;
f o r ( i = 1 ; i < n ; i + + ) / * 找最大* /
if (b[i]>*p1) {*p1=b[i]; *p2=i;}
}

运行程序:

R U N
4 7 8 9
3 7 9 3
1 5 2 6
max=9,maxi=0,maxj=3

#include <stdio.h>

#include <stdlib.h>

#define COL 5

#define ROW 6

int *rowPoint(int (*p)[COL], int *max)

{

    int temp = **p;

    static int arr[2];

    for (int i = 0; i < ROW; i++)

    {

        for (int j = 0; j < COL; j++)

        {

            if (*(*(p + i) + j) > temp)

            {

                temp = *(*(p + i) + j);

                arr[0] = i;

                arr[1] = j;

            }

        }

    }

    *max = temp;

    return arr;

}

int *colPoint(int *p, int *max)

{

    static int arr[2];

    int temp = *p;

    int i = 0;

    for (int *s = p; s < p + (COL * ROW); s++)

    {


        if (temp < *s)

        {

            temp = *s;

            arr[1] = i % COL;

            arr[0] = (i - arr[i]) / COL;

        }

        i++;

    }

    *max = temp;

    return arr;

}

int main()

{

    int arr[ROW][COL] =

        {99, 88, 100, 58, 150,

         98, 63, 56, 17, 89,

         12, 160, 63, 89, 75,

         52, 20, 158, 963, 789,

         852, 985, 510, 101, 102,

         753, 951, 654, 742, 168};

    printf("元素值为:
");

    for (int i = 0; i < ROW; i++)

    {

        for (int j = 0; j < COL; j++)

        {

            printf("%d", arr[i][j]);

        }

        printf("
");

    }

    int max;

    int *result = (int *)malloc(sizeof(int) * 2);

    result = rowPoint(arr, &max);

    printf("
行指针结果:
");

    printf("max:%d  下标:%d,%d  %d行%d列
", max, result[0], result[1], result[0] + 1, result[1] + 1);

    result = colPoint(arr[0], &max);

    printf("列指针结果:
");

    printf("max:%d  下标:%d,%d  %d行%d列
", max, result[0], result[1], result[0] + 1, result[1] + 1);

    return 0;

}




分别用行指针和指向元素的指针求整形二维数组中的最大元素及其所在的行...
printf("\\n行指针结果:\\n");printf("max:%d 下标:%d,%d %d行%d列\\n", max, result[0], result[1], result[0] + 1, result[1] + 1);result = colPoint(arr[0], &max);printf("列指针结果:\\n");printf("max:%d 下标:%d,%d %d行%d列\\n", max, result[0], result...

C语言的行指针与元素指针有什么区别?
就拿这个例子说吧,a和a[0]虽然地址相同,可是指针指向类型却不同,对指针进行+1运算,显然得到的结果是不同的,因此a(行指针)+1中的"1”代表一行中全部元素所占的字节数,而a[0]+1,这里的1则是一个元素所占的字节数,是两个不同的概念。为了说明这个容易搞混的问题,可以用军训中排队点名...

c语言中的列指针是指向元素的指针吗,怎么区别行指针与列指针
二维数组的数组名a和a+1、a+2是行指针,它指向的元素是一个包含4个元素的一维数组,而*a、*(a+1)、*(a+2)是列指针,即指向元素的指针,相当于一维数组中指向特定元素的指针。*(*(a+1)+2)是先竖着走一行,再横着走两行,相当于a[1][2]。&a[1][0]就是a[1][0]的地址,相当于*(...

行指针和列指针的区别
以C语言为例,行指针和列指针的区别:行指针指的是一整行,不指向具体元素。列指针指的是一行中某个具体元素。c语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐。C语言编译器普遍存在于各种...

如何使用指针指向数组里面的元素?
1.使用列指针:定义一个列指针p,让它指向二维数组的第0个元素 int a[3][4];int *p;p=&a[0][0];\/\/因为a[0]是第0行的数组名,所以p=&a[0][0]相当于p=a[0],因为a[i][j]前面共有i*4+j个元素 该二维数组的任意i行j列元素可表示为*(p+i*4+j)。2.使用行指针:定义一个...

求一些c编程题
109、在说明语句:int *f();中,标识符f代表的是___ A) 一个用于指向整型数据的指针变量 B) 一个用于指向一维数组的行指针 C) 一个用于指向函数的指针变量 D) 一个返回值为指针型的函数名、D、2 110、在下列选项中,不正确的赋值语句是___ A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) ...

int(*ptr)[m] ,int(*ptr)()
当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。 从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。例如: (1)int*ptr;\/\/指针所指向的类型是int (2)char*ptr;\/\/指针所指向的的类型是char...

int *[] 和int (*)[]的区别?
因为二维数组在内存中不是像我们逻辑思维一样存储行行列列的,它是一下子甩开一大串存完第一行存第二行。这个行指针就是应用在那个j上面,j每每加+1实际上就是向后移动了5个单位,逻辑结构上实际就是移动了四行。还有就是区分int (*p)(int);这是一个指向函数的指针。

二维数组的地址问题
&a[0]是零行的首地址,实际上行的地址也只有一个,也无所谓0行的首地址吧?>>&a[0]值上, 是和a[0]相同的, 不过类型不一样. a[0]等效于int *型,实际上是指向一个元素. 而&a[0]是行指针, 指向一行.所以,a[0]+n和&a[0]+n是完全不同的.+n相当于元素位移了n个位置吗,所以代表...

有3个学生、每人5门课程,成绩如下,设计程序sy6-5.c求出每个学生的平均分...
要求分别定义函数以计算每个学生的平均分和每门课程的平均分,在参数传递中分别使用指向二维数组的行指针和列指针。score[3][5]={{100,60,70,81,52},{62,71,83,92,98},{90,70,50,60,40}};*\/ include<stdio.h> void stu_Avg_Score(float score[][5]){ float sum[3];int i,j;for...

讷河市19477655351: 在c++分别采用指针、引用两种形式的参数调用方式实现2个整形数的交换,并测试这两个同名函数,严禁采用全局变量,验证结果. -
比崔吉赛: 以下代码参考: void swap1(int *a,int * b)//指针 参数是两个指针变量 { int tmp; tmp=*a; //把a指向的值赋给tmp *a=*b; //把b指向的值赋给a指向的值 *b=tmp; //把tmp的值赋给b指向的值 //这样就达到了变换a,b指向的值的目的 } void swap2(int &a,int &b)//引用 参数是两个整型变量的引用 {//引用就是他本身的值,所以直接交换两个的值就行了. int tmp; tmp=a; a=b; b=tmp; }

讷河市19477655351: 定义整形变量a和b输入a和b的值使用指针papb分别指向a和b的c 程序 -
比崔吉赛: int a=0 ,b=0;//变量定义并初始化 int*pa=NULL,*pb=NULL;//指针变量定义并初始化 pa=&a;//使用&取地址运算符将变量a的地址赋予指针pa,使得指针pa指向a pb=&b;//使用&取地址运算符将变量b的地址赋予指针pb,使得指针pb指向b

讷河市19477655351: 应用指针编写一个函数,求整形数组的最大值、最小值. -
比崔吉赛: 比如你有一个函数指针int (*pvar)(int a,int b)这个函数指针就是指向参数为(int a,int b)的函数如果你想调用的话如下:(*pvar)(100,100)第二个括号填实参!卞苹焕儋泞狂旋余都笈题禹匐昊学杜冉仟峤虎隰

讷河市19477655351: 定义一个整型一维数组,并输入各元素值,分别用下标法和指针法输出各元素? -
比崔吉赛: #include<stdio.h>#define N 5 void main() { int i,a[N],*p; for ( i=0;i<N;i++ ) scanf("%d",&a[i]); for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\n"); for ( i=0,p=a;i<N;i++,p++ ) printf("%d ",*p); printf("\n"); }#include<iostream> using namespace std...

讷河市19477655351: 使用行指针和列指针输出二维数组元素 -
比崔吉赛: 首先说明一下什么是列指针.在c语言中,数组是不同于普通变量的,实际上c定义的数组是指向该数组第一个元素的指针.这是第一个概念,即数组名就是指针,所以可以直接当做指针来用,例如:对于一个数组a[],要取其第三个元素的值,...

讷河市19477655351: 一个C语言的问题,一个指针指向的数字字符串内容怎么给以个整形变量? -
比崔吉赛: 这个应该是要写一个算法的,可以这样思考,就是将字符串"80"转换为数字80,字符串“80”的存放格式'8'和 '0'分开存储的,根据他们的ASIIC码不一样而且是唯一的,将他们转换为数字. char *i = "80"; int j ; 为了通用,可以写一...

讷河市19477655351: 定义一个整形变量a,一个1级整形指针变量pa,一个2级整形指针变量ppa,一个3级 指针变量pppa,然后让pa指 -
比崔吉赛: int a; int *pa; int **ppa; int ***pppa; pa = &a; ppa = &pa; pppa = &ppa; *pa = 10; **ppa = 10; ***pppa = 10;

讷河市19477655351: 已知一个整形数组aint[10],程序执行后输入数据.要求定义2个指向整形变量的指针变量max、m -
比崔吉赛: #include int main(){ printf("请输入10个整数:\n"); int i,j; int a[10]; for(i=0;i scanf("%d",&a[i]); for(i=0;i for(j=0;j if(a[j] int t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } printf("排好序后的数组:\n"); for(i=0;i printf("%d ",a[i]); printf("\n"); /*以下是讲指...

讷河市19477655351: 设二维整型数组a[4][3],使用数组指针的方法,求每行元素的和. -
比崔吉赛: #include void main(){ int a[3][4],max,maxi=0,maxj=0,i,j; printf("请输入:\n"); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); max = a[0][0]; for(i=0;i for(j=0;j if(max max=a[i][j]; maxi=i;maxj=j; } printf("该二维数组中的最大元素的值为 %d ,其在第 %d 行 第 %d 列\n",max,maxi+1,maxj+1); 只是把楼上的修改了一下,之前的代码是有缺陷的,如果输入的都是负数呢,那你输出的结果就不对了.

讷河市19477655351: 建立一个包含10个元素的整形数组,使用一个指针指向该数组,通过指针修改该数组第13579个元素 -
比崔吉赛: #include <stdio.h> #include <stdlib.h>#define N 10 int ar[N] = {9,8,7,6,5,4,3,2,1,0};int main(int argc, char *argv[]) {int *p = &ar[0],i,max = ar[0],min=ar[0];for(i = 0; i < N; i++)printf(" %d ",*(p+i));printf("\n\n");for(i = 0; i < N; i++){if(*(p+i) > ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网