2015-09-19 142 views
-2
#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语句为什么我在C代码中出现分段错误?

+0

似乎你是C的新手。让我猜你的起源:Pascal/Delphi? – Wolf

回答

0

这里的:(什么是的i值目前)

int t,i,rem,l[i],b[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); 

,这样t在创建VLA(可变长度数组)时被初始化。

相关问题