
void findMax(int a[], int size, int max)
{ max=a[0];
for (int i=1;i<size;i++)
if (max<a[i])
max=a[i];
}
在 C++ 中,可以使用函数返回二维数组的最大元素及其所在行、列号。下面是一个示例代码:
```cpp
#include <iostream>
using namespace std;
const int ROWS = 3;
const int COLS = 4;
void findMax(int arr[][COLS], int& maxVal, int& row, int& col) {
maxVal = arr[0][0];
row = 0;
col = 0;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (arr[i][j] > maxVal) {
maxVal = arr[i][j];
row = i;
col = j;
}
}
}
}
int main() {
int arr[ROWS][COLS] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
int maxVal, row, col;
findMax(arr, maxVal, row, col);
cout << "数组的最大元素为:" << maxVal << endl;
cout << "它所在的行号为:" << row + 1 << endl; // 行号从 1 开始
cout << "它所在的列号为:" << col + 1 << endl; // 列号从 1 开始
return 0;
}
```
在上述代码中,我们定义了一个常量 `ROWS` 和 `COLS`,分别表示二维数组的行数和列数。然后,我们实现了一个名为 `findMax()` 的函数,用于查找并返回二维数组的最大元素及其所在行、列号。在函数内部,我们首先将最大元素初始化为数组的第一个元素 `arr[0][0]`,然后遍历整个数组,每次比较当前元素和最大元素的大小,并更新最大元素及其所在行、列号。最后,在 `main()` 函数中调用 `findMax()` 函数,并输出计算结果到控制台中。
需要注意的是,在实际应用中,还需要考虑越界异常等问题,以确保程序的正确性和稳定性。
问题一;
所以m=findmax(a,9),可以这么理解吗?按照我这样的理解,此时m=a[12,87,5,75,21,49,97,19,39]。_______这么理解可以
问题二;
首先int findmax(int a[], int n)这是个回调函数
运行到m = findmax(a, n - 1);调用函数本身当然的从头开始运行
输出:
调用函数前输出结果:
nums[1]=0
nums[2]=0
nums[3]=0
nums[4]=0
value = 0
因为循环变量初值是1,所以nums[0]不会输出
findMax(nums,value); //调用findMax,vals指向nums开始元素,m=0
i=1;[i=1],i<MAXELS成立,开始循环,vals[i]=1,nums[0,1,0,0,0],输出:vals[1]=1
i++;[i=2],i<MAXELS成立,继续循环,vals[i]=1,nums[0,1,1,0,0],输出:vals[2]=1
i++;[i=3],i<5成立,继续循环,vals[i]=1,nums[0,1,1,1,0],输出:vals[3]=1
i++;[i=4],i<5成立,继续循环,vals[i]=1,nums[0,1,1,1,1],输出:vals[4]=1
i++;[i=5],i<5不成立,结束循环,输出:m=1
函数返回,m被舍弃,输出:
调用函数后输出结果:
nums[1]=1
nums[2]=1
nums[3]=1
nums[4]=1
value = 0
由于子程序中没有计算过m,所以m值一直是初始的1,这个m是函数自己临时定义的变量,用来接收调用者传进来的参数,main函数将vale的值0传递给m,计算完后,函数返回,m被舍弃,不会影响value的值(作为参数,是取value的值来用一下,然后就没有value的事了)
如果想将m的值返回,那么有两种办法:
函数写成:void findMax(int vals[],int m),然后函数中用到m的地方都改成m,调用时findMax(nums,&value);
函数写成:int findMax(int vals[],int m),函数最后写return m;调用时value=findMax(nums,value);
如果子程序不需要value作为m的初始值,则可省略第2个参数:int findMax(int vals[]),调用:value=findMax(nums);
一维数组中 数组名就是数组的第一个元素的地址
findMax(nums);将nums数组首元素地址传递给形参int vals[],相当于此时形参和实参指向同一段内存,vals[0]相当于nums[0]
1 在 void Readscore(int score[]) 函数中
do{
}while(score[i]>=0&&i<10);有不对的地方,改为while(i>=0&&i<10)是正确的循环。
2在 void Findmax(int score[]) 函数中, 假如第一个数最小或者最大,你都找不对它的 i 值
int i,j,m,n,max,min,temp;
max=score[0];
min=score[0];
m=0;/把第一个数的地址先赋予m/
n=0;/把第一个数的地址先赋予n/
for(i=1;i<N;i++)
{
if(score[i]>max)
{
m=i;
}
}
for(i=1;i<N;i++)
{
if(score[i]<min)
{
n=i;
}
}
这样再加上你其他的函数,应该就可以了。
#include "stdafxh"
#include <iostream>//h
using namespace std;//
int findthemax(int pa,int ln,int &spt){
spt=0;
int tmp=pa[spt];
for(int i=0;i<ln;i++){
if(tmp<pa[i]){
tmp=pa[i];
spt=i;
}
}
return pa+spt;
}
void main(void){
int n,pa,subscript;
cout << "Enter the size of the array:";
cin >> n;
if(!(pa=new int[n])){
cout << "Application memory failure\n";
return;
}
cout << "Enter " << n << " integers(with ' '):\n";
for(int i=0;i<n;cin >> pa[i++]);
cout << "The address is " << findthemax(pa,n,subscript) << endl;
cout << "The max is " << (pa+subscript) << endl;
delete [n]pa;
}
以上就是关于. 设计一个子程序findMax(a,size,max),功能是找出数组a中最大的数,其中a是一全部的内容,包括:. 设计一个子程序findMax(a,size,max),功能是找出数组a中最大的数,其中a是一、c++返回二维数组的最大元素和它所在的行、列号、C语言程序,这个程序是如何运行的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)