我对如何使其正常工作感到有些困惑。我需要从用户那里获取数字(直到他们输入负数或者他们达到最大值)并且对于他们添加的每个数字,将其按升序插入到正确的索引中。现在,由于某种原因我的数组是无限的,即使我定义了一个10的常量。这是我的代码:
#include <stdio.h>
#define MAX_SIZE 10
int addToArray(int *arr, int, int );
int main(){
int array [MAX_SIZE];
int userNum = 0;
int arrSize = 0;
int add = 0;
printf("Please enter a series of positive integers!\n");
while(userNum >= 0 && arrSize< MAX_SIZE)
{
scanf("%d", &userNum);
add = addToArray(array, arrSize , userNum);
}
return 0;
}
int addToArray(int *arr, int size, int num)
{
int i, temp;
for(i=0; i<size; i++)
{
if(num > arr[i+1])
{
temp = num;
num = arr[i+1];
arr[i+1] = temp;
}
}
arr[size++];
return size;
}
edit1:是的我不确定addToArray函数是否有效,如果有人能帮助我让它工作那将是非常棒的!
edit2:输入整数后我无法对数组进行排序。当用户输入它们时,需要将其放入正确的索引
答案 0 :(得分:0)
根据我的理解重述这个问题。 您想要输入整数并按升序对它们进行排序。
如果是,那么您可以使用以下代码。我修改了你的代码,有一些错误。为简单起见,您可以将排序部件移动到另一个功能。
#include <stdio.h>
#define MAX_SIZE 10
int addToArray(int *arr, int, int );
int main(){
int array [MAX_SIZE];
int i=0,j=0,num=0;
printf("Please enter a series of positive integers!\n");
for(i=0;i<MAX_SIZE;i++)
{
scanf("%d", &array[i]);
}
for(i=0;i<MAX_SIZE;i++)
{
printf("Before sort:Array[%d]=%d\n",i,array[i]);
}
/*sorting array*/
for (i = 0; i < MAX_SIZE; ++i)
{
for (j = i + 1; j < MAX_SIZE; ++j)
{
if (array[i] > array[j])
{
num = array[i];
array[i] = array[j];
array[j] = num;
}
}
}
for(i=0;i<MAX_SIZE;i++)
{
printf("After sort:Array[%d]=%d\n",i,array[i]);
}
}
答案 1 :(得分:0)
像这样解决:
#include <stdio.h>
#define MAX_SIZE 10
int addToArray(int *arr, int, int );
int main(void){
int array[MAX_SIZE];
int userNum = 0;
int arrSize = 0;
printf("Please enter a series of positive integers!\n");
while(arrSize< MAX_SIZE){
if(1 != scanf("%d", &userNum) || userNum < 0)
break;//Invalid input is not used
arrSize = addToArray(array, arrSize , userNum);//update arrSize
}
#if DEBUG
//check print for debug
for(int i = 0; i < arrSize; ++i)
printf("%d ", array[i]);
puts("");
#endif
return 0;
}
int addToArray(int *arr, int size, int num){
int i, temp = num;
for(i = 0; i < size; i++){
if(temp < arr[i]){//insert point
num = temp;
temp = arr[i];//temp as new insert value
arr[i] = num;
}
}
arr[size++] = temp;
return size;
}