2017-10-16 8 views
0

おはよう、関数の最後のy/nループ

ここは私のコードです。私は少し電卓を作っていますが、y/nループで関数を繰り返すように最後に戦っています。私は他の人を見てきましたが、正しい答えを得られないようです。おかげさまで

#include <stdio.h> 

int main() 
{ 
    int n, num1, num2, result; 
    char answer; 
    { 
    printf("\nWhat operation do you want to perform?\n"); 
    printf("Press 1 for addition.\n"); 
    printf("Press 2 for subtraction.\n"); 
    printf("Press 3 for multiplication.\n"); 
    printf("Press 4 for division.\n"); 
    scanf("%d", &n); 
    printf("Please enter a number.\n"); 
    scanf("%d", &num1); 
    printf("Please enter the second number.\n"); 
    scanf("%d", &num2); 
    switch(n) 
    { 
     case 1: result = num1 + num2; 
       printf("The addition of the two numbers is %d\n", result); 
       break; 
     case 2: result = num1 - num2; 
       printf("The subtraction of the two numbers is %d\n", result); 
       break; 
     case 3: result = num1 * num2; 
       printf("The multiplication of the two numbers is %d\n", result); 
       break; 
     case 4: result = num1/num2; 
       printf("The division of the two numbers is %d\n", result); 
       break; 
     default: printf("Wrong input!!!"); 
    } 
    printf("\nDo you want to continue, y/n?\n"); 
    scanf("%c", &answer); 
    while(answer == 'y'); 

    } 
    return 0; 
} 
+0

あなたは間違ったwhileループを使用しています。あなたはそれを正しく行うことができる間のいくつかのサンプルの例を参照してください。 – Talal

+0

事後テストされたループですべてを包みます。 –

+1

あなたは['do/while'](https://www.tutorialspoint.com/cprogramming/c_do_while_loop.htm)ループが必要だと思います。 –

答えて

3

あなたはこのコード

char answer; 
    { 
    printf("\nWhat operation do you want to perform?\n"); 
    //... 
    //... more code 
    //... 
    printf("\nDo you want to continue, y/n?\n"); 
    scanf("%c", &answer); 
    while(answer == 'y'); 

    } 

にそれを変更しようとありますので、基本的な形がある

char answer; 
    do { 
    printf("\nWhat operation do you want to perform?\n"); 
    //... 
    //... more code 
    //... 
    printf("\nDo you want to continue, y/n?\n"); 
    scanf("%c", &answer); 
    } while(answer == 'y'); 

ところで
do { 
    // code to repeat 
} while (Boolean-expression); 

- あなたは、常にチェックする必要がありますがによって返された値10

例:

if (scanf("%c", &answer) != 1) 
{ 
    // Add error handling 
} 

はまた、あなたは、多くの場合、入力ストリームに(改行を含む)すべてのホワイトスペースを削除するために%cの前にスペースを望んでいることに気づきます。いいえ

if (scanf(" %c", &answer) != 1) 
{ 
    // Add error handling 
} 
関連する問題