【问题标题】:code does't showing any output terminating while execution time代码在执行时不显示任何输出终止
【发布时间】:2019-10-29 15:50:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: c loops for-loop struct insert


    【解决方案1】:

    这个循环无效

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 2021-02-24
      • 2021-06-27
      • 2021-09-04
      • 2018-09-30
      • 1970-01-01
      • 2022-11-10
      相关资源
      最近更新 更多