gpt4 book ai didi

c - 动态分配的二维数组运行时错误

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

我试图解决这个问题,但在完成第一个测试用例循环后出现了此消息,当我将其上传到 codeforces 时,它得到了运行时错误判决!

给定大小为 N*N 的整数的二维数组。打印完全平方数的总和。

例如,25、16、36 和 9 是完全平方数。但 35、17、23 和 11 则不然。

输入
您的输入由 T (1 ≤ T ≤ 10^2) 个测试用例组成。每个测试用例仅包含1个整数N(1 ≤ N ≤ 10^2)。接下来的 N 行每行包含 N 个空格分隔的整数 (1 ≤ Nij ≤ 10^2)。

输出
对于每个测试用例,在一行中打印一个整数,即所需的总和。

输入示例

2
2
9 97
8 56
3
1 18 6
16 42 100
25 16 17

输出:

9
158

代码:

void main()
{
int n, x, **z, m, i, j, q, p, sum;
float y;

scanf("%d", &x);
for (i = 0; i < x; i++)
{
sum = 0;
scanf("%d", &n);
z = (int**)malloc(sizeof(int*)*n);
for (j = 0; j < n; j++)
z[j] = (int*)malloc(sizeof(int)*n);
for (p = 0; p < n; p++)
for (q = 0; q < n; q++)
{
scanf("%d", &z[p][q]);
m = sqrt(z[p][q]);
y = sqrt(z[p][q]) - m;
if ((y) == 0)
sum += z[p][q];
}
printf("%d\n", sum);
for (j = 0; j < n; j++)
free(z[i]);
free(z);
}
return;}

image of message i get when i debug on VSc++

更新:free(z[i]) 已编辑为 free(z[j])

更新:感谢 jpw,它在 VS 中运行良好,但这次导致 Codeforces 中的编译错误而不是运行时错误。

最佳答案

这似乎是一个简单的错字......

free(z[i]); 最后应该是 free(z[j]);

进行更改后,它可以在 ideone 中正常运行

关于c - 动态分配的二维数组运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38283047/

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