我正在处理以下作业问题:
构建一个程序,使用一维数组来存储用户输入的 10 个数字。输入数字后,用户应该会看到一个菜单,其中包含两个选项,可以按升序或降序对 10 个数字进行排序和打印。
我遇到了一些令人费解的问题。
我的代码发布在下面。我已经设法接受数组元素的用户输入,并且在这里找到了用于对整数数组进行排序的代码:http ://www.java-samples.com/showtutorial.php?tutorialid=1577
该教程中的代码工作得很好,但是只要我为数组中的用户指定元素添加代码而不是自己初始化数组,我就会遇到分段错误:运行程序时出现核心转储错误。它会一直工作,直到它遇到排序程序,然后崩溃。在 gcc 中编译时没有错误。
#include<stdio.h>
#include<stdbool.h>
main()
{
int temporaryStorage;
int counter;
int numArray[] = {0};
int i = 0;
bool sortExists = true;
for (i = 0; i < 10; ++i)
{
fprintf(stdout, "Enter element[%d]->", i);
fscanf(stdin, "%d", &numArray[i]);
}
printf("Array Before Sorting\n");
for(counter = 0; counter < 10; ++counter){
printf("%d ", numArray[counter]);
}
while (sortExists == true)
{
sortExists = false;
for (counter = 0; counter < 9; ++counter)
{
if (numArray[counter] > numArray[counter + 1])
{
temporaryStorage = numArray[counter];
numArray[counter] = numArray[counter + 1];
numArray[counter + 1] = temporaryStorage;
sortExists = true;
}
}
}
printf("\n\nArray After Sorting – Ascending Order\n");
for(counter = 0; counter < 10; ++counter){
printf("%d ", numArray[counter]);
}
}