#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int t,i,rem,l[i],b[i];
scanf("%d",&t);
for (i=0;i<t;i++)
{
scanf("%d %d",&l[i],&b[i]);
}
for (i=0;i<t;i++)
{
if (l[i] > b[i])
{
rem = l[i]/b[i];
rem +=1;
printf("%d \n",rem);
}
else if (l[i] > b[i])
{
rem = b[i]/l[i];
rem +=1;
printf("%d \n",rem);
}
else
{
printf("1 \n");
}
}
return 0;
}
我的代码正在编译但由于分段错误而未运行。请帮我弄清楚它是否会成为一些内存问题或scanf语句
答案 0 :(得分:0)
下面:
int t,i,rem,l[i],b[i];
i
未初始化,您正在创建大小为i
的数组(目前i
的值是多少?)。数组具有固定的大小,当i
的值发生变化时,它不会改变。
通过更改
解决问题int t,i,rem,l[i],b[i];
到
int t, i, rem;
并添加
int l[t], b[t]; /* You want arrays of `t` size */
后
scanf("%d",&t);
以便在创建VLA(可变长度数组)时初始化t
。