C语言用函数指针和数组指针求两个集合的交、并集? 5
1个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define NUMBER1 7
#define NUMBER2 5
void createCollect(int [],int);
void display(int [],int);
int main()
{
int collection1[NUMBER1];
int collection2[NUMBER2];
int collection3[NUMBER1+NUMBER2];
int i,j,label=0;
createCollect(collection1,NUMBER1);
for(j = 0;j < NUMBER2;j++)
{
collection2[j]=j*2;
}
printf("集合1:");
display(collection1,NUMBER1);
printf("集合2:");
display(collection2,NUMBER2);
for(i = 0; i < NUMBER1;i++)
{
//从集嫌滚合1中取出元素,去遍历集合2中的所有元素
for(j = 0;j < NUMBER2;j++)
{
//如果相同则跳出遍历
if(collection1[i]==collection2[j])
break;
}
//判断:此时存在两种情况1) 当前集合1的元素与集合2的元素相同
//2)遍历完了集合2的数组后不存在相同的元素
if(j == NUMBER2)
{
collection3[label]=collection1[i];
label++;
}
}
//把集合2的所有郑者扰元素存进collection3中
for(j = 0;j < NUMBER2;j++)
{
collection3[label++]=collection2[j];
}
printf("集合1与集合2的并集为:\n");
display(collection3,label);
return 0;
}
//随机生成一个不含重复元素的数组
void createCollect(int num[],int count)
{
//randValue:临时随机数存喊旦放变量
//condition:循环生成不重复的条件
int i,j,randValue,condition;
srand(time(NULL));
for(i=0;i<count;i++)
{
condition=1;
while(condition){
randValue=1+(int)rand()%10;
for(j = 0;j <= i;j++){
if(i==0){//第一个数不可能存在重复数,可以直接赋值
condition=0;
break;
}
if(randValue==num[j])
break;
if(randValue!=num[j]&&j==i-1)//当生成的随机数与当前数组最后一位不同并且下标相等时
{
condition=0;
break;
}
}
}
num[i]=randValue;
}
}
//打印数组
void display(int num[],int count)
{
int i;
for(i=0;i<count;i++)
{
printf("%d\t",num[i]);
}
printf("\n");
}
#include<stdlib.h>
#include<time.h>
#define NUMBER1 7
#define NUMBER2 5
void createCollect(int [],int);
void display(int [],int);
int main()
{
int collection1[NUMBER1];
int collection2[NUMBER2];
int collection3[NUMBER1+NUMBER2];
int i,j,label=0;
createCollect(collection1,NUMBER1);
for(j = 0;j < NUMBER2;j++)
{
collection2[j]=j*2;
}
printf("集合1:");
display(collection1,NUMBER1);
printf("集合2:");
display(collection2,NUMBER2);
for(i = 0; i < NUMBER1;i++)
{
//从集嫌滚合1中取出元素,去遍历集合2中的所有元素
for(j = 0;j < NUMBER2;j++)
{
//如果相同则跳出遍历
if(collection1[i]==collection2[j])
break;
}
//判断:此时存在两种情况1) 当前集合1的元素与集合2的元素相同
//2)遍历完了集合2的数组后不存在相同的元素
if(j == NUMBER2)
{
collection3[label]=collection1[i];
label++;
}
}
//把集合2的所有郑者扰元素存进collection3中
for(j = 0;j < NUMBER2;j++)
{
collection3[label++]=collection2[j];
}
printf("集合1与集合2的并集为:\n");
display(collection3,label);
return 0;
}
//随机生成一个不含重复元素的数组
void createCollect(int num[],int count)
{
//randValue:临时随机数存喊旦放变量
//condition:循环生成不重复的条件
int i,j,randValue,condition;
srand(time(NULL));
for(i=0;i<count;i++)
{
condition=1;
while(condition){
randValue=1+(int)rand()%10;
for(j = 0;j <= i;j++){
if(i==0){//第一个数不可能存在重复数,可以直接赋值
condition=0;
break;
}
if(randValue==num[j])
break;
if(randValue!=num[j]&&j==i-1)//当生成的随机数与当前数组最后一位不同并且下标相等时
{
condition=0;
break;
}
}
}
num[i]=randValue;
}
}
//打印数组
void display(int num[],int count)
{
int i;
for(i=0;i<count;i++)
{
printf("%d\t",num[i]);
}
printf("\n");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询