生成50个1到100之间的随机数,并且对其中的偶数进行降序排列

如题所述

#include <ctime>#include <iostream>#include <cstdlib>using namespace std;
int main(){ int a[50],b,c[50]; //50个1到100的随机数 srand(time(0)); for(int i = 0;i < 50;i++) { b = (rand ()%100) + 1; a[i] = b; cout << a[i] << " "; } cout << endl;
//打印出里面的偶数,不是必要,清楚点而已 cout << "其中的偶数有:" << endl; int c1 = 0; for(int z = 0;z < 50;z++) { if(a[z]%2 == 0) { c[c1] = a[z]; c1++;//把偶数拿出来 cout << a[z] << " "; } } cout << endl;
int c2 = c1; //把拿出来的偶数c[c1]排序 //复制来的冒泡啊冒泡 for(int i2 = 0,t; i2 < c2; i2++) { for(int j = c2 - 1; j > i2; j--) { if(c[j] > c[j - 1]) { t = c[j]; c[j] = c[j - 1]; c[j - 1] = t; } } }

cout << "排序完毕。结果:" << endl; //输出排序完毕的偶数 for (int fin = 0;fin < c1;fin++) { cout << c[fin] << " "; } cout << endl;
system("pause"); }
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-12
不知道你想用什么语言写,不过大体思路都一样1、写一个循环,生成50个随机数存到数组num里2、写一个循环,取其中偶数存到数组num2里 num[i]%2 等于0就是偶数3、降序排列 可以套两个for循环,不过有一个函数能直接排序 我忘了。
第2个回答  2013-04-12
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 50
/**产生随机数**/
void nu_group(int a[],int n)
{
long tm1;
int i,tm2;
tm1=time(NULL);
tm2=(unsigned int) tm1/2;
srand(tm2);
for(i=0;i<n;i++)
a[i]=rand()%100 + 1;
}
/**冒泡排序**/
void bubblesort(int R[],int n)
{
int i,j;
int temp;
for(i=0;i<n-2;i++)
for(j=n-2;j>=i;j--)
if(R[j+1]<R[j])
{
temp=R[j+1];
R[j+1]=R[j];
R[j]=temp;
}
}
/**格式输出**/
void r_printf(int R[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d\t",R[i]);
if((i+1)%5==0)printf("\n");
}
printf("\n");
}
/**选择偶数,出入S[]中**/
int output(int R[],int S[],int n)
{
int i;
int j=0;
for(i=n-1;i>=0;i--)
{
if(R[i]%2==0)
S[j++]=R[i];
}
return (j-1);
}int main()
{
int a[N];
int r[N];
int r_number;
nu_group(a,N);
r_printf(a,N);
bubblesort(a,N);
r_number=output(a,r,N);
r_printf(r,r_number);
return 0;
}
相似回答