2012-03-25 8 views
0

私はswitchのCの文を勉強しています。これは私の小さなプログラムであり、実行され、計算は実行されますが、操作の結果は表示されません。黒いウィンドウが表示され、数字と演算子を入力してから数秒間、結果を表示して消えます。どんな助けもありがとうございます。初心者として小さなプログラムを切り替えると結果が表示されません

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
int num1, num2, ans=0; 
char ch, name; 

printf("Enter a value: "); 
scanf("%d", &num1); 

printf("Enter a second value: "); 
scanf("%d", &num2); 

printf("Input * To multiply\ 
       + To add\ 
       - To subtract: "); 
scanf(" %c", &ch); 

switch(ch) 
{ 
case'*': 
    ans=num1 * num2; 
    printf("%d times %i equals: %i",num1,num2,ans); 
    break; 

case'+': 
    ans=num1+num2; 
    printf("%i plus %i equals: %d",num1,num2,ans); 
    break; 

case'-': 
    ans=num1-num2; 
    printf("%d minus %d equals: %d",num1,num2,ans); 
    break; 

default: 
    printf("Range numbers"); 
} 

getchar(); 
return ch; 
} 
+0

すでに2つの良い答えがありますが、サイドコメントとして%dまたは%iを使用して1つのスタイルに固執する必要がありますが、両方を使用しないでください。 – Soren

+1

[Switch small prgramは入力オプションを許可しない]の複製が可能です(http://stackoverflow.com/questions/9858615/switch-small-prgram-does-not-let-me-input-option) –

答えて

1

、あなたはすなわちprintf("%i plus %i equals %d\n", num1, num2, ans);、エスケープ改行\nですべてのあなたのprintfフォーマット文字列を終了する必要がある(または、あなただけのgetch前にスイッチの終了後、すべてのあなたのscanffflush(stdout);を呼び出す必要があります)。

+0

いいえ、それです –

+0

すべての入力の前に 'fflush'を呼び出します。つまり、' scanf'または 'getch'です。デバッガ(Linuxの場合は 'gdb'など)を使用し、コンパイラに警告とデバッグ情報を問い合わせてください(Linuxの場合は' gcc -Wall -Wextra -g') –

2

出力バッファリングの可能性があります。書式設定文字列の最後に改行(\ n)を追加します。

+0

いいえ、動作しませんでしたが、ありがとう –

関連する問題