描述:
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。
数据范围:序列长度和序列中的值都满足 1<= n <=50
输入描述:
第一行输入一个整数(0≤N≤50)。
第二行输入N个整数,输入用空格分隔的N个整数。
第三行输入想要进行删除的一个整数。
输出描述:
输出为一行,删除指定数字之后的序列。
示例:
输入:
6 1 2 3 4 5 9 4
输出:
1 2 3 5 9
思路:
我的想法是定义两个数组,一个来接收用户输入的N个整数,另一个用来打印最后的结果。首先,需要遍历一边第一个数组,找出指定需要删除的数,但是这时用第二个数组来接收不需要删除的数,也就是说将不需要删除的数放在第二个数组中然后来打印第二个数组即可
代码如下:
#include <stdio.h>
int main()
{
int arr1[50];
int arr2[50];
int N,number;
scanf("%d",&N);
for(int i=0;i<N;i++)
{
scanf("%d",&arr1[i]);
}
scanf("%d",&number);//输入想要删除的数
int j,k;
for(j=0,k=0;j<N;j++)
{
if(arr1[j]!=number)//不等于number,则将该数放在数组2中
{
arr2[k] = arr1[j];
k++;
}
}
for(int a=0;a<k;a++)直接来打印数组2就可以解决
{
printf("%d ",arr2[a]);
}
return 0;
}