C语言问题 把一个数组中的重复元素去掉

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言问题 把一个数组中的重复元素去掉相关的知识,希望对你有一定的参考价值。

#include"stdio.h"
int main()

int a[10],i,j,m=0;
printf("输入数组:\n");
for(i=0;i<=9;i++)

scanf("%d",&a[i]);

for(i=0;i<=9;i++)

for(j=i+1;j<=9;)

if(a[j]==a[i])

for(;j<=8;j++)

a[j]=a[j+1];

m++;
j=i+1;

else
j++;



for(i=0;i<=9-m;i++)

printf("%d",a[i]);

return 0;


求改!

#define _CRT_SECURE_NO_DEPRECATE

#include <iostream>

#include <string>

#include <algorithm>

using namespace std;

去掉字符串中重复的字符并排序

int main()

string input;

while (cin>>input)

int count = 0; // 统计有多少个空格

for (int i = 0; i < input.size(); i++)

for (int j = i+1; j < input.size(); j++)

if (input[i] == ' ')

break;

if (input[i] == input[j])

input[j] = ' ';

count++;

int newsize = input.size() - count;

string str(newsize,'0');  //创建一个长为newsize,用‘0’填充的字符串

int j = 0;

for (int i = 0; i < input.size(); i++)

if (input[i] != ' ')

str[j] = input[i];

j++;

   

sort(str.begin(), str.end());

cout << str<<endl;

扩展资料:

while语句若一直满足条件,则会不断的重复下去。但有时,需要停止循环,则可以用下面的三种方式:

一、在while语句中设定条件语句,条件不满足,则循环自动停止。

如:只输出3的倍数的循环;可以设置范围为:0到20。

二、在循环结构中加入流程控制语句,可以使用户退出循环。

1、break流程控制:强制中断该运行区内的语句,跳出该运行区,继续运行区域外的语句。

2、continue流程控制:也是中断循环内的运行操作,并且从头开始运行。

参考技术A

1、首先,点击桌面上的VC++6.0,打开软件。

2、打开软件之后,点击右上方的【文件】【新建】。进入后,再点击【文件】,选择c++ source file.最后点击【确定】。

3、输入代码(定义数组): int i; int x[7]; for(i=0;i<7;i++)   printf("x[%d]:",i);scanf("%d",&x[i]); 。

4、输入代码(对元素进行倒序排列): for(i=0;i<3;i++)   int temp=x[i];  x[i]=x[6-i];  x[6-i]=temp;  。

5、电击界面上方的感叹号,开始运行。输入数组的数据。

参考技术B

先排序,在进行遍历比较。

#include <stdio.h>

// 升序数组src
void sort(int *src, int len)

    int tem;
    for (int i = 0; i < len; i++)
    
        for (int j = 0; j < len - i - 1; j++)
            if (src[j] > src[j+1])
            
                tem = src[j];
                src[j] = src[j+1];
                src[j+1] = tem;
            
    


int main()

    int num[10] = 0, 2, 5, 1, 1, 5, 4, 9, 2, 1, d;
    int i = 0, cnt;

    sort(num, 10);  // 排序
    d = num[0];
    for (i = 1; i < 10; i++) // 遍历比较
    
        if (num[i] != d)
        
            printf("%d ", d);
            d = num[i];
        
    
    if (num[9] == d)
        printf("%d\\n", d);
    return 0;

参考技术C

基本思路

    先将数组排序

    拷贝数组去重

#include <stdlib.h>

int a[] = 56,12,88,88,23,209,11,11,11,33,33,54,0,-3,7,3;
int b[16];
int less(void *a, void *b)

 return *((int *)(a))-*((int *)(b));

int unique(int * input, const int size_input, int * ans)

 int size_ans = 0;
 int ii = 0;
 if (size_input <= 0||input==0||ans==0) return 0; 
 qsort(a,size_input,sizeof(int),less);
 ans[size_ans] = input[0];
 for (; ii<size_input;++ii)
 
  if (ans[size_ans] != input[ii])
  
   ++size_ans;
   ans[size_ans] = input[ii];
  
 
 return size_ans + 1;

int main()

 int size=unique(a,16,b);

参考技术D int main()

    int a[10],i,j,m=0;
    printf("输入数组:\\n");
    for(i=0;i<=9;i++)
    
        scanf("%d",&a[i]);
    
    for(i=0;i<9-m;i++)//i<=9---->i<9-m
    
        for(j=i+1;j<=9-m;)//j<=9---->j<=9-m
        
            if(a[j]==a[i])
            
                for(;j<=8-m;j++)//j<=8----j<=8-m
                
                    a[j]=a[j+1];
                
                m++;
                j=i+1;
            
            else
                j++;
            
        
    
    for(i=0;i<=9-m;i++)
    
        printf("%d ",a[i]);
    
    return 0;

其实就是改了下循环条件而已(既然下面的循环都用了m了,为什么上面不用呢)

本回答被提问者采纳

如何去掉一个数组的重复元素:数组去重

可以使用双重循环,逐一对比元素,如有重复,则删除的方法去重。
其思路为
1、依次遍历循环中的每一个元素。
2、对于任意一个元素,依次与之前的元素进行对比,如果有重复则删除。
3、删除操作可以采用将后续元素逐个前移,达到覆盖当前元素的效果。
在此基础上可以进行一点优化,即,不需要每次删除元素均前移所有元素,而是把需要保留的元素放到"应该"放的位置即可,这样可以提高效率。
以整型数组为例,参考代码如下:

1234567891011121314
int remove_repeat(int *a, int l)//对起始地址为a,长度为l的数组进行去重,新的长度以返回值形式返回。 int i,j, r=0; //i,j为循环下标,r为去重后元素总数,初始值为0 for(i = 0; i < l; i ++) for(j = 0; j < r; j ++)//检查是否重复 if(a[j] == a[i]) break; if(j == r) //没有重复元素 a[r++] = a[i]; //将当前元素放置与去重后数组的尾部,并增加去重后的总数。 return r; //返回新的长度。
参考技术A function removeDop(arr)//数组去重
return [...new Set(arr)];

以上是关于C语言问题 把一个数组中的重复元素去掉的主要内容,如果未能解决你的问题,请参考以下文章

将C语言中一个整数数组中的重复元素都去掉,如输入1 1 1 2 3,输出 2 3.

c语言如何判断一个数组中重复元素的个数,并输出这个个数的值?

C语言,查找数组里重复出现的数字;

C语言删除数组重复数字

在c语言中输入数组两个数组,查找重复元素并输出怎么写啊

c语言编程:输出数组中重复出现的数