编写一个程序,读入10个数,输出其中不同的数(即如果一个数出现多次,只打印一次)。
提示:读入的数如果是一个新的值,则将其存入一个数组。否则,将其丢弃。输入完毕后,
数组中保存的就是不同的数。
下面是一个运行样例:
Enter ten numbers:1232163452
The distinct numbers are:123645
后面该怎么写呢,判断了两个数是否相等了以后(也不知道写的对不对)后面就不会了
编写一个程序,读入10个数,输出其中不同的数(即如果一个数出现多次,只打印一次)。
提示:读入的数如果是一个新的值,则将其存入一个数组。否则,将其丢弃。输入完毕后,
数组中保存的就是不同的数。
下面是一个运行样例:
Enter ten numbers:1232163452
The distinct numbers are:123645
回答:代码是这个样子的;输入与你想要的有些不符合,毕竟,如果连着输入10个数字,也不是不行,只是需要简单修改一下程序
# 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
*/
修改的版本
# 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
*/