接收整型数组为函数参数

bisal(Chen Liu)
博客专家认证
2011-09-02 11:39:23
要写一个函数比较七个整数中的最大值

main() {
...
int a[7] = {1, 3, 2, 10, 11, 13, 9};
printf("[%d]\n", getMax(a[7], 7));
...
}

int getMax(int a[], int b) {
int i, value;
i = 0;
value = a[0];
for (i = 0; i < b - 1; i++) {
printf("a[%d]=[%s] a[%d]=[%s]\n", a[i], a[i+1]);
if (a[i] < a[i+1]) {
value = a[i+1];
}
}
return value;
}

为啥不行呢?
...全文
95 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianmo2010 2011-09-02
  • 打赏
  • 举报
回复
这个才是正确的

#include "stdio.h"
int getMax(int a[], int b);
void main() {
int a[7] = {1, 3, 22, 10, 211, 13, 19};
printf("[%d]\n", getMax(a, 7));

}

int getMax(int a[], int b) {
int i, value;
value = a[0];
for (i = 1; i < b ; i++) {
if (a[i] > value) {
value = a[i];
}
}
return value;
}
tianmo2010 2011-09-02
  • 打赏
  • 举报
回复
另外在main函数之前声明一下:int getMax(int a[], int b);
tianmo2010 2011-09-02
  • 打赏
  • 举报
回复
printf("[%d]\n", getMax(a[7], 7));

把红色的改为a,这样才是传递数组,你的a[7]越界,不正确。
bisal(Chen Liu) 2011-09-02
  • 打赏
  • 举报
回复
找到了还有一点导致core,printf("a[%d]=[%s] a[%d]=[%s]\n", a[i], a[i+1]);
应该改为:
printf("a[%d]=[%d] a[%d]=[%d]\n", i, a[i], i+1, a[i+1])

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧