隨機產生兩組整數,每組整數中元素互不相同,這兩組數按值遞增有序。設計程序,將這兩組數合併成按值遞減有序的一組數,要求合併的新的一組數中,相同的元素只有一個。

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;

}


發佈了75 篇原創文章 · 獲贊 128 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章