我编写了以下代码(它是一个caclulator,它获取3个运算符中的一个(+ / - / $)和2个自然数(a,b)和calcultes(a op b)($ b被定义为a +(a + 1)+ ... +(b-1)+ b表示< = b而a> b表示未定义):
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("Please choose an operation (+/-/$): ");
char op;
scanf("%c", &op);
while (op != '+' && op != '-' && op != '$') {
printf("\nInvalid operation. Please choose again: ");
scanf("%c", &op);
}
int a;
int b;
char term;
printf("\nPlease enter the first operand: ");
int scanCheck = scanf("%d%c", &a, &term);
while (scanCheck != 2 || term != '\n' || a < 0) {
printf("\nInvalid number\n. Please enter the first operand: ");
scanCheck = scanf("%d%c", &a, &term);
}
printf("\nPlease enter the second operand: ");
scanCheck = scanf("%d%c", &b, &term);
while (scanCheck != 2 || term != '\n' || b < 0) {
printf("\nInvalid number\n. Please enter the first operand: ");
scanCheck = scanf("%d%c", &b, &term);
}
if (op == '$' && a > b)
printf("\nThe result is: Not Valid");
int result;
switch (op) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '$':
result = 0;
while (a <= b) {
result += a;
a++;
}
break;
}
printf("\nThe result is: %d", result);
return 0;
}
我的问题是,当我运行程序时,它什么都不打印。但是,在给程序输入一个输入(例如+,3,4)之后,它会打印出之前应该打印的行(具有正确的结果)。为什么会这样?我怎样才能解决这个问题?仅供参考我使用eclipse Juno和minGW编译器。
答案 0 :(得分:0)
输出是行缓冲的。在任何打印输出结束时添加换行符。或者使用fflush(stdout);
由于某些原因,许多C程序员喜欢在每次打印输出开始时打印换行符。我的建议是不要这样做。只需将换行符放在每个打印输出的末尾,您就可以省去很多麻烦:
printf("The result is: %d\n", result);
答案 1 :(得分:0)
您可能想要添加&#39; \ n&#39;在打印语句的末尾而不是在开头:缓冲区可能无法刷新,因此会延迟。