如何从数组中删除元素并打印其余元素?

时间:2016-01-05 11:15:58

标签: c arrays

我想在从数组中删除数字42之后打印数组。这是运行正常的代码,但我无法确定如何删除这一个元素并打印其余元素。

#include <stdio.h>
int main()
    {
        int i,a;
        int arr[]={1,2,42,88,99};
        a=sizeof(arr);
        for(i=0;i<=a;i++)
        {
            printf("%d\n", arr[i]);
            if(arr[i]==42)
                break;
        }
        return 0;
    }
    `

5 个答案:

答案 0 :(得分:4)

在编写代码之前,您需要知道您需要什么以及如何编码。

应修正以下事项:

a=sizeof(arr);

获取所需数组的长度:

a=sizeof arr / sizeof arr[0];

接下来你有for

for(i=0;i<=a;i++){}

此处您需要检查是否i < a而不是检查i是否与a i == a相同,请将其更改为:

or(i=0;i<a;i++){}

在这里:

if(arr[i]==42)
    break;

你不需要停止循环,你真正需要的是跳过这个数字,这意味着你需要continue而不是break

if(arr[i]==42){
    continue;
}

最后一件事,在printf("%d\n", arr[i]);之后移动if

现在把所有这些都放在一起:

#include <stdio.h>

int main(void){
    int i,a;
    int arr[]={1,2,42,88,99};
    a=sizeof arr / sizeof arr[0];

    for(i=0;i<a;i++){
        if(arr[i]==42){
            continue;
        }
        printf("%d\n", arr[i]);
    }
        return 0;
}

输出:

1
2
88
99

答案 1 :(得分:1)

首先:

a = sizeof(arr) / sizeof(int);

然后是i < a,而不是<=

最后,您需要continue而不是break

你需要把if 放在 printf之前。

答案 2 :(得分:0)

你只需要跳过42继续

 if(arr[i]==42)
     continue;
 }
 printf("%d\n", arr[i]);

答案 3 :(得分:0)

在这里编写代码,这将删除给定的数组元素。代码是:

    //delete elements
countDel=0;
for(i=0;i< n;i++)
{
    if(arr[i]==num)
    {
        countDel++;
        //shift all other elements up
        for(j=i;j< n;j++){
            arr[j]=arr[j+1];
        }
    }
}

答案 4 :(得分:0)

你可以试试这个

#include <stdio.h>
int main()
{
    int i,a;
    int arr[]={1,2,42,88,99};
    a=sizeof(arr)/sizeof(arr[0]);
    for(i=0;i<a;i++) 
        if(arr[i]!=42) printf("%d\n", arr[i]);
    return 0;
}