-1
#include <stdio.h>


int multiple(int num1,int num2){
    return (num1*num2);
}

int add(int num1, int num2){
    return (num1+num2);
}
/*&x points to its value space *x points to its memory space*/
int main(){

    int num1,num2,ans;
    char func;

    printf("First number => ");
    scanf("%d",&num1);
    printf("Second number => ");
    scanf("%d",&num2);

    printf("Please Enter + for addition, or * for multiplication => ");
    scanf("%c",&func);

    if (func == '*'){
        ans = multiple(num1,num2);
    }else if(func == '+') {
        ans = add(num1,num2);
    }else {
        printf("Sorry, invalid operation");
    }

    printf("Ans : %d",ans);
    return 0;
}

プログラムを実行すると、firest と 2 番目の数字のプロンプトが表示されますが、char 入力scanf("%c",&func);が実行されていないため、プロンプトは表示されません。

私の出力------------------------------------------------ -----------------:

$ ./p8t3 First number => 23 Second number => 32 Please Enter + for addition, or * for multiplication => Sorry, invalid operationAns : 2665616

4

2 に答える 2

3

+ または * 演算子のスキャン中に、次のように変更します。

printf("Please Enter + for addition, or * for multiplication => ");
scanf(" %c",&func);         //use a space before '%c'
于 2013-07-13T16:06:45.053 に答える
1
printf("Please Enter + for addition, or * for multiplication => ");
scanf(" %c",&func);

その理由は、数値を入力して ENTER を押すと、scanfはその数値を処理しますが、新しい行はまだ入力バッファーにあるためです。

于 2013-07-13T16:05:43.323 に答える