求教如何用C语言求两个字母集合的交集?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教如何用C语言求两个字母集合的交集?相关的知识,希望对你有一定的参考价值。
首先,如果是数学上的集合概念,那就说明,集合A自身的每个元素都不相同。
那么,程序就可以简化成,
设数组key[52],用于记录字母出现次数。
扫描一次集合A,把出现的字母计到key的对应位置里。
同理扫描一次集合B。
查看key数组,>=2的对应字母输出到集合C,C就是所求交集。
#include "stdlib.h"
#include "time.h"
int main(void)
char a[30],b[20],c[20],i,j,k,t;
srand((unsigned)time(NULL));
for(i=0;i<30;i++)
if(a[i]=rand()%26+'a',i<20)
b[i]=rand()%26+'a';
for(k=i=0;i<30;i++)
for(j=0;j<20;j++)
if(a[i]==b[j])
for(t=0;t<k;t++)
if(c[t]==b[j])
break;
if(t>=k)
c[k++]=b[j];
printf("The intersection of A and B are as follows:\\n");
for(i=0;i<k;printf("%c ",c[i++]));
printf("\\n");
return 0;
追问
你现在去写了么?
C++求两个集合的交集
#include<iostream.h>
void main()
int a[5],b[5],c[5];
int i,j,k;
int *p1,*p2,*p3;
cout<<"请输入数组a:";
for(i=0;i<5;i++)
cin>>a[i];
cout<<"请输入数组b:";
for(j=0;j<5;j++)
cin>>b[j];
p1=&a[i];p2=&b[j];p3=&c[0];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(*p1==*p2++)
*p3++=*p1;
cout<<"a数组为:";
for(i=0;i<5;i++)
cout<<a[i]<<' ';
cout<<endl;
cout<<"b数组为:";
for(j=0;j<5;j++)
cout<<b[j]<<' ';
cout<<endl;
cout<<"c数组为:";
for(k=0;k<5;k++)
cout<<c[k]<<' ';
cout<<endl;
就是要将a,b都赋值给c,用指针。。。
#include<iostream.h>
void main()
int a[5],b[5],c[5]=0;//n是用来统计相同的元素总共多少个
int i,j,k,n=0;
int *p1,*p2,*p3;
cout<<"请输入数组a:";
for(i=0;i<5;i++)
cin>>a[i];
cout<<"请输入数组b:";
for(j=0;j<5;j++)
cin>>b[j];
p1=&a[0];p3=&c[0];
for(i=0;i<5;i++)
p2=&b[0];
for(j=0;j<5;j++)
if(*p1==*p2++)
*p3++=*p1;
n++;
p1++;
cout<<"a数组为:";
for(i=0;i<5;i++)
cout<<a[i]<<' ';
cout<<endl;
cout<<"b数组为:";
for(j=0;j<5;j++)
cout<<b[j]<<' ';
cout<<endl;
cout<<"c数组为:";
for(k=0;k<n;k++)
cout<<c[k]<<' ';
cout<<endl;
参考技术A #include<stdio.h>
void main()
int a[5],b[5],c[5]=0;
int i,j,k,n=0;
int *p1,*p2,*p3;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(j=0;j<5;j++)
scanf("%d",&b[j]);
p1=&a[0];p3=&c[0];
for(i=0;i<5;i++)
p2=&b[0];
for(j=0;j<5;j++)
if(*p1==*p2++)
*p3++=*p1;
n++;
p1++;
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf("\n");
for(j=0;j<5;j++)
printf("%d ",b[j]);
printf("\n");
for(k=0;k<n;k++)
printf("%d ",c[k]);
printf("\n");
参考技术B #include<stdio.h>
void main()
int a[5],b[5],c[5]=0;
int i,j,k,n=0;
int *p1,*p2,*p3;
printf("请输入数组a:");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("请输入数组b:");
for(j=0;j<5;j++)
scanf("%d",&b[j]);
p1=&a[0];p3=&c[0];
for(i=0;i<5;i++)
p2=&b[0];
for(j=0;j<5;j++)
if(*p1==*p2++)
*p3++=*p1;
n++;
p1++;
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf("\n");
for(j=0;j<5;j++)
printf("%d ",b[j]);
printf("\n");
for(k=0;k<n;k++)
printf("%d ",c[k]);
printf("\n");
以上是关于求教如何用C语言求两个字母集合的交集?的主要内容,如果未能解决你的问题,请参考以下文章