编写函数,把给定的整数组中值相同的元素删除的只剩一个,并把剩余元素全部顺移到前面,求各位大神用c语

编写函数,把给定的整数组中值相同的元素删除的只剩一个,并把剩余元素全部顺移到前面,求各位大神用c语言编写,我是初学者,好困扰

#include "stdio.h"
void main()
{   int i,j;
int c=0,d,z[10]={1,3,3,4,5,5,7,7,8,9};
//输出原始数据
    for(i=0;i<10;i++)
printf("%d ",z[i]);
putchar('\n');
//删除相同数据
for(i=0;i<9-c;i++)
{
for(j=i+1;j<10;j++)
{
if(z[j]==z[i])
        {

c++;//记录总共有几个不同的数据
for(d=j;d<10;d++)
z[d]=z[d+1];
    j--;
}

    }

}
//输出最终数据
for(i=0;i<10-c;i++)
printf("%d ",z[i]);
putchar('\n');

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-01
我自己写了一个例子,亲测有效! 欢迎试用。

---- 使用或者转发请注明来自:夜游龙(百度号:12345ye67890)

//delete same data in array
int i,j;
int k =1;
int flag =0;
int a[10] ={6,1,1,1,2,3,1,4,2,5};
int b[10]={0};

for (i=0;i<10;i++)
{
   // decice if or not same data before a[i]
   for(j=0;j<i;j++)
   
     if(a[i] == a[j])
     {
        flag = 1;
        break;
      }
    // if not,stored it in b[]
    if(flag == 0) b[k++] = a[i];
    else flag = 0;
  }
 // print results
 for(i=0;i<k;i++)
 printf("b[%d] = %d\n",i,b[i]); 
 
 
 最后输出的结果为:
 
 b[0] = 6
 b[1] = 1
 b[2] = 2
 b[3] = 3
 b[4] = 4
 b[5] = 5

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网