rqnoj 1 明明的随机数

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

输入格式

输入有2行,第1行为1个正整数,表示所生成的随机数的个数:

N

第2行有N个用空格隔开的正整数,为所产生的随机数。

输出格式

输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。



解法分析:这道题要求我们做两个工作   排序和去重   当我们排好序后  相同的数都会在一起  有助于我们去重   以下是代码

#include

int main()
{
    int n,i,j,t,w;
int a[100];
scanf("%d",&n);
w=n;
for(i=0;i{
scanf("%d",&a[i]);
}
for(i=0;i{
for(j=0;j{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}//典型的冒泡排序
for(i=1;i{
if(a[i]==a[i-1])
{
a[i-1]=-1;
w--;
}
}// 因为生成的值为正数我们把重复的值变为-1
printf("%d\n",w);//输出剩下的数字个数
for(i=0;i{
if(a[i]!=-1)//当这个数不为-1时输出
{
printf("%d ",a[i]);
}
}
printf("\n");
return 0;
}

有问题请留言

你可能感兴趣的:(C语言)