以下程序有什么问题?为什么它不返回我尝试实现的最小元素。请找出错误。请告诉我有关逻辑和语法的错误。
#include<stdio.h>
int ArrayMinimum(int a[], size_t size);
#define SIZE 9
int main()
{
int a[SIZE];
for (int i = 0; i < SIZE; i++)
{
a[i] = 1 + rand() % 99;
printf("%d ", a[i]);
}
printf("\n\nThe smallest number of the array is %d \n", ArrayMinimum(a, SIZE));
}
int ArrayMinimum(int a[], size_t size)
{
if (size == 1)
{
return a[0];
}
for (int i = 0; i <= size ; i++)
{
if (a[i] > a[i + 1])
{
int temp = a[i + 1];
a[i + 1] = a[i];
a[i] = temp;
}
}
int b[] = { 0 };
for (int y = 0; y < size; y++)
{
b[y] = a[y];
}
ArrayMinimum(b, size -1 );
}
答案 0 :(得分:1)
您的函数已定义为返回int
;如果且 {em> size == 1
,它将返回一个整数值。
如果size具有另一个值,它将根本不返回任何东西!
第二条返回声明在哪里?
还有其他一些实质性问题,例如数组b
的大小定义不正确,并且您在那里覆盖了内存。
答案 1 :(得分:0)
您没有将del df1['Name_nocomma']
del df2_out['Name_x']
del df2_out['Namy_y']
df2_out.rename({'Age_x': 'Age'}, axis=1, inplace=True)
df2_out
#outputs:
Age Name
0 24 Brad Mans
1 32 Tony Jar
2 40 Sid Jones
3 65 Fred Smith
4 50 Alex Bot
放在文件的顶部,因此,假定您调用的函数接受未知数量的参数并返回int类型的值。这会导致不确定的行为。
Implicit declaration of functions srand, rand and system
同样,您的ArrayMinimum()是错误的.SIZE常数始终等于9,并且在此方法中传递并由size变量使用,因此它将永远无法满足此方法的'if'条件。您实现的BubbleSort机制也是错误的。您的代码只交换一次值。
使用这种方法查找数组的最小值:-
#include <stdlib.h>
答案 2 :(得分:0)
您的ArrayMinimum逻辑正在尝试对数组进行排序,并且存在逻辑问题,如果size> 1,则没有定义返回。
如果要返回最小值,则可以使用以下更简单的逻辑。
int ArrayMinimum(int a[], size_t size)
{
int min = a[0];
if (size == 1)
{
return a[0];
}
for (int i = 1; i < size ; i++)
{
if (a[i] < min)
{
min = a[i];
}
}
return min;
}