-1

したがって、ここで私のコードでは、どれだけ変更しても適切に機能させることができず、問題になるはずです。これには、オプションに対応する int のスキャンが含まれます。次に、オプションを宣言して、それを使用して、navigate を呼び出すことになっていますが、どのオプションを選択しても、申し訳ありません。

#include <stdio.h>
#include <stdlib.h>

#define OPENWINDOW "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"

void question(int option)

{
        printf("What Would You Like To Do?\n");
        printf("\t1.Add A Reminder\n\t2.View Reminders\n\t3.Manage Current Reminders\n\t4.Settings\n");
        scanf("%i", &option);

}

void navigate(int option)
{
    switch(option)
    {
        case 1:
        printf(OPENWINDOW);
        break;
        case 2:
        printf(OPENWINDOW);
        break;
        case 3:
        printf(OPENWINDOW);
        break;
        case 4:
        printf(OPENWINDOW);
        break;
        default :
        printf("sorry");
        question(option);


    }
}

int main()
{
     int option;    

     question(option);
     navigate(option);    

     return 0;
}
4

7 に答える 7

0

変数optionを値で渡していますquestion(option)

option参照渡しで変数を渡す必要があります

void question(int *option)
{
        printf("What Would You Like To Do?\n");
        printf("\t1.Add A Reminder\n\t2.View Reminders\n\t3.Manage Current Reminders\n\t4.Settings\n");
        scanf("%i", option);

}

void navigate(int *option)
{
    switch(*option)
    {
        case 1:
        printf(OPENWINDOW);
        break;
        case 2:
        printf(OPENWINDOW);
        break;
        case 3:
        printf(OPENWINDOW);
        break;
        case 4:
        printf(OPENWINDOW);
        break;
        default :
        printf("sorry");
        question(option);

}

int main()
{
     int option;    

     question(&option);
     navigate(&option);    

     return 0;
}

これに関する詳細については、このリンクを参照してください参照による呼び出しと値による呼び出しの違い

于 2013-06-06T06:34:28.803 に答える
0

値による呼び出しとして「オプション」を渡しています。したがって、 question() に渡すものは何でも。失われるでしょう。

いずれかの方法で、question() から "option" を返し、これを navigate() に渡します。

#include <stdio.h>
#include <stdlib.h>

#define OPENWINDOW "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"

int question()
{       int option;
        printf("What Would You Like To Do?\n");
        printf("\t1.Add A Reminder\n\t2.View Reminders\n\t3.Manage Current Reminders\n\t4.Settings\n");
        scanf("%i", &option);
        return option;

}

void navigate(int option)
{
    switch(option)
    {
        case 1:
        printf(OPENWINDOW);
        break;
        case 2:
        printf(OPENWINDOW);
        break;
        case 3:
        printf(OPENWINDOW);
        break;
        case 4:
        printf(OPENWINDOW);
        break;
        default :
        printf("sorry");
        question(option);


    }
}

int main()
{
int option;

option = question();
navigate(option);

return 0;
}
~
于 2013-06-06T06:34:53.883 に答える
0

へのポインタを渡すか、関数から返す必要がoptionありquestionますquestion

あなたの場合、 in を読んでも in の値はoption変化main()しませんquestion()。コードを次のように更新します

int question()

{
        int option;

        printf("What Would You Like To Do?\n");
        printf("\t1.Add A Reminder\n\t2.View Reminders\n\t3.Manage Current Reminders\n\t4.Settings\n");
        scanf("%i", &option);
        return option;
}

int main()
{
    int option;
    option = question(option);
    navigate(option);
    return 0;
}
于 2013-06-06T06:36:41.997 に答える
0

参照渡しを使用したくない場合は、コードで使用している値渡しを使用できます。適切に実装する必要があるだけです。voidを「int」に変更し、質問関数の終了前にreturnステートメントを発行することにより、「void質問」を変更して値を返すことができます。以下のコードを確認してください。

#include <stdio.h>
#include <stdlib.h>

#define OPENWINDOW "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"

int question()

{
        printf("What Would You Like To Do?\n");
        printf("\t1.Add A Reminder\n\t2.View Reminders\n\t3.Manage Current Reminders\n\t4.Settings\n");
        scanf("%i", &option);
        return i;
}

void navigate(int option)
{
    switch(option)
    {
        case 1:
        printf(OPENWINDOW);
        break;
        case 2:
        printf(OPENWINDOW);
        break;
        case 3:
        printf(OPENWINDOW);
        break;
        case 4:
        printf(OPENWINDOW);
        break;
        default :
        printf("sorry");
        question(option);
    }
}

int main()
{
int option;
option = question(option);
navigate(option);

return 0;
}
于 2013-06-06T06:45:03.427 に答える
0

変数オプションはその値を関数 question() に渡すだけなので、変数オプションの値は実際には変更されないため、関数 question() でオプションの値を返す必要があります。

于 2013-06-06T09:54:06.533 に答える