鱼C论坛

 找回密码
 立即注册
查看: 822|回复: 4

[已解决]函数调用的问题

[复制链接]
发表于 2020-4-12 00:09:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
报错:第19行,[Error] cannot convert 'int (*)[4]' to 'int*' for argument '1' to 'int sum_all(int*)'

  1. 题目要求:编写一个函数求4*4二维数组周边元素的和
  2. */
  3. /*
  4. 分析:
  5. 要想获得周围一圈的数值和,可以通过把所有数组加总后减去中间的四个数字来间接解决;
  6. */

  7. # include <iostream>
  8. using namespace std;

  9. // 声明
  10. int sum_all(int arr[]);

  11. // 主函数部分
  12. int main()
  13. {
  14.         int arr[4][4] = {{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4}};
  15.         // 调用求和函数
  16.         cout<<"求和结果为:"<<sum_all(arr)<<endl;
  17. }

  18. // 求和函数
  19. int sum_all(int arr[4][4])
  20. {
  21.         int sum;
  22.         int total = 0;
  23.         int circle = 0;
  24.         for (int i = 0; i < 4; i++)
  25.         {
  26.                 for (int j = 0; j < 4; j++)
  27.                 {
  28.                         total += arr[i][j];
  29.                 }
  30.         }
  31.         for (int i = 1; i <= 2; i++)
  32.         {
  33.                 for (int j = 1; j <= 2; j++)
  34.                 {
  35.                         circle += arr[i][j];
  36.                 }
  37.         }
  38.        
  39.         sum = total - circle;
  40.        
  41.         return sum;
  42. }
复制代码
最佳答案
2020-4-12 00:28:28

/*
分析:
要想获得周围一圈的数值和,可以通过把所有数组加总后减去中间的四个数字来间接解决;
*/

# include <iostream>
using namespace std;

// 声明
int sum_all(int (*arr)[4]);//函数不能传多维数组,应该传多维数组的指针

// 主函数部分
int main()
{
    int arr[4][4] = { {1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4} };
    // 调用求和函数
    cout << "求和结果为:" << sum_all(arr) << endl;
}

// 求和函数
int sum_all(int (*arr)[4])//函数不能传多维数组,应该传多维数组的指针
{
    int sum;
    int total = 0;
    int circle = 0;
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            total += arr[i][j];
        }
    }
    for (int i = 1; i <= 2; i++)
    {
        for (int j = 1; j <= 2; j++)
        {
            circle += arr[i][j];
        }
    }

    sum = total - circle;

    return sum;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-12 00:28:28 | 显示全部楼层    本楼为最佳答案   

/*
分析:
要想获得周围一圈的数值和,可以通过把所有数组加总后减去中间的四个数字来间接解决;
*/

# include <iostream>
using namespace std;

// 声明
int sum_all(int (*arr)[4]);//函数不能传多维数组,应该传多维数组的指针

// 主函数部分
int main()
{
    int arr[4][4] = { {1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4} };
    // 调用求和函数
    cout << "求和结果为:" << sum_all(arr) << endl;
}

// 求和函数
int sum_all(int (*arr)[4])//函数不能传多维数组,应该传多维数组的指针
{
    int sum;
    int total = 0;
    int circle = 0;
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            total += arr[i][j];
        }
    }
    for (int i = 1; i <= 2; i++)
    {
        for (int j = 1; j <= 2; j++)
        {
            circle += arr[i][j];
        }
    }

    sum = total - circle;

    return sum;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-12 00:37:34 | 显示全部楼层
// 声明
int sum_all(int arr[]);
形参这儿不对,这个写法是一维数组了,你要传入的是二维数组,应该这样写
// 声明
int sum_all(int arr[][4]);
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-12 00:41:08 | 显示全部楼层
非常感谢深夜回复,祝您生活愉快!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-12 00:41:39 | 显示全部楼层
chxchxkkk 发表于 2020-4-12 00:37
// 声明
int sum_all(int arr[]);
形参这儿不对,这个写法是一维数组了,你要传入的是二维数组,应该这 ...

谢谢,看来这一块得去钻研一下了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 22:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表