C 打印数组的最小值和最大值
我在查找数组中的最小值和最大值时遇到问题C 打印数组的最小值和最大值,c,arrays,max,min,C,Arrays,Max,Min,我在查找数组中的最小值和最大值时遇到问题 #include <stdio.h> int maximum(int array[], int n); int minimum(int array[], int n); int main() { int array[0]; int count, i; printf("Enter the size of the array: "); scanf("%d", count); printf("Ent
#include <stdio.h>
int maximum(int array[], int n);
int minimum(int array[], int n);
int main()
{
int array[0];
int count, i;
printf("Enter the size of the array: ");
scanf("%d", count);
printf("Enter the elements of the array:\n");
for (i = 0; i < count; i++)
{
scanf("%d", &array[i]);
}
printf("Maximum: %d", maximum(array, count));
printf("Minimum: %d", minimum(array, count));
return 0;
}
int maximum(int array[], int n)
{
int i;
int max = array[0];
for (i = 1; i < n; i++)
{
if (array[i] > max)
max = array[i];
}
return max;
}
int minimum(int array[], int n)
{
int i;
int min = array[0];
for (i = 1; i < n; i++)
{
if (array[i] < min)
min = array[i];
}
return min;
}
我可以输入一个数字,但它会完成程序。
是什么原因导致我的程序执行此操作,我如何修复它?您需要在此scanf调用中传递计数地址:
scanf("%d", &count);
本声明
int array[0];
是无效的,没有意义
还有这个电话
scanf("%d", count);
具有未定义的行为。你必须写作
scanf("%d", &count);
此外,由于传递数组的元素在函数中没有更改,因此第一个函数参数应该具有限定符const
请注意,通常用户可以将等于0的值作为第二个参数传递。在这种情况下,函数将具有未定义的行为
更新后的程序可以按以下方式进行
#include <stdio.h>
size_t maximum( const int array[], size_t n );
size_t minimum( const int array[], size_t n );
int main( void )
{
printf( "Enter the size of the array: " );
size_t count;
scanf( "%zu", &count );
int array[count];
printf("Enter the elements of the array:\n");
for ( size_t i = 0; i < count; i++)
{
scanf("%d", &array[i]);
}
printf("Maximum: %d\n", array[maximum( array, count )] );
printf("Minimum: %d\n", array[minimum( array, count )] );
return 0;
}
size_t maximum( const int array[], size_t n )
{
size_t max_i = 0;
;
for ( size_t i = 1; i < n; i++ )
{
if ( array[max_i] < array[i] ) max_i = i;
}
return max_i;
}
size_t minimum( const int array[], size_t n )
{
size_t min_i = 0;
;
for ( size_t i = 1; i < n; i++ )
{
if ( array[i] < array[min_i] ) min_i = i;
}
return min_i;
}
可能是因为scanf的使用不正确:它应该是
scanf(“%d”,&count)代码>int array[0]
定义一个能够容纳零值的数组!您不能“扫描到数组[某物]”,因为数组没有元素……因此,未初始化的count
恰好是@gooddeds。修复了它,但仍然会产生垃圾output@pmg那么我该如何解决这个问题,以便它将值放入数组中呢?谢谢!这是完美的,工作正常。谢谢你的所有帮助。@ WeeVeAN其实是一样的,当第一个迭代器等于最后一个迭代器时,C++中的算法中返回第一个迭代器。@ WeeVeAN函数将返回0,数组(0)将产生-1。有什么问题吗?@WeatherVane似乎你没有仔细查看代码嗯,好的,你在跟踪索引,而不是值,但是没有必要改变它。
#include <stdio.h>
size_t maximum( const int array[], size_t n );
size_t minimum( const int array[], size_t n );
int main( void )
{
printf( "Enter the size of the array: " );
size_t count;
scanf( "%zu", &count );
int array[count];
printf("Enter the elements of the array:\n");
for ( size_t i = 0; i < count; i++)
{
scanf("%d", &array[i]);
}
printf("Maximum: %d\n", array[maximum( array, count )] );
printf("Minimum: %d\n", array[minimum( array, count )] );
return 0;
}
size_t maximum( const int array[], size_t n )
{
size_t max_i = 0;
;
for ( size_t i = 1; i < n; i++ )
{
if ( array[max_i] < array[i] ) max_i = i;
}
return max_i;
}
size_t minimum( const int array[], size_t n )
{
size_t min_i = 0;
;
for ( size_t i = 1; i < n; i++ )
{
if ( array[i] < array[min_i] ) min_i = i;
}
return min_i;
}
Enter the size of the array: 10
Enter the elements of the array: 1 2 3 4 5 6 7 8 9
Maximum: 9
Minimum: 0