运行 黑客排名问题中的时间错误:C 中的一维数组
Run Time Error in Hacker Rank problem : 1D Arrays in C
我正在尝试在 Hacker Rank 上解决 C 中的一维数组问题:
here
我们必须打印数组中整数的总和。
我的代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int n;
int sum = 0;
int *a = malloc(n * sizeof(int));
scanf("%d", &n);
getchar();
for (int i = 0; i < n; i++)
{
scanf("%d ", &a[i]);
sum += a[i];
}
printf("%d", sum);
free(a);
return 0;
}
但是编译器给出了一些 select 测试用例的错误。 编译器信息(错误):
Compiler Message:
Abort Called
Error (stderr):
1.corrupted size vs. prev_size
2.Reading symbols from Solution...done.
3.[New LWP 129788]
4.[Thread debugging using libthread_db enabled]
5.Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
6.Core was generated by `./Solution'.
7.Program terminated with signal SIGABRT, Aborted.
8.#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
一些观察:
- 此程序在 VS Code 中 运行 正确。
- 我给出的自定义输入(即自定义测试用例)编译成功(使用 Hacker Rank 的“测试自定义输入”功能)。
- 但是只有一些 select 测试用例给出了这个错误。
请指出我的代码中可能导致此问题的错误。
在动态初始化内存之前指定数组的大小space。如何在输入数组大小之前初始化 space?
并且动态分配内存时必须指定cast类型。
此处:a = (cast_type *) malloc (byte_size);
#include <stdio.h>
#include <stdlib.h>
int main(){
int n;
int sum=0;
printf("Enter size of the array:\n");
scanf("%d", &n);
int *a = (int*)malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
scanf(" %d", &a[i]);
}
for (int i = 0; i < n; i++) {
sum += a[i];
}
printf("Sum of array elements is: %d\n", sum);
free(a);
return 0;
}
我正在尝试在 Hacker Rank 上解决 C 中的一维数组问题: here
我们必须打印数组中整数的总和。
我的代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int n;
int sum = 0;
int *a = malloc(n * sizeof(int));
scanf("%d", &n);
getchar();
for (int i = 0; i < n; i++)
{
scanf("%d ", &a[i]);
sum += a[i];
}
printf("%d", sum);
free(a);
return 0;
}
但是编译器给出了一些 select 测试用例的错误。 编译器信息(错误):
Compiler Message:
Abort Called
Error (stderr):
1.corrupted size vs. prev_size
2.Reading symbols from Solution...done.
3.[New LWP 129788]
4.[Thread debugging using libthread_db enabled]
5.Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
6.Core was generated by `./Solution'.
7.Program terminated with signal SIGABRT, Aborted.
8.#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
一些观察:
- 此程序在 VS Code 中 运行 正确。
- 我给出的自定义输入(即自定义测试用例)编译成功(使用 Hacker Rank 的“测试自定义输入”功能)。
- 但是只有一些 select 测试用例给出了这个错误。
请指出我的代码中可能导致此问题的错误。
在动态初始化内存之前指定数组的大小space。如何在输入数组大小之前初始化 space?
并且动态分配内存时必须指定cast类型。
此处:a = (cast_type *) malloc (byte_size);
#include <stdio.h>
#include <stdlib.h>
int main(){
int n;
int sum=0;
printf("Enter size of the array:\n");
scanf("%d", &n);
int *a = (int*)malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
scanf(" %d", &a[i]);
}
for (int i = 0; i < n; i++) {
sum += a[i];
}
printf("Sum of array elements is: %d\n", sum);
free(a);
return 0;
}