gpt4 book ai didi

c - 我在打印两个输入数组的交集的 C 程序中遇到问题

转载 作者:行者123 更新时间:2023-11-30 19:01:00 25 4
gpt4 key购买 nike

在此代码中,有两个输入数组(a 和 b)。它应该打印出两个数组(公共(public)数)之间的交集,但它只打印第一个公共(public)数。例如 a[1,2,3] 和 b[2,3,4] 它在交集数组( I )中只打印 2 ,而它应该是 2 和 3 。(代码中的问题由注释确定)。

#include <stdio.h>
#include <stdlib.h>

int main()
{
int n,z ;
printf("Enter size of array\n");
scanf("%d",&n);
int a[n] ;
if(n<=20){
for(int i=0 ;i<n; i++){
printf("Enter integer \n");
scanf("%d", &a[i]);
}
}
for(int i=0 ;i<n; i++){
printf("%d " ,a[i]);
}
printf("\nEnter size of the 2nd array\n");
scanf("%d",&z);
int b[z] ;
if(z<=20){
for(int i=0 ;i<z; i++){
printf("Enter integer \n");
scanf("%d", &b[i]);
}
}
for(int i=0 ;i<z; i++){
printf("%d " ,b[i]);
}
for(int i=0 ; i<n ; i++){
for(int j=i+1 ; j<n ; j++){
if(a[i]==a[j]){
for(int l = j; l < n; l++)
{
a[l] = a[l + 1];
}
n--;
j--;
}
}
}
printf("\nArray1: ");
for(int i=0 ;i<n-1; i++){
printf("%d, " ,a[i]);
}
printf("%d",b[n-1]);
for(int t=0 ; t<z ; t++){
for(int u=t+1 ; u<z ; u++){
if(b[t]==b[u]){
for(int l = u; l < z; l++)
{
b[l] = b[l + 1];
}
z--;
u--;
}
}
}
printf("\nArray2: ");
for(int e=0 ;e<z-1; e++){
printf("%d, " ,b[e]);
}
printf("%d" ,b[z-1]);
int u[n+z] ; //union

for(int i=0;i<n;i++){
u[i]=a[i];


}
for(int i=n ; i<(n+z) ;i++){
u[i]=b[i-n];
}
for(int i=0 ; i< n+z ; i++){ //remove repeated values from union
for(int j=i+1 ; j< n+z ; j++){
if(u[i]==u[j]){
for(int l = j; l < z+n; l++)
{
u[l] = u[l + 1];
}
n+z--;
j--;
}
}
}
printf("\nunion is ");
for(int i=0 ; i<(n+z-1) ;i++){
printf("%d, ",u[i]);
}
printf("%d",u[n+z-1]);
//intersection............

int k = 0;
int I[k] ; //intersection
for(int i=0 ; i<n ; i++ ){
for(int j=0 ; j<z ; j++ ){
if(a[i]==b[j]){
I[k]=a[i] ;
k++;

}
}
}
printf("\nintersection is ");
for(int i=0 ; i < k ;i++){
printf("%d ",I[i]);
}
return 0;
}

最佳答案

这是我为寻找交叉点而编写的代码

#include<stdio.h>
int a[10],b[10],c[10];
//A and B will accept input from user
//C will store intersected elements
int main()
{
int i,j,k=0;
printf("\nEnter 5 elements in A[] : ");
for(i=0;i<5;i++) scanf("%d",&a[i]);
printf("\nEnter 5 elements in B[] : ");
for(i=0;i<5;i++) scanf("%d",&b[i]);
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(a[i]==b[j])
c[k]=a[i],k++;
}
}
for(i=0;i<k;i++) printf("%d ",c[i]);
}




Input Given
Enter 5 elements in A[] : 1 2 3 4 5

Enter 5 elements in B[] : 2 5 6 7 8

Output Produces
2 5

关于c - 我在打印两个输入数组的交集的 C 程序中遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58658559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com