【发布时间】:2022-01-16 14:32:17
【问题描述】:
我正在尝试创建一个函数,该函数将要求用户输入一个数字以确定数组的大小,然后将数字输入到数组中。然后我需要打印数组并交换其中的最小和最大数字。这是C语言的
#include <stdio.h>
void read_array();
void display_array();
void read_array(int arr[])
{
int Size;
printf("Enter the desired size of the array: ");
scanf("%d", &Size);
for(int i = 0; i < Size; i++)
{
printf("\nEnter a number for position %d:", i);
scanf("%d", &arr[i]);
getchar();
}
}
int main()
{
int size;
int arr[size];
read_array(arr[size]);
return 0;
}
【问题讨论】:
-
当你在C中使用标签时,已经很清楚你在使用c,不需要用c语言编写这段代码,也不需要附加部分display_array()。
-
int size; int arr[size];无效 - 您正在使用未定义的长度定义可变长度数组。要么选择您的程序可以处理的最大数组大小,要么动态分配数组,或者在定义数组之前读取大小。 -
数组大小在创建时是固定的,您使用未初始化的可变大小创建它。代码
read_array(arr[size]);也应该有编译错误,检查你的编译器消息。 -
您必须 始终检查
scanf返回的值。在这种情况下,您可以使用for(int i = 0; i < Size && scanf("%d", arr + i) == 1; i += 1) { ... }。 (假设您修复了arr的初始化,如其他 cmets 中所述)。不需要getchar;%d转换说明符将使用前导空格。