我试图在数组中找到最大数字。我创建了一个函数,我使用以下代码:
int maxValue( int myArray [], int size)
{
int i, maxValue;
maxValue=myArray[0];
//find the largest no
for (i=0;i)
{
if (myArray[i]>maxValue)
maxValue=myArray[i];
}
return maxValue;
}
但是我在)
令牌之前收到语法错误。我做错了什么,我甚至做得对吗?任何帮助将不胜感激。
答案 0 :(得分:7)
您必须将包含至少一个成员的有效数组传递给此函数:
#include<assert.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int
maxValue(int myArray[], size_t size) {
/* enforce the contract */
assert(myArray && size);
size_t i;
int maxValue = myArray[0];
for (i = 1; i < size; ++i) {
if ( myArray[i] > maxValue ) {
maxValue = myArray[i];
}
}
return maxValue;
}
int
main(void) {
int i;
int x[] = {1, 2, 3, 4, 5};
int *y = malloc(10 * sizeof(*y));
srand(time(NULL));
for (i = 0; i < 10; ++i) {
y[i] = rand();
}
printf("Max of x is %d\n", maxValue(x, sizeof(x)/sizeof(x[0])));
printf("Max of y is %d\n", maxValue(y, 10));
return 0;
}
根据定义,数组的大小不能为负数。 C中数组大小的适当变量是size_t
,使用它。
您的for
循环可以从数组的第二个元素开始,因为您已经使用第一个元素初始化了maxValue
。
答案 1 :(得分:5)
for循环有三个部分:
for (initializer; should-continue; next-step)
for循环等同于:
initializer;
while (should-continue)
{
/* body of the for */
next-step;
}
所以正确的代码是:
for (i = 0; i < size; ++i)
答案 2 :(得分:1)
通常应该是
for (i=0; i<size; i++)
答案 3 :(得分:1)
包括:
void main()
{
int a[50], size, v, bigv;
printf("\nEnter %d elements in to the array: ");
for (v=0; v<10; v++)
scanf("%d", &a[v]);
bigv = a[0];
for (v=1; v<10; v++)
{
if(bigv < a[v])
bigv = a[v];
}
printf("\nBiggest: %d", bigv);
getch();
}