gpt4 book ai didi

c - 我的功能出了什么问题?

转载 作者:行者123 更新时间:2023-11-30 21:38:14 26 4
gpt4 key购买 nike

我正在使用code::blocks,当我编译这个程序时,它没有显示任何错误,但是当我运行它时,它说 volving.exe 已停止工作(即,我将其另存为 volution.c),我不知道不知道发生了什么,任何人都可以帮我解决这个问题,我的代码如下

#include<stdio.h>
#include<stdlib.h>
#define array_len(x) (sizeof(x)/sizeof(double))
void convolution(double *signal, int nt, double *wind, int r, double *rm)
{

int i,j;
double copy[nt];
for(i=0; i<nt; i++)
{
copy[i] = signal[i];
}

int l = (nt+r-1);
for(i=r;i<=l;i++)
{
wind[i]=0;
}
for(i=nt;i<=l;i++)
{
copy[i]=0;
}
for(i=0;i<=l;i++)
{
rm[i]=0;
for(j=0;j<=i;j++)
{
rm[i] = (rm[i]+(copy[j]*wind[i-j]) );
}

}
}

void main()
{
double a[1020];
int i;
for(i=0; i<1020; i++)
{
a[i] = 1;
}
int la = array_len(a);
printf("\nc1\t%d",la);

double b[1020];
for(i=0; i<1020; i++)
{
b[i] = 1;
}
int lb = array_len(b);
printf("\nc2\t%d\n",lb);

double r[la+lb-1];
int lr = array_len(r);
printf("\nc3\t%d\n",lr);

printf("entering convolution\n");
convolution(a,la,b,lb,r);
printf("in main\n\n");

for(i=0;i<(50);i++)
{
printf("rm[%d]=%lf\n",i,r[i]);
}

}

最佳答案

其他一些问题:

您的printf正在寻找long int,但您传递的是int。在 main() 函数中将 %ld 更改为 %d

更新 main() 不是 void,而是具有 int 返回类型(如 int main() code>),并在结束括号之前返回一些内容(通常会放置 return 0; 以防执行顺利进行)。

编辑:我只想提一下,通过处理编译器打印的警告(我确信它们在那里),您可以轻松修复这些问题。

编辑:这是我的编译器在启用 -Wall-Wextra 标志的情况下打印的内容(我在 Linux 下使用 GCC):

test.c: In function ‘main’:

test.c:43:3: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘int’ [-Wformat]

test.c:51:3: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘int’ [-Wformat]

test.c:55:3: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘int’ [-Wformat]

test.c:34:6: warning: return type of ‘main’ is not ‘int’ [-Wmain]

关于c - 我的功能出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788038/

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