Я получил это C ++ код ниже.
#include <iostream>
using namespace std;
int main()
{
char ch;
int ct1, ct2;
ct1 = ct2 = 0;
while ((ch = cin.get()) != '$')
{
cout << ch;
ct1++;
if (ch = '$')
ct2++;
cout << ch;
}
cout << "ct1 = " << ct1 << ", ct2 = " << ct2 << "\n";
system("pause");
return 0;
}
Теперь вы можете сказать, что произойдет, если ввод.
hi$<ENTER>
и на выходе должно быть это право.
hi ct1 = 2, ct2 = 0
Но реальный результат таков.
h$i$ct1 = 2, ct2 = 2.
почему вывод, что я не понимаю и как мне это исправить.
и я использую предварительный просмотр Visual Studio Express 2013 для рабочего стола Windows.
В вашем если заявление, вы фактически присвоили $ ch
: if(ch = '$')
, Это должно быть:
if(ch == '$')
Кроме того, ваш реальный результат будет выглядеть так: hhiict1 = 2, ct2 = 0
, так как вы написали cout << ch;
два раза в вашем заявлении.
Во-первых, в этом коде есть проблема, если (ch = ‘$’),
во-вторых, я думаю, что реальный результат равен «hhct1 = 1, ct2 = 0», потому что, когда символ равен ‘$’, он может попасть в цикл.
Вы используете оператор присваивания = вместо == в условии if.
Я бы посоветовал.
if('$' == ch)
while ((ch = cin.get()) != '$')
{
cout << ch;
ct1++;
if (ch = '$') // << here is the heck
^^^ // did you mean == ?
ct2++;
cout << ch;
}