2017-06-14 89 views
-4

我不知道我的代码是什么错误,它重复一次。虽然循环重复一次

do { 
     scanf("%c", &operacao); 
     //Tratamento de erro (Validando a informacão vinda do usuário 
     if ((operacao != '*') && (operacao != '+') && (operacao != '-')) { 
      printf("---------------------------------------\n"); 
      printf("*****  MENSAGEM DE ERRO  *****\n"); 
      printf("---------------------------------------\n"); 
      printf("Você digitou um valor inválido!\n"); 
      printf("Por favor, digite + para soma, - para subtração * para multiplicar ou/para dividir!\n"); 
     } 
    } while ((operacao != '*') && (operacao != '+') && (operacao != '-')); 
+4

这听起来像你可能需要学习如何使用调试器来遍历你的代码。使用一个好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏离的位置。如果你打算做任何编程,这是一个重要的工具。进一步阅读:[如何调试小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) – NathanOliver

+0

1.阅读后打印操作。 2.什么类型是operacao?打印该值将帮助您了解while循环。 –

+0

由于您标记为C++,因此您应该考虑'cin >> c'而不是'scanf'。 –

回答

3

使用下面的语句

scanf(" %c", &operacao); 
     ^^^ 

否则空白字符(如例如对应于按键输入新行字符'\n')也被读取。

+0

Thx小费 - 我已经解决了这个问题。无论如何,Thx对你的关注。 –

+0

@AlexSousa根本没有。不用谢。 –