随机产生两组整数,每组整数中元素互不相同,这两组数按值递增有序。设计程序,将这两组数合并成按值递减有序的一组数,要求合并的新的一组数中,相同的元素只有一个。

来源:互联网 发布:北京知豆电动汽车4s店 编辑:程序博客网 时间:2024/06/01 07:43

2、随机产生两组整数,每组整数中元素互不相同,这两组数按值递增有序。设计程序,将这两组数合并成按值递减有序的一组数,要求合并的新的一组数中,相同的元素只有一个。

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#define N 40

void S(int a[],int n){

//随机产生 

int i,j,b;

int flag=1;

srand(time(0));

for (i=0;i<n;i++){

b=rand()%90+10;

for (j=0;j<i;j++){

if (b==a[j])

flag=0;

}

if (flag){

a[i]=b;

}

}

void Sort(int a[],int n){

//排序 

int i,j,t;

for (i=0;i<n-1;i++){

    for (j=0;j<n-i-1;j++){

    if (a[j]>a[j+1]){

    t=a[j];

    a[j]=a[j+1];

    a[j+1]=t;

    }

    }

}

}

void Merge(int a[],int b[],int c[],int m,int n){

//合并 

int i,j,k;

i=0;j=0;k=0;

while(i<m&&j<n){

if(a[i]<=b[j]){

c[k++]=a[i++];

}

else

c[k++]=b[j++];

}

while(i<m){

c[k++]=a[i++];

}

while(j<n){

c[k++]=b[j++];

}

}

void Rev(int a[],int n){

//就地逆置 

int low,high;

low=0;

high=n-1;

int temp;

while(low<high){

temp=a[low];

a[low]=a[high];

a[high]=temp;

low++;

high--;

}

}

void Output(int a[],int n){

int i;

for(i=0;i<n;i++){

printf("%3d",a[i]);

}

printf("\n");

}

int main(){

int a[N],b[N],c[N];

int m,n; 

printf("输入整数个数:\n");

scanf("%d",&m);

S(a,m);

Sort(a,m);

Output(a,m);

printf("输入另一个数组整数个数:\n");

scanf("%d",&n);

S(b,n);

Sort(b,n);

Output(b,n);

Merge(a,b,c,m,n);

Rev(c,m+n);

Output(c,m+n);

return 0;

}


阅读全文
0 0
原创粉丝点击