题目:
这道题核心的三个问题就是:
Q1:如何解决存放数字的问题?
Q2:如何识别被删除的数字?
Q3:如何删除掉特定数字并把数字其他数字输出?
解决这三个问题就能解决这道题。
首先是Q1,因为题目有说序列长度最多为50,是一个特定的序列长度大小,因此首选考虑使用一维数组,且数组大小只需要定在50即可。这样,我们就可以把数字存放的问题解决。
其次是Q2,识别被删除的数字,只需要让每一个数组中的数字与识别的数字相比较,用一个for循环即可。
Q3,删除掉特定数字可能比较难,但是我们可以让该数字用0或者负数代替,因为题目要求的数字范围是1到50,不会让我们输出0,所以如果该数字是0或者负数,我们只需要不输出它即可。
最后通过条件判断是否需要输出,是就输出,不是就不输出就可以了。
#include <stdio.h>
int main()
{
int N = 0;
scanf("%d",&N);
int i = 0;
int arr[50]={0};
for(i=0;i<=N-1;i++)
{
scanf("%d",&arr[i]);
}
int delete = 0;
scanf("%d",&delete);
for(i=0;i<=N;i++)
{
if(arr[i]==delete)
{
arr[i]=0;
}
}
for(i=0;i<=N;i++)
{
if(arr[i]>0)
{
printf("%d ",arr[i]);
}
}
return 0;
}
#include <stdio.h>
int main()
{
int N = 0;
scanf("%d",&N);
int i = 0;
int arr[50]={0};
for(i=0;i<=N-1;i++)
{
scanf("%d",&arr[i]);
}
int delete = 0;
scanf("%d",&delete);
for(i=0;i<=N;i++)
{
if(arr[i]==delete)
{
arr[i]=0;
}
}
for(i=0;i<=N;i++)
{
if(arr[i]>0)
{
printf("%d ",arr[i]);
}
}
return 0;
}
#include <stdio.h>
int main()
{
int N = 0;
scanf("%d",&N);
int i = 0;
int arr[50]={0};
for(i=0;i<=N-1;i++)
{
scanf("%d",&arr[i]);
}
int delete = 0;
scanf("%d",&delete);
for(i=0;i<=N;i++)
{
if(arr[i]==delete)
{
arr[i]=0;
}
}
for(i=0;i<=N;i++)
{
if(arr[i]>0)
{
printf("%d ",arr[i]);
}
}
return 0;
}