(C语言)删除一维数组中相同的数

题解:

#include <stdio.h>
#define N 80
int fun(int a[], int n)
{
	int i,j=1;
	for(i=1;i<n;i++)	//相同时i++
		if(a[j-1]!=a[i]) /*若该数与前一个数不相同,则要保留*/
			a[j++]=a[i];
	return j; /*返回不同数的个数*/
}
void main()
{  int  a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;void NONO ();
 
   printf("The original data :\n");
   for(i=0; i<n; i++)printf("%3d",a[i]);
   n=fun(a,n);
   printf("\n\nThe data after deleted :\n");
   for(i=0;i<n;i++)printf("%3d",a[i]); printf("\n\n");
   NONO();
}
void NONO ()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
  FILE *rf, *wf; int a[N], n, i, j ;
  rf = fopen("in.dat","r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 5 ; i++) {
    fscanf(rf, "%d", &n) ;
    for(j = 0 ; j < n ; j++) fscanf(rf, "%d", &a[j]) ;
    n = fun(a, n) ;
    for(j = 0 ; j < n ; j++) fprintf(wf, "%4d", a[j]) ;
    fprintf(wf, "\n") ;
  }
  fclose(rf) ; fclose(wf) ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

课堂随笔

感谢支持~~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值