提供1个元素后,为什么C程序停止执行?

时间:2019-01-31 21:37:01

标签: c

我正在编写程序来检查集合是否是集合的适当子集。我正在为这两个集合(数组)动态分配内存,但是在我提供了一个元素之后,程序停止执行。

x_low = 0.9*min(list_x)
x_high = 1.1*max(list_x)
x_extended = np.linspace(x_low, x_high, 100)

p1 = np.polyfit(list_x, list_y, 1)             # this line refers to line of regression

ax1.xaxis.labelpad = 50
ax1.yaxis.labelpad = 50

plt.plot(x_extended, np.polyval(p1,x_extended),'r-')   # this line refers to line of regression
plt.xlim(x_low, h_high)

**我也已在函数中正确传递了参数:printf(“%d \ n”,setID(p,p1,a,b)); **

2 个答案:

答案 0 :(得分:1)

这里有一个错误

scanf("%d",p[i]);

应该是

scanf("%d", &p[i]);

,当您使用p1执行此操作时,这是正确的做法。您说程序在提供了一个元素后就停止了,这与错误是一致的。

可能还有其他人发布的其他错误。

答案 1 :(得分:0)

setID 中:

for (int i=0; i<size2;i++)
{
        if (arr2[i] == arr[i])
        {
            counter++;
        }
        ...

您假设 arr 的大小是> = arr2 的大小,但这不是强制性的,因为您会读取它们的大小,而不是在分配时使用相同的大小数组并读取它们的值

如果size < size2(在 main 中的a < b),您走出 arr (在中的 p main ),则行为未定义