原题如下:
#include <stdio.h>
void swap(int *a, int *b) //用于冒泡排序中两个数的交换
{
int t = 0;
t = *a;
*a = *b;
*b = t;
}
int main()
{
int n;
int num[101] = { 0 }; //最大不超过100位数
scanf("%d", &n);
int t = n; //最终的t为个数
for (int i = 0; i < n; ++i)
{
scanf("%d", &num[i]);
}
for (int i = 0; i < n-1; i++) //这里遍历数组并且检测到相同的数字另后面的为0
{
for (int j = i+1; j < n; ++j)
{
if (num[i] == num[j])
{
num[j] = 0;
}
}
}
for (int i = 0; i < n-1; ++i) //将输入的数字进行冒泡排序
{
for (int j = 0; j < n - i - 1; ++j)
{
if(num[j]>num[j+1])
{
swap(&num[j], &num[j + 1]);
}
}
}
for (int i = 0; i < n-1; ++i) //处理0,0则t-1
{
if (num[i] == 0)
{
t--;
}
}
printf("%d\n", t);
for (int i = 0; i < n - 1; ++i) //输出,为0不输出
{
if (num[i] == 0)
{
t--;
continue;
}
printf("%d ", num[i]);
}
printf("%d", num[n - 1]);
return 0;
}
这题关键在于输入的数字从1开始,所以减少了判断,还是比较简单