新手新的程序员在这里。目前正在尝试一个C问题,我必须输入两个集合,从用户和打印他们之间的相似元素,即并集。我确实得到了答案,但由于某种原因,我不能存储在第三个数组中的相似元素。我确实在网上得到了代码,但想知道为什么这不工作。看看代码更好地理解:-
#include<stdio.h>
#include<conio.h>
void main ()
{
system("cls");
int i, j, temp=0, a[10], b[10], r[10]; //a and b=input sets r=resultant set
printf("Enter first set :-\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
printf("Enter second set :-\n");
for(i=0;i<10;i++)
{
scanf("%d",&b[i]);
}
for(i=0;i<10;i++)
{
for(j=0;j<10;j++);
{
if(a[i]==b[j])
{
r[temp]=a[i]; /* If i make a printf here and print the elements directly here and here then it works but storing it in a third array gives me a garbage value when printed */
temp++;
break;
}
}
}
printf("Resultant array is ");
for(i=0;i<=temp;i++)
{
printf("%d ",r[i]); //Always only 2 garbage values would be printed
}
}
任何帮助都是感激不尽的。
3条答案
按热度按时间kgsdhlau1#
1-您需要将此行中的
==
运算符更改为=
运算符==
是比较运算符,=
是赋值运算符。2-您的代码计算两个集合[1]的交集(即两个集合之间的公共元素),而不是并集。
3-你可以使用
r
来计算两个集合的并集。记住,两个集合的并集是两个集合中所有元素的集合,公共元素只重复一次。4-您的最终结果应该存储在一个数组中,其大小为输入集大小之和(在您的情况下为20),或者存储在一个动态分配的数组中。
[1]我假设输入数组是集合,即没有冗余元素,即使你从来没有检查过是否是这种情况。
eqqqjvef2#
代码中的问题位于以下行;
在这里,您在末尾添加了
semicolon
,这使得循环运行时不会转到下一行并在代码中生成j = 10
。删除
semicolon
并执行以下操作同样在最后的
for loop
中修改如下;希望这对你有帮助。
6yoyoihd3#
在j的for循环中添加了分号,请删除分号,它将正常工作。