题目:
这道题核心的三个问题就是:
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;
}
?