gpt4 book ai didi

代码在执行时不显示任何终止输出

转载 作者:行者123 更新时间:2023-11-30 14:35:16 25 4
gpt4 key购买 nike

这是在数组中插入元素的代码,不显示任何输出,但在执行时强制终止。

 #include<stdio.h>
#include<stdlib.h>

struct array
{
int a[10];
int size;
int length;
};

void display(struct array arr)
{
int i;
printf("\nthe elemenets are\n");
for(i=0;i<arr.length;i++)
{
printf("%d ",arr.a[i]);
}
}

void insert(struct array *arr,int index,int value)
{
int i;

if(index>=0&&index<=arr->length)
{
for(i=arr->length;i>index;i++)
arr->a[i]=arr->a[i-1];
arr->a[index]=value;
arr->length++;
}
}

int main()
{
struct array arr1={{1,2,3,4,5},10,5};
insert(&arr1,2,45);
display(arr1);
return 0;
}

我认为显示功能可能有问题,但无法解决。

最佳答案

此循环无效

if(index>=0&&index<=arr->length)
{
for(i=arr->length;i>index;i++)
arr->a[i]=arr->a[i-1];
arr->a[index]=value;
arr->length++;
}

因为至少变量 i 是递增的而不是递减的。以及if语句中的条件

if(index>=0&&index<=arr->length)
^^^^^^^^^^^^^^^^^^

无效。

我认为你的意思是以下内容

if ( index>=0 && index < arr->length )
{
for ( i = arr->length; i-1 >index; i-- )
arr->a[i-1] = arr->a[i-2];

arr->a[index] = value;
arr->length++;
}

关于代码在执行时不显示任何终止输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58610981/

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