问题描述
#include <stdio.h>
void ArrayReverese(int a[],int Start,int End);
void printArray(int a[],int Size);
int main()
{
int a[20],i,Size;
int max_size = 20;
printf("\nPlease Enter the size of an array: ");
scanf_s("%d",&Size);
while (Size <= 20)
{
//Inserting elements into the Declared Array
for (i = 0; i < Size; i++)
{
scanf_s("%d",&a[i]);
}
ArrayReverese(a,Size - 1); //Array Reverse
printf("Result of an Reverse array is: \n");
printArray(a,Size); //Printing Array
return 0;
}
printf("Max size of array is 20");
}
/* Function to Reverse the Given Array */
void ArrayReverese(int a[],int End)
{
int Temp;
while (Start < End)
{
Temp = a[Start];
a[Start] = a[End];
a[End] = Temp;
Start++;
End--;
}
}
/* Function to print the Array Output */
void printArray(int a[],int Size)
{
int i;
for (i = 0; i < Size; i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
我正在编写代码来打印反向数组的输出。数组的最大大小只能是20。我放了一个max_size = 20的while循环。
这是不让数组大于 20 的最好方法吗?
a[20]
有什么帮助?是否符合最大尺寸?
解决方法
这是不让数组大于 20 的最好方法吗?
我相信最好的选择是确保输入的大小在所需的间隔内。你需要类似的东西(评论中的解释):
int main(){
int a[20],Size = 0;
int max_size = 20;
printf("\nPlease Enter the size of an array: ");
// loop keeps asking for a size if it's not in the interval
do
{
int ret = scanf_s("%d",&Size);
if(ret != 1){ // if the input is not parsed correctly...
printf("Bad input. ");
int c;
while((c = getchar()) != '\n' && c != EOF ) {} // clear the buffer...
}
// size must be more than 0 and less than 20,if not ask again
} while (Size >= max_size && Size < 1 && printf("Max size of array is 20,try again: "));
// Size is guaranteed to be [1,20[ no further checks needed here
for (int i = 0; i < Size; i++)
{
scanf_s("%d",&a[i]); // check the return of this scanf also
}
ArrayReverese(a,Size - 1); //Array Reverse
printf("Result of an Reverse array is: \n");
printArray(a,Size); //Printing Array
}
a[20]
有什么帮助?它可以达到最大尺寸吗?
一个数组必须有一个大小,在这种情况下是 20,这是它的最大大小,但这并不能阻止它被溢出,程序员可以防止这种情况发生,如代码所示