2014-11-29 2 views
1

я написал этот код на С в возвышенной текст 2что случилось с возвышенным текстом 2 для этого кода?

#include <stdio.h> 
int main() 
    { 
    int n, m; 
    scanf("%d", &n); 
    m = fib(n); 
    printf("%d", m); 
    return 0; 
} 
int fib(int n) 
    { 
    if(n == 0) 
     return 0; 
    else if(n == 1) 
     return 1; 
    else 
     return fib(n - 1) + fib(n - 2); 
} 

, но я, когда я построить его, консоль приходит следующая ошибка:

/home/shieh/program.c: In function ‘int main()’: 
/home/shieh/program.c:6:14: error: ‘fib’ was not declared in this scope 
    m = fib(n); 
      ^
[Finished in 0.0s with exit code 1] 

однако это с код может быть принят онлайн тестирования платформа. Любой может помочь мне исправить эту проблему? Я сейчас смущен.

ответ

2

У вас должно быть declare ваша функция before функции вы называете это! В противном случае вызов функции в main не может быть сделано, так как в compilation time функция не известна (компилятор идет от верха до низа!) Так что попробуйте это:

#include <stdio.h> 

int fib(int n) { 

    if(n == 0) 
     return 0; 
    else if(n == 1) 
     return 1; 
    else 
     return fib(n - 1) + fib(n - 2); 
} 

int main() { 

    int n, m; 

    scanf("%d", &n); 
    m = fib(n); 
    printf("%d", m); 

    return 0; 
} 

ИЛИ вы делаете function prototype как это раньше main:

#include <stdio.h> 

int fib(int n); 

int main() { 

    int n, m; 

    scanf("%d", &n); 
    m = fib(n); 
    printf("%d", m); 

    return 0; 
} 

int fib(int n) { 

    if(n == 0) 
     return 0; 
    else if(n == 1) 
     return 1; 
    else 
     return fib(n - 1) + fib(n - 2); 
} 

(я предпочитаю Variante с прототипом, так что ваш главный всегда в верхней части файла, и вы увидите с прототипом, какая функция в этот файл включает в себя!)

+0

после того как я попробуйте свой код в разделе limetext2, я получил сообщение о ошибке сегментации 4099.Что случилось с ним? – chinashieh

+0

@chinashieh okay ... он должен работать нормально, как вы можете видеть здесь: http://ideone.com/3QXNgD! Можете ли вы показать точное сообщение об ошибке и то, что вы ввели, пожалуйста! (Также в каком примере кода вы скопировали? 1,2) – Rizier123

+0

Я попробовал первый код, я просто вставляю его в файл sublimetext2.and у меня есть сообщение об ошибке сегментации 4099.Есть ли что-то не так с моим sublimetext2? – chinashieh

Смежные вопросы