如何丢弃数组中重复的数并输出

编写一个程序,读入10个数,输出其中不同的数(即如果一个数出现多次,只打印一次)。
提示:读入的数如果是一个新的值,则将其存入一个数组。否则,将其丢弃。输入完毕后,
数组中保存的就是不同的数。
下面是一个运行样例:
Enter ten numbers:1232163452
The distinct numbers are:123645

img


后面该怎么写呢,判断了两个数是否相等了以后(也不知道写的对不对)后面就不会了

回答:代码是这个样子的;输入与你想要的有些不符合,毕竟,如果连着输入10个数字,也不是不行,只是需要简单修改一下程序

img

# include <iostream>
using namespace std;

int main()
{
    int arr1[10] = { };
    int arr2[10] = { };
    for (int i = 0; i < 10; i++)
    {
        cin >> arr1[i];
    }
    
    int index = 1;
    arr2[0] = arr1[0];
    int flag;
    for (int i = 1; i < 10; i++)
    {
        flag = 1;
        for (int j = i - 1; j >= 0; j--)
        {
            if (arr1[j] == arr1[i])
            {
                flag = 0;
                break;
            }
        }
        if(flag == 1)
        {
            arr2[index++] = arr1[i];
        }
    }

    for (int i = 0; i < 10; i++)
    {
        if (arr2[i] != 0)
        {
            printf("%d ", arr2[i]);
        }
    }
}
/*
1 2 3 2 1 6 3 4 5 2
*/

修改的版本

img

# include <iostream>
using namespace std;

int main()
{
    char input[10];
    int arr1[10] = { };
    int arr2[10] = { };
    cin >> input;
    for (int i = 0; i < 10; i++)
    {
        arr1[i] = input[i] - '0';
    }

    int index = 1;
    arr2[0] = arr1[0];
    int flag;
    for (int i = 1; i < 10; i++)
    {
        flag = 1;
        for (int j = i - 1; j >= 0; j--)
        {
            if (arr1[j] == arr1[i])
            {
                flag = 0;
                break;
            }
        }
        if (flag == 1)
        {
            arr2[index++] = arr1[i];
        }
    }

    for (int i = 0; i < 10; i++)
    {
        if (arr2[i] != 0)
        {
            printf("%d", arr2[i]);
        }
    }
}
/*
1232163452
*/