2

基本的な算術演算を行い、ユーザーが別の方法でコマンドを入力するまでループできる電卓を C でコーディングしています。ループのコツをつかんでいると思ったのですが、(新しい操作を開始するために) ループを 1 つだけ配置しただけで、うまくいきません。コードの一部がループに干渉している可能性はありますか? 構文が間違っていますか?それ以外の場合、プログラムは正常に動作します。

int main(int argc, char *argv[])
{
    char reponse;

    int oper;
    float nb1, nb2, resultat;

    do
    {
        printf("Entrez les deux valeurs que vous voulez calculer: \n");
        scanf("%f %f", &nb1, &nb2);

        printf("\nValidez votre op\x82rateur pour effectuer votre cacul\n");
        printf("choisissez \"1\" pour une addition, \"2\" pour une soustraction,\n");
        printf("\"3\" pour une multiplication ou \"4\" pour une division\n");
        scanf(" %d", &oper);

        switch(oper )
        {
            case 1:
                resultat = nb1 + nb2;
                printf("\n%.2f + %.2f = %.2f\n", nb1, nb2, resultat);
                break;
            case 2:
                resultat = nb1 - nb2;
                printf("\n%.2f - %.2f = %.2f\n", nb1, nb2, resultat);
                break;
            case 3: resultat = nb1 * nb2;
                printf("\n%.2f * %.2f = %.2f\n", nb1, nb2, resultat);
                break;
            case 4: resultat = nb1 / nb2;
                printf("\n%.2f / %.2f = %.2f\n", nb1, nb2, resultat);
                break;
            default:
                printf("\nErreur\n");
        }

        printf("\nVoulez-vous continuer \x85 faire des op\x82rations? [o/n]\n");
        scanf(" c%", &reponse);
    } while (reponse == 'o' || reponse == 'O');


    printf("\nMerci au revoir ! Appuyez sur une touche quelconque pour terminer");
    getch();
}
4

1 に答える 1

1

使用する

char reponse[4];

....

scanf("%3s", reponse);
} while (reponse[0] == 'o' || reponse[0] == 'O');
于 2012-11-02T03:44:43.687 に答える