2016-01-31 18 views
-1

Im довольно новыми для C, но мне нужна помощь в этомПочему мой код не работает?

#define PISS 73 
#include <stdio.h> 
int a, b, c; 
int killmeplease(int a, int b, int c); 
int main(void) 
{ 
    puts("WHATS YOUR AGE"); 
    //Gets int 'a' 
    scanf_s("%d", &a); 
    int killmeplease; 
     printf("Youre gonna die in %d years", b); 
     getchar(); 
     return 0; 


} 
int killmeplease(int a, int b, int c) 
{ 
    PISS - a = b; 
    return 0; 
} 

Не судите. Не уверен, что это просто что-то, что я пропустил, но что бы это ни было, это не позволяет запустить код. Возможно, я сделал это неправильно, но если вы можете помочь, это здорово.

+1

После предварительной обработки, это 'PISS - а = Ь; 'будет' 73 - a = b; ', что недопустимо. Что он должен был делать? –

+1

Вам уже рассказали о [минимальных полных примерах] (http://stackoverflow.com/help/mcve). Как вы думаете, что должна делать линия '73 - 1 = b?'? – Beta

+0

@ 13x предполагалось взять возраст пользователей и вычесть его из 73, чтобы узнать, сколько лет у них осталось жить –

ответ

2

Хотя 73 звучит немного рано умереть, это то, как вы можете реализовать его :)

#define PISS 73 
#include <stdio.h> 
int killmeplease(int a); 

int main(void) 
{ 
    int a,b; 
    puts("WHATS YOUR AGE"); 
    scanf_s("%d", &a); 
    b=killmeplease(a); 
    printf("Youre gonna die in %d years", b); 
    getchar(); 
    return 0; 
} 
int killmeplease(int a) 
{ 
    return PISS - a; 
} 

Функция возвращает значение, основанное на входе a. Вы также можете передать ему другой указатель и сохранить возвращаемое значение.

Вы должны также проверить возвращаемое значение scanf_s() на предмет отказа.

+0

Спасибо, это сработало. Но я помню, как это делалось по-другому, но это работает. –

+1

Существует несколько способов сделать это. Но это, наверное, самый простой способ. Вы также можете сделать: 'killmeplease (a, &b);' и в функции: '* b = PISS -a;'. И изменить прототип функции и вызвать ее соответствующим образом. –

1

Или, может быть, мы могли бы написать функции и переменные с разумными именами, а затем ошибки могут быть более очевидными:

void yearsOfLifeLeft (int lifeExpectancy, int currentAge, int * yearsLeftPtr) { 
    *yearsLeftPtr = lifeExpectancy - currentAge; 
} 
... 

yearsOfLifeLeft(PISS, a, &b);  /* 'a' and 'b' are names which are not good */ 
            /* and PISS is just childish */ 

Просто идея ...

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