明明的随机数
Posted 码子哥今日说码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了明明的随机数相关的知识,希望对你有一定的参考价值。
菜鸟小白C语言写明明的随机数【随缘学习】
题目所述基本内容
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入格式
*输入有两行,第11行为11个正整数,表示所生成的随机数的个数NN
第22行有NN个用空格隔开的正整数,为所产生的随机数。
输出格式
输出也是两行,第11行为11个正整数MM,表示不相同的随机数的个数。
第22行为MM个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
输入输出样例
解题关键
此题关键在于删除多余的重复数字(只保留一个),以及数的大小比较。
1.删除重复的数字:利用双重循环,将每个值依次与其后面的值相比较,如果有相同的则删除该元素即可。删除时,可以使用将后面元素依次向前移动一位,同时总长度减一的方式。
2.数的大小比较:
a.桶排序(最快最简单的排序)
b.冒泡排序(本人用的就是这种方法)
c.选择排序(最常用的排序)
代码
#include<stdio.h>
int main()
{ int n,a[1000],j,m,k,i,t;
m=0;
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for(i=1; i<=n-1; i++)
{ for(j=1; j<=n-i; j++)
{ if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0; i<n-1; i++)
{ for(j=i+1; j<n; j++)
if(a[i]==a[j])
{ for(k=j; k<n-1; k++)
a[k]=a[k+1];
n--;
j--;
}
}
}
for(i=0; i<n; i++)
{ if(a[i]==a[i+1])
m++;
}
printf("%d",n-m);
printf("\\n");
for(i=0; i<n-m; i++)
printf("%d ",a[i]);
}
随缘学习
结束语
好兄弟好兄弟,留下你的点赞和关注噢
以上是关于明明的随机数的主要内容,如果未能解决你的问题,请参考以下文章