问题在这里:
min1中的循环次数不对,明明五个元素却循环8次,造成数组下标越界。
修改以后的min1:
int min1 (int arrA[], int num)
{
int i, j, temp, minA, flag = 0;
for (i=0; i<7; i++)
{
for (j=i+1; j<5; j++)
{
if (arrA[i] > arrA[j])
{
temp = arrA[i];
arrA[i] = arrA[j];
arrA[j] = temp;
}
}
}
for (i=0; i<5; i++)
{
if (arrA[i] > num)
{
minA = arrA[i];
flag = 1;
break;
}
}
if (flag == 1)
{
return minA;
}
else
{
return -1;
}
}
粗略的看了下,min1函数有问题,修改后的代码在下面,不过貌似先冒泡再查找的方法效率有点低了。
int min1 (int arrA[], int num)
{
int i, j, temp, minA, flag = 0;
for (i=0; i<4; i++)
{
for (j=i+1; j<5; j++)
{
if (arrA[i] > arrA[j])
{
temp = arrA[i];
arrA[i] = arrA[j];
arrA[j] = temp;
}
}
}
for (i=0; i<5; i++)
{
if (arrA[i] > num)
{
minA = arrA[i];
flag = 1;
break;
}
}
if (flag == 1)
{
return minA;
}
else
{
return -1;
}
}