C 在我的代码中,它正在读取无限元素,为什么?
/*c程序,用于查找元素相加为0的最大子数组 它不停地读着,我不知道为什么?例如,如果我提供输入 作为4个元素的数量,它必须为某些元素取4个元素 对于像12-34这样的人来说,工作正常吗 即使服用了4种元素,也要服用5种元素*/C 在我的代码中,它正在读取无限元素,为什么?,c,C,/*c程序,用于查找元素相加为0的最大子数组 它不停地读着,我不知道为什么?例如,如果我提供输入 作为4个元素的数量,它必须为某些元素取4个元素 对于像12-34这样的人来说,工作正常吗 即使服用了4种元素,也要服用5种元素*/ #include <stdio.h> #include<stdlib.h> void popout (int a[100], int q, int n,int j) { int z; z=n;
#include <stdio.h>
#include<stdlib.h>
void popout (int a[100], int q, int n,int j)
{
int z; z=n;
for (int o = q; o < n - 1; o++)
{
a[o] = a[o + 1]; //deletes one number
}
int g = j;
if(g!= 1)
{
z--; //function calls recursively till we are
// deleting only one number
for(int i=0;i<n;i++) {
popout(a,a[i],z,g-1); // after deleting one number again
//again runs a loop to delete other
//number from already deleted array
}
g--;
}
}
int main ()
{
int n;int f;
int a[100];
int b[100];
printf ("enter number of elemnts");
scanf ("%d",&n);
printf ("enter elements");
for (int i = 0; i < n; i++)
scanf ("%d", &a[i]);
for (int i = 0; i < n; i++)
b[i] = a[i];
for (int j = 1; j < n; j++)
a[0] = a[0] + a[j];
if (a[0] == 0)
printf ("%d", n);
for (int i = 0; i < n; i++)
a[i] = b[i];
/* pop out number by number */
for(int p = 1;p < n; p++) { //p:number of elements to be deleted at onece
for(int i=0;i<n;i++) {
popout(a,a[i],n,p);
for(int g=1;g<n-1;g++) {
a[0]+=a[g];
}
if(a[0]==0)
{
printf("%d",n-p); exit(0);
}
else {
for(int i=0;i<n;i++)
a[i]=b[i];
}
}
}
return 0;
}
#包括
#包括
无效弹出(int a[100],int q,int n,int j)
{
intz;z=n;
对于(into=q;o 对于(int i=0;i请编辑您的问题,以正确缩进代码。缩进对于可读性很重要。注意:如果您的问题在到达for
循环之前发生,则循环和当时未执行的所有代码与问题无关。当举一个最简单的示例cre时,应删除不相关的代码ated.exit
不执行任何操作,您需要exit(/*exit\u code*/)
@anastaciu即使该操作不起作用,我也编写了exit(0);而不是退出;但没有用…@srujithchaitanya我没料到,这只是一个旁白,这就是为什么它是一个注释而不是答案,记住。在没有检查返回值的情况下,你永远不应该使用scanf
或其他I/O函数。你确定,n
正确读入了吗?