在一列数据中,删除指定的值。输出每次删除后的数列。若数列中无待删除数据,则输出原数列。
输入格式:
在第1行输入一个整数n(0<n<=1000),表示数据个数;
在第2行输入n个整数,以空格分隔;
在第3行输入整数m,表示需要删除的值。
输出格式:
每次删除后,输出删除后的数列,每个数据后有一个空格。
每行输出一次删除后结果。
若数列中无待删除数据,则输出原数列。
输入样例 1:
10
5 8 7 12 17 15 3 7 7 10
7
输出样例 1:
5 8 12 17 15 3 7 7 10
5 8 12 17 15 3 7 10
5 8 12 17 15 3 10
输入样例 2:
10
5 8 7 12 17 15 3 7 7 10
6
输出样例 2:
5 8 7 12 17 15 3 7 7 10
#include<stdio.h>
int main(){
int n,i;
scanf("%d ",&n);
int a[n],flag;
for(i=0;i<n;i++)//输入数组
scanf("%d ",&a[i]);
int m;//要删除的值
scanf("%d",&m);
if(n==1&&a[0]!=m)//当n=1且不需要删除时的情况
printf("%d ",a[0]);
else{
do{
flag=0;//每一次循环开始时对flag初始化为0
for(int j=0;j<n;j++){
if(a[j]==m){
n--;
for(j;j<n;j++)
a[j]=a[j+1];
flag=1;//表示这次循环中有需要删除的值
}
if(flag==1){
for(int j=0;j<n;j++)
printf("%d ",a[j]);
printf("\n");
}
}
}while(flag==1);//flag==0时表示以上循环中没有需要删去的值,循环结束
}
}