首页 > 解决方案 > 用C语言打印出数组中的唯一元素?

问题描述

问题:打印出数组中的唯一元素。示例:我们有 {1,2,3,2,4,5,5,6],结果将是 {1,2,3,4,5,6}。

我只能设法打印出 {1,3,4,6}。这是我的代码:

#include <stdio.h>

void input(int a[], int n);
void show(int a[], int n);

int main()
{
  int n, i;
  printf("Enter number of elements: "); scanf("%d", &n);
  int a[n];
  input(a,n);
  printf("\nArray before change!\n");
  show(a,n);
  printf("\n----------------------------------------");
  printf("\nArray after change!\n");

  int b[101];
  for(i=0; i<101; i++)
      {
        b[i] = 0;
      }
  for (i=0; i<n; i++)
      {
        b[a[i]]++;
      }

  for(i=0; i < n; i++)
      {
        int j = 0;
        if (b[a[i]] == 1)
            {
              printf("%d ", a[i]);
            }
      }
return 0;
}
//------------------------------------------------------------------------------
void input(int a[], int n)
{
  int i;
  for(i=0; i < n; i++)
      {
        printf("a[%d] = ", i);
        scanf("%d", &a[i]);
      }
}
void show(int a[], int n)
{
  int i;
  for(i=0; i < n; i++)
      {
        printf("%d ", a[i]);
      }
}

在上面的代码中,我使用数组 b[] 作为计数器来计算每个元素的存在。我坚持不能打印多次出现的元素。你有什么想法破解这个吗?我谢谢你。

标签: arraysc

解决方案


#include <stdio.h>
void input(int a[], int n);
void show(int a[], int n);

int main(){
  int i=0,j,k=0,n;
  int a[10];
  int b[10];
  printf("Enter number of elements: "); //number of elements you want to store.
  scanf("%d", &n);
  input(a,n);
  printf("\nArray before change!\n");
  show(a,n);

  //removing duplicate elements from array.
    for(i=0; i<n ; i++){
        for(j=i-1 ; j>=0 ; j--)
            if(a[j]==a[i])
                goto down;
        b[k++] = a[i];  // storing unique elements in array b.
        down: ;
    }
    
  printf("\n----------------------------------------");
  printf("\nArray after change!\n");
  show(b , k);
return 0;
}
//------------------------------------------------------------------------------
void input(int a[], int n){
  for(int i=0; i < n; i++)
        scanf("%d", &a[i]);
}

void show(int a[], int n){
  for(int i=0; i < n; i++)
        printf("%d ", a[i]);
}

推荐阅读