1

While ループが高速化され、char の scanf がスキップされる理由がわかりません。それは私の入力を求めることさえせず、明日がないかのようにただループします。

#include <stdio.h>


int main()
{
    int number;
    int multiply, ans;
    char choice;

    printf("-------------------------------------");
    printf("\n      MULTIPLICATION TABLE           ");
    printf("\n-------------------------------------");


    do
    {

         printf("\nEnter an integer number:");
         scanf("%d", &number);


        printf("\nMultiplication of %d is :-\n", number);
        printf("\n");

        for(multiply=1; multiply<11; multiply++){
            ans = number * multiply;
            printf(" %d", ans);
        }

        printf("\n");
        printf("\nWould you like to continue? [Y] for Yes,[N] for no : ");
        scanf("%c", &choice);
        printf("\n");

    } 
    while(choice='Y');

    printf("Thank You");
    return 0;

}

4

3 に答える 3

3

scanf()あなたが思っていることをしません(改行文字、バッファリングなど)。使用することをお勧めしますfgetc()

choice = fgetc(stdin);

同じ理由で、末尾の改行を取り除く必要があります。

scanf("%d", &number");

標準入力バッファに残します。これを修正するには、挿入します

fgetc(stdin);

への特定の呼び出しの後scanf()

また、C は Pascal ではありません。あなたが探している等価比較演算子と条件は

while (choice == 'Y')

単一の等式マークは割り当てを示します。

于 2012-12-23T07:23:37.360 に答える
2

条件チェック==の比較には、次のように演算子を使用する必要があると思います。while

   while(choice=='Y');

現在、変数=に割り当てYている演算子を使用しています。choice

于 2012-12-23T07:23:08.073 に答える
2

その言語でプログラミングしてから長い時間が経ちましたが、一見すると次のようになります。

while(choice='Y');

それ以外の:

while(choice=='Y');

== は比較し、= は等しいと設定します。そのため、while ループは実際には、設定しようとしている条件をチェックしていません。

于 2012-12-23T07:26:37.853 に答える