2015-09-19 139 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(可變長度數組)時被初始化。

相關問題