C语言编程问题(用一维数组)

题目描述

在某数组中删除某个数据x(前提x在该数组中一定存在,且有多个),并输出删除后数组的内容

输入

第一行输入n和x,其中n(n > 2)表示数组中有效的元素个数,x表示要删除的数据 第二行输入n个整数,存放到数组中

输出

删除x后数组的内容,同一行输出,数据之间用空格隔开

样例输入

7 23
2 3 23 5 23 89 56
样例输出

2 3 5 89 56

#include <stdio.h>
void main()
{
int i,j,n,k,x,a[100];
scanf("%d%d",&n,&x);
k=n;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
if(a[i]==x)
{
j=i+1;
for(j;j<n;j++)
a[j-1]=a[j];
k--;
}
for(i=0;i<k;i++)
printf("%d ",a[i]);
}


温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-09-17

#include <stdio.h>
#include <stdlib.h>
int main()
{int i,j,n,x,*a;
 scanf("%d%d",&n,&x);
 a=(int*)calloc(n,sizeof(int));    //申请数组空间
 for(i=j=0;i<n;i++)
 {scanf("%d",&a[i]);            //读入数据
  if(a[i]!=x)a[j++]=a[i];       //去除不要的数据 
 }
 for(i=0;i<j;i++)               //输出数据 
   printf("%d ",*(a+i));
 free(a);
 return 0;
}

第2个回答  2019-06-19

#include "stdio.h"

int main(int argc,char *argv[]){

int a[30]={67,88,91,79,65,57,99,45,100,97,

78,76,53,61,69,59,93,94,90,80,

66,71,78,92,98,94,37,100,98,71},i,k;

for(k=i=0;i<30;i++)

if(a[i]>60)

k++;

printf("More than 60 points students is(are) %d people.\n",k);

return 0;

}

代码格式和运行样例图片:

第3个回答  2018-08-20
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
int n,x;
int l;
int t;
int * a=NULL;
scanf("%d%d",&n,&x);
a=(int *)calloc(n,sizeof(int));
for(i=0,l=0;i<n;i++,l++)
{
scanf("%d",&t);
if(t!=x)
*(a+l)=t;
else
l--;
}
for(i=0;i<l;i++)
printf("%d ",*(a+i));
free(a);
return 0;
}