. 设计一个子程序findMax(a,size,max),功能是找出数组a中最大的数,其中a是一

. 设计一个子程序findMax(a,size,max),功能是找出数组a中最大的数,其中a是一,第1张

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语言程序,这个程序是如何运行的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9612567.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存