gpt4 book ai didi

c - 获取用户输入,将其添加到数组中正确的索引处(升序)

转载 作者:行者123 更新时间:2023-11-30 16:57:24 29 4
gpt4 key购买 nike

我对如何让它正常工作有点困惑。我需要从用户那里获取数字(直到他们输入负数或达到最大大小),并且对于他们添加的每个数字,将其按升序插入到正确的索引中。现在,由于某种原因,即使我定义了常量 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:输入整数后无法对数组进行排序。当用户输入它们时,它们需要放入正确的索引中

最佳答案

像这样修复:

#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;
}

关于c - 获取用户输入,将其添加到数组中正确的索引处(升序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39550089/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com