1160 矩阵的最大值(指针专题)

题目来源:
https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1160
Description

找出一个2×3的整数矩阵中的最大值及其行下标和列下标,要求调用函数FindMax(int p[][3], int m, int n, int *pRow, int *pCol)实现,行下标和列下标在形参中以指针的形式返回。
void FindMax(int p[][3], int m, int n, int *pRow, int *pCol){
//在m*n矩阵p中查找最大值,将其行下标存入pRow所指内存单元,将其列下标存入pCol所指内存单元
}

Input
输入2行3列整数,共6个。
Output
输出3个整数,矩阵中的最大值及其行下标和列下标,数据之间用空格隔开。测试数据保证最大值唯一。

Sample Input
100 3 6
0 87 65
Sample Output
100 0 0
题意描述:
输入2*3的整数矩阵
调用FindMax()函数计算并输出最大值,修改h和l的值为最大值的行列下标值并输出
解题思路:
调用FindMax()函数,遍历矩阵找到最大值并利用指针修改h和l的值
程序代码:

 1 #include<stdio.h>
 2 int FindMax(int a[][3],int *pRow, int *pCol);
 3 int main()
 4 {
 5     int i,j,a[2][3],h,l,max;
 6     for(i=0;i<2;i++)
 7     {
 8         for(j=0;j<3;j++)
 9         {
10             scanf("%d",&a[i][j]);
11         }
12     }
13     max=FindMax(a,&h,&l);
14     printf("%d %d %d\n",max,h,l);
15     return 0;
16 }
17 int FindMax(int a[][3],int *pRow, int *pCol)
18 {
19     int max=0,i,j;
20     for(i=0;i<2;i++)
21     {
22         for(j=0;j<3;j++)
23         {
24             if(a[i][j]>max)
25             {
26                 max=a[i][j];
27                 *pRow=i;
28                 *pCol=j;
29             }
30         }
31     }
32     return max;
33 }

易错分析:
注意当修改指针参数时将函数返回值单独赋给一个变量

时间: 2024-12-19 21:28:08

1160 矩阵的最大值(指针专题)的相关文章

c指针-专题

六---指针 内存和地址怎么理解呢? 机器中有一些位置,每一个位置被称为[字节]/byte,许多现代机器上,每个字节包含8个位.更大内存单位[字],通常包含2个或4个字节组成. 一个字包含4个字节,它的地址是什么? 他仍然只有一个地址,是最左边还是最右边的那个字节的位置,取决于机器. 机器事实-关于整型的起始位置: 在要求边界对齐(boundaryalignment)的机器上,整型存储的起始位置只能是某些特定的字节,通常是2或4的倍数. 变量名和地址关系? 所有高级语言的特性之一,就是通过名字而

1159 最大的两个数(指针专题)

题目来源:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1159Description 求n个整数中的最大的两个元素.要求定义一个函数LargestTow(),求数组a的最大的两个元素,分别存入形参指针pfirst和psecond所指存储单元,函数原型如下: void LargestTow(int a[],int n,int *pfirst,int *psecond) { /*数组a有n个元素,将数组中的最大值存入形参指针pfirst所指内存单

3月31号周二课堂练习:结对开发----求二维数组组成的矩阵中子矩阵的最大值二

一.题目要求 1.1输入一个二维整形数组,数组里有正数也有负数. 1.2二维数组首尾相接,象个一条首尾相接带子一样. 1.3数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 1.4求所有子数组的和的最大值.要求时间复杂度为O(n). 二.结对要求 2.1两人结对完成编程任务. 2.2一人主要负责程序分析,代码编程. 2.3一人负责代码复审和代码测试计划. 2.4发表一篇博客文章讲述两人合作中的过程.体会以及如何解决冲突(附结对开发的工作照). 三.设计过程 上次已经算过二维数组中

指针专题讲座(王保明)

铁律1:指针是一种数据类型 1)指针也是一种变量,占有内存空间,用来保存内存地址 测试指针变量占有内存空间大小 2)*p操作内存 在指针声明时,*号表示所声明的变量为指针 在指针使用时,*号表示 操作 指针所指向的内存空间中的值 *p相当于通过地址(p变量的值)找到一块内存:然后操作内存 *p放在等号的左边赋值(给内存赋值) *p放在等号的右边取值(从内存获取值) 3)指针变量和它指向的内存块是两个不同的概念 //含义1 给p赋值p=0x1111; 只会改变指针变量值,不会改变所指的内容:p =

1161 字符串长度(指针专题)

题目来源:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1161Description编写一函数len,求一个字符串的长度,注意该长度不计空格.要求用字符指针实现.在主函数中输入字符串,调用该len函数后输出其长度. int len(char *sp) { //实现sp所指串的长度,不计空格. } Input输入一个字符串,以回车结束,长度不超过100.Output输出一个整数,单独占一行.Sample InputWhat day is tod

指针专题4-指针作为函数返回值(指针函数)

C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数strlong(),用来返回两个字符串中较长的一个. /* 返回两个字符串中最长的一个 */ char *strlong(char *str1, char *str2) { if(strlen(str1)>=strlen(str2)){ return str1; }else{ return str2; } } void main(){ char str1[30],str2[30],*str; gets

zzuli oj 1167逆转数(指针专题)

Description 任意给你一个整数,这个数可能很大(最长不超过100位),你能求出它的逆转数吗?  逆转数定义如下:  1.一个末尾没有0的整数,它的逆转数就是各位数字逆序输出:  2.一个负数的逆转数仍是负数:  3.一个末尾有0的整数,它的逆转数如同下例:  reverse (1200) = 2100  reverse (-56) = -65  要求定义并使用如下函数:  void reverse(char *str)  {  //函数求出str的逆转数并存入str.  } Input

ZZNU 1163: 在线判题(指针专题)

题目描述 Ignatius is building an Online Judge, now he has worked out all the problems except the Judge System. The system has to read data from correct output file and user's result file, then the system compare the two files. If the two files are absolu

矩阵连乘 和表达式加括号求最大值

矩阵连乘核心代码1 for(int i=0;i<=n;i++) 2 m[i][j]=0; 3 for(r=1;r<n;r++) 4 for(i=1;i<=n-r;i++) 5 { 6 j=i+r; 7 m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j]; 8 s[i][j]=i; 9 for(k=i+1;k<j;k++) 10 { 11 int t=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j]; 12 if(t<m[i][j]) 13