问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...整数集合a,b的元素个数和各个元素的值(不相同) ,计算并输出其并集...

发布网友 发布时间:2024-10-16 02:28

我来回答

2个回答

热心网友 时间:2024-10-17 04:04

#include <stdio.h>
int sum(int a[],int m,int b[],int n,int c[])
{
int i,j,k=0,flag,*p,*q,*r;
r = c;
for(p=a,i=0;i<m;++i,p++)
{
flag = 1;
for(q=b,j=0;j<n;j++,q++)
{
if(*p==*q)
{
flag = 0;
break;
}
}
if(flag==1)
{
*r++=*p;
k++;
}
}
for(q=b,j=0;j<n;j++,q++)
{
*r++=*q;
k++;
}
return k;
}
int main()
{
       int a[10]={0},b[10]={0},c[50],len,lena,lenb;
       int i;
       printf("请输入数组a的个数::");
   scanf("%d",&lena);
       printf("请输入a中%d个整数:",lena);
       for(i=0;i<lena;i++)
            scanf("%d",&a[i]);
       printf("请输入数组b的个数::");
   scanf("%d",&lenb);
       printf("请输入b中%d个整数:",lenb);
       for(i=0;i<lenb;i++)
            scanf("%d",&b[i]);

   len = sum(a,lena,b,lenb,c);
      printf("并集为:\n");
  for(i=0;i<len;++i)
  printf("%d   ",c[i]);
  printf("\n");

  return 0;
 
}

可以这样,不过没排序,要排序得这样:

#include <stdio.h>

void reorder(int a[], int len)
{
    int i, j, index, max;
    for (i = len - 1; i >= 0; i--)
    {
        index   = 0;
        max     = 0;
        for (j = 0; j <= i; j++)
        {
            if (a[j] > max) 
            {
                max = a[j];
                index = j;
            }
        }
        
        a[index] = a[i];
        a[i] = max;
    }
}

int sum(int a[],int m,int b[],int n,int c[])
{
int i,j,k=0,flag,*p,*q,*r;
r = c;
for(p=a,i=0;i<m;++i,p++)
{
flag = 1;
for(q=b,j=0;j<n;j++,q++)
{
if(*p==*q)
{
flag = 0;
break;
}
}
if(flag==1)
{
*r++=*p;
k++;
}
}
for(q=b,j=0;j<n;j++,q++)
{
*r++=*q;
k++;
}
return k;
}
int main()
{
       int a[10]={0},b[10]={0},c[50],len,lena,lenb;
       int i;
       printf("请输入数组a的个数::");
   scanf("%d",&lena);
       printf("请输入a中%d个整数:",lena);
       for(i=0;i<lena;i++)
            scanf("%d",&a[i]);
       printf("请输入数组b的个数::");
   scanf("%d",&lenb);
       printf("请输入b中%d个整数:",lenb);
       for(i=0;i<lenb;i++)
            scanf("%d",&b[i]);

   len = sum(a,lena,b,lenb,c);
   reorder(c,len);
   printf("并集为:\n");
   for(i=0;i<len;++i)
  printf("%d   ",c[i]);
   printf("\n");

  return 0;
 
}


2013 6 2 12:50


这个……是C++啊,那就这样吧:

#include <iostream>
using namespace std;

void reorder(int a[], int len)
{
    int i, j, index, max;
    for (i = len - 1; i >= 0; i--)
    {
        index   = 0;
        max     = 0;
        for (j = 0; j <= i; j++)
        {
            if (a[j] > max) 
            {
                max = a[j];
                index = j;
            }
        }
        
        a[index] = a[i];
        a[i] = max;
    }
}

int sum(int a[],int m,int b[],int n,int c[])
{
int i,j,k=0,*p,*q,*r;
r = c;
for(p=a,i=0;i<m;++i,p++)
{
for(q=b,j=0;j<n;j++,q++)
if(*p==*q)
break;
if(j==n)
{
*r++=*p;
k++;
}
}
for(q=b,j=0;j<n;j++,q++)
{
*r++=*q;
k++;
}
return k;
}
int main()
{
       int a[10]={0},b[10]={0},c[50],len,lena,lenb;
       int i;
       printf("请输入数组a的个数::");
   cin>>lena;
       cout<<"请输入a中"<<lena<<"个整数:";
       for(i=0;i<lena;i++)
            cin>>a[i];
       cout<<"请输入数组b的个数::";
   cin>>lenb;
       cout<<"请输入中"<<lenb<<"个整数:";
       for(i=0;i<lenb;i++)
            cin>>b[i];

   len = sum(a,lena,b,lenb,c);
   reorder(c,len);
   cout<<"并集为:"<<endl;
   for(i=0;i<len;++i)
  cout<<c[i]<<"   ";
   cout<<endl;

  return 0;
 
}

不知道你说的指针法要求是不是这么严,如果允许用指针引索的话可以用楼下的……


2013 6 2 13:08

突然想到,跑来修改一下……

热心网友 时间:2024-10-17 04:05

#include <iostream>
using namespace std;int main()
{
 int *a=NULL;//集合a
 int *b=NULL;//集合b
 int na=0;//集合a大大小
 int nb=0;//集合b大大小
 
 printf("请输入集合a的大小:");
 scanf("%d",&na);
 a=new int[na];//创建集合a
 printf("请输入集合a的%d个元素:",na);
 int i;
 for(i=0;i<na;i++)
  scanf("%d",a+i);
 
 printf("请输入集合b的大小:");
 scanf("%d",&nb);
 b=new int[nb];//创建集合b
 printf("请输入集合b的%d个元素:",nb);
 for(i=0;i<nb;i++)
  scanf("%d",b+i);
 
 printf("并集为:");
 for(i=0;i<na;i++)//a中的所有元素都在并集中,直接输出
  printf("%-4d",*(a+i));
 int j;
 for(i=0;i<nb;i++)//b中和a中任意一个元素都不相等则属于并集
 {
  for(j=0;j<na;j++)
  {
   if(*(b+i)==*(a+j))
    break;
  }
  if(j==na)//j等于na说明和a中任意一个元素都不相等
   printf("%-4d",*(b+i));
 }
 printf("\n");
  
 delete a;//销毁动态创建的内存
 delete b;//销毁动态创建的内存 

  return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
婴幼儿认知功能的主义转变出现在几岁 认知发展理论心理发展过程 如何判断相亲对象是否渣男呢? 游船怎么造句 mei字造句 赏阅怎么造句 张金战个人记事 空调扇怎么关 matlab怎么运行程序文件-matlab运行程序文件的方法教程 ios8.1.1怎么没有搜索栏了 c++题目,定义整数集合类Intset。该类定义如下: 询问一句古话:什么山无棱,河水竭,天地合,乃敢与君绝。这句话的出处及... 我欲与君相知长命无绝衰山无陵江水为竭冬雷震震夏雨雪 山无陵,江水为竭,冬雷震震,夏雨雪,天地合,乃敢与君绝 山无陵江水为竭,冬雷震震夏雨雪.天地合,乃敢与君绝. 是... 冬雷震震夏雨雪雨怎么读 两个分数相等,怎么比较它们的大小? ...从里面量底面直径是40厘米,高是50厘米,它的容积是多少升 SJ成员的家族外号都是什么? 廉政狙击黎晓山带的是什么手表 刘若英做的DVD广告是什么品牌的 ...想把它转租出去,转租的人也找到了,可中介说要我交500元合同变更费... 刘若英在2010夏恋嘉年华中带的手表是什么牌子? 受新冠疫情影响企业营业收入锐减导致企业负债率上升有什么应对策略 企业在银行有贷款,由于疫情原因企业资金链断裂,有没有合适的抵押物银行... wow5.4熊猫人之谜25H奥格G团 由于疫情影响企业生产经营导致企业资金短缺面临严重困境的是否可以申请... 航海霸业附件在哪里 船长和贼船首领,哪个名字好听 输入import h 文件 和 class className的区别 ...m(不大于20)和m个元素的整数集合b,计算并输出集 烤箱空烤完多久可以用 电烤箱空烤多久 ...东站到丹城怎么走 打的多少钱啊 估计要多少时间能到 急求 谢谢大家... 仙境传说RO手游神官审判技能升级方式及地点盘点 仙境传说RO手游神圣怎么加点介绍_仙境传说RO手游神圣怎么加点是什么_百 ... 公安局取保后侯审在检查院走什么程序 ...活泼金属与酸反应”的实验,将5.4g的铝片投入500 mL 0.5 mol·L... 高分悬赏 9.(16分)镁将成为21世纪重要的轻型环保材料,我国含有非常丰富... 安卓4.1.1去掉多余桌面 我的Android4.1,root之后桌面的搜索栏不见了,小部件也没有搜索栏,桌面... 国寿如e康悦百万医疗险盛典版 保障怎么样? 洗手液什么牌子的好 洗手液品牌 一道关于三角形全等的数学题,求解!!急 我是绥化市北林区的女34岁没工作想自己交养老保险每月交多少钱怎么办... 绥化市北林区今天交农村合作医疗钱怎么交不上了? 绥化市医保和北林区医保区别 懂留头发男孩子进来看看. 高手进来看看这个发型!~~圈红圈这边的怎么留起来,剪的时候怎么跟理发师...