7777777-4396 发表于 2020-6-28 10:53:44

编写函数fun

请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。

注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>

#define M 4

int fun(int a[])

{







}

int main()

{

int arr = {5, 8, 3, 45, 76, -4, 12, 82};

printf("max = %d\n", fun(arr));

return 0;

}

jhanker 发表于 2020-6-28 11:05:31

#include <stdio.h>

#define M 4

int fun(int a[])

{

int i=0, *ptemp=(int *)a,temp=a;
for (i=0;i<2*M;i++)
{
if(temp<*ptemp) temp=*ptemp;
ptemp++;
}


return temp;
}

int main()

{

int arr = {5, 8, 3, 45, 76, -4, 12, 82};

printf("max = %d\n", fun(arr));

return 0;

}

永恒的蓝色梦想 发表于 2020-6-28 11:05:38

本帖最后由 永恒的蓝色梦想 于 2020-6-28 12:17 编辑

#include <stdio.h>

#define M 4

int fun(int a[])

{
    int* ptr = *a, max = *ptr++;

    for (int count = M << 1; --count; ++ptr) {
      if (*ptr > max) {
            max = *ptr;
      }
    }

    return max;
}

int main()

{

    int arr = { 5, 8, 3, 45, 76, -4, 12, 82 };

    printf("max = %d\n", fun(arr));

    return 0;

}

jhanker 发表于 2020-6-28 11:30:00

永恒的蓝色梦想 发表于 2020-6-28 11:05


感觉你代码有点小问题
#include <stdio.h>

#define M 4

int fun(int a[])

{
    int* ptr = *a, max = *ptr++;

    for (int count = (M << 1); --count; ++ptr) {//这里左移一位 ,由于 count到0不运行 前面不要减一
      if (*ptr > max) {
            max = *ptr;
      }
    }

    return max;
}

int main()

{

    int arr = { 5, 8, 3, 45, 76, -4, 12, 82 };

    printf("max = %d\n", fun(arr));

    return 0;

}

永恒的蓝色梦想 发表于 2020-6-28 12:00:11

jhanker 发表于 2020-6-28 11:30
感觉你代码有点小问题

哦……失误
把两个减少循环次数的方法用在一起了……

jhanker 发表于 2020-6-28 12:16:30

永恒的蓝色梦想 发表于 2020-6-28 11:05


M << 2 也有问题应该是M << 1 吧

永恒的蓝色梦想 发表于 2020-6-28 12:18:01

jhanker 发表于 2020-6-28 12:16
M

今天脑子坏了……
页: [1]
查看完整版本: 编写函数fun